快到飞起!兼容所有主流操作系统,又一Java开发神器面世!

发布于 2021-05-08 11:58 ,所属分类:JAVA工程师开发学习资料

喜欢就我们吧!

自从飞桨框架2.0发布以来,一直有用户期待什么时候能够帮助Java用户更便捷高效完成他们的部署任务。在过去,我们往往需要自己部署一台Model Server来做这个事情。但是,无论是维护方面,还是速度方面,很多时候都没有办法达到预期。现在,我们联手DeepJavaLibrary(以下简称为DJL)——一个基于Java的深度学习开发包,提供了一套飞桨Java推理API。


DJL x Paddle 是一个基于飞桨 C++ 推理库的轻量级Java推理库,它支持基本的飞桨Tensor,并可以用来对所有飞桨模型进行推理。DJL x Paddle可以直接在Windows、Linux和Mac操作系统,以及所有的Java环境中使用。


目前,我们为用户提供了两个基本的使用样例:

  • 基于飞桨的口罩识别应用
  • 基于PaddleOCR的文字识别应用
从性能角度上来说,DJL x Paddle 集成了飞桨的高速推理引擎,同时加入了所有Java的特性,包括高效的内存管理以及多线程推理。这样可以满足生产环境中大规模推理应用服务的需求。同时,它可以和现有的大数据平台集成,例如 Apache Spark,实现离线大数据推理服务。飞桨的预训练模型应用工具PaddleHub提供了很多产业实践应用案例,您可以直接通过我们的Paddle模型转换教程,轻松地将应用部署在您的Java服务上。为了更好地展示它的强大之处,让我们来看一则小故事吧。


Paddle模型转换教程链接:

http://docs.djl.ai/docs/paddlepaddle/how_to_create_paddlepaddle_model_zh.html



一个小故事



Aaron是一名Boss,负责一家位于田纳西州的冷冻炸鸡加工厂。最近,他一直因为工人不戴口罩进厂工作而苦恼。为了保护员工的健康,他在厂子门前安装了摄像头。这样,他就可以在每次上班的时候,监督工人佩戴口罩的情况,只有戴上口罩才能入内。

可是,因为人流量众多,他们需要时时刻刻去盯着屏幕来判断是否要让工人进来。这样不仅十分不方便,还让工人因为人工筛查耽误时间变得焦躁。于是乎,Aaron就想:有没有什么办法能够将这个过程自动化,比如摄像头自动识别客人是否戴了口罩,然后自动将他们放进工厂?本科期间,他学过一点Java,工厂的网页后端也是自己用Java写的。他在网上搜索,有没有什么Java的方法能够解决这个问题。此时,DJL就出现在了眼前。对于Aaron来说,他并不了解AI,只是想找到一个现成的方法解决这个问题。

Aaron在DJL提供的案例里找到了基于飞桨的口罩识别应用模型!虽然飞桨和DJL都不曾听说过,但是代码看起来很简单,只需要稍作改动就可以完成任务。对于Aaron来说,这个模型可以进行面部识别,还能判断是否戴了口罩,完全满足了他的需求!


心动不如行动,他开始尝试直接使用这里所介绍的步骤完成他的口罩识别应用。首先,他需要引入DJL相关的依赖项至Gradle(Java中常用的构建工具)里:

dependencies{
implementation"ai.djl:api:0.10.0"
implementation"ai.djl.paddlepaddle:paddlepaddle-model-zoo:0.10.0"
runtimeOnly"ai.djl.paddlepaddle:paddlepaddle-native-auto:2.0.0"
}


之后,直接导入图片:

Stringurl="/user/home/my_client.jpg";
Imageimg=ImageFactory.getInstance().fromUrl(url);



Aaron发现,DJL直接把模型和前后处理都封装好了。而后,只需要下面这些代码,就可以直接导入模型并且用来推理。首先,使用第一个模型,用以寻找人脸:

Map<String,String>filter=newConcurrentHashMap<>();
filter.put("flavor","server");

ZooModel<Image,DetectedObjects>model=
PpModelZoo.FACE_DETECTION.loadModel(filter,null,newProgressBar());

Predictor<Image,DetectedObjects>predictor=model.newPredictor();
DetectedObjectsobj=predictor.predict(img);


之后只需要将推理结果映射到图片上即可:


Aaron心想:“ WOW,两个人脸都识别出来了。不对,等一下,它只找到了人脸,但是我们如何判断他们有没有戴口罩呢?”他继续往下看发现,原来还有一个模型需要使用,人们仅通过输入一张图片,就能判断是否戴了口罩:

Map<String,String>filter=newConcurrentHashMap<>();
filter.put("flavor","server");
ZooModel<Image,Classifications>model=
PpModelZoo.MASK_DETECTION.loadModel(filter,null,newProgressBar());
Predictor<Image,DetectedObjects>predictor=model.newPredictor();
Classificationsresult=predictor.predict(img);


“那就试试看?”Aaron嘀咕着。他把每张面部的推理结果映射到图片试试看:

诶,还不错嘛,识别精确度可以说是非常准了,终于可以用它来帮助我们开关门了。Aaron的这个设计节约了很大的人力成本,他也不需要每天盯在屏幕前了。没想到,就算是Java小白也可以轻松上手DJL x Paddle。


Aaron在DJL的Slack群里发了一条:

"Thanksforyourhelpforthisawesomeapplication!BiglovetoDJLxPaddle:>"


翻译 (DJL组 Zach): "wo bu hui zhong wen"




总结




上面的案例只是冰山一角。我们提供了完整的中文教学,手把手帮你搭建一个属于自己的口罩检测模型。我们还提供了OCR模型的案例,可以帮助你顺利识别文字。


值得一提的是,我们在这次集成中带来了完全的Java支持,用户只需写几行代码便可以轻松读取模型并用来推理。飞桨框架2.0的训练十分简单,部署也十分轻松。后续我们还将继续优化支持,推出GPU推理以及一些其他方向的开发,敬请期待!



如果您想详细了解更多飞桨的相关内容,请参阅以下文档。


·DJL项目地址·

https://github.com/awslabs/djl


·DJL项目文档·

http://docs.djl.ai/paddlepaddle/index.html


·Paddle Inference文档地址·

https://paddle-inference.readthedocs.io/en/latest/index.html


·飞桨官网地址·

https://www.paddlepaddle.org.cn/


·飞桨开源框架项目地址·

GitHub: https://github.com/PaddlePaddle/Paddle

Gitee: https://gitee.com/paddlepaddle/Paddle



哈哈哈哈,这个勒索软件笑死我了!

2021-05-01

揭秘全球开发最新趋势!JS开发者达1380万,C#超越PHP,Rust增长最快

2021-04-29

牛掰!超越YOLOv5的PP-YOLOv2和1.3M超轻量PP-YOLO Tiny都来了!

2021-04-28



觉得不错,请点个在看

相关资源