快到飞起!兼容所有主流操作系统,又一 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"
}

之后,直接导入图片:

String url = "/user/home/my_client.jpg";
Image img = ImageFactory.getInstance().fromUrl(url);

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

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

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

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

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

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

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

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

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

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

"Thanks for your help for this awesome application! Big love to DJL x Paddle :>"

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

总结

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

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

直播提醒

看完文章是不是有很多疑问想与作者交流?

请锁定飞桨 B 站直播间!

4 月 21 日 19:00 本文作者兰青将直播分享项目详情!

???? 扫码立即进群

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

·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

飞桨 (PaddlePaddle) 以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛 AI 开发平台 EasyDL 和全功能 AI 开发平台 BML。EasyDL 主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML 是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

END

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个简单的 Java 程序示例,它显示了一个窗口,在窗口中以动画效果显示表白话语。 ```java import java.awt.*; import javax.swing.*; public class LoveLetter extends JFrame { private int x = 30; private int y = 50; public LoveLetter() { setSize(300, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle("Love Letter"); setVisible(true); } public void paint(Graphics g) { super.paint(g); g.drawString("I love you!", x, y); x += 10; y += 10; } public static void main(String[] args) { LoveLetter letter = new LoveLetter(); while (true) { letter.repaint(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } ``` 这段代码使用了 Java 的图形编程库中的 `JFrame` 和 `Graphics` 类。其中主要通过重写 paint 方法 以及定时重绘的方式来实现动画效果。 其中 LoveLetter 继承了 JFrame,在构造方法中设置了 JFrame 的大小、关闭操作、标题和可见性。在 paint 方法中使用 Graphics 类的 drawString 方法在窗口中绘制文本,每次重绘时将 x 和 y 的坐标增加,从而实现动画效果。 实际开发中可以对于表白语句进行修改,以及对于动画效果和颜色,字体等等进行自定义设置。 ### 回答2: 要使用Java编写一个具有动画效果的表白神器,可以采取以下步骤: 1. 首先,使用Java的图形用户界面(GUI)库(如Java Swing或JavaFX)创建一个新的窗口,作为表白神器的界面。 2. 在窗口中添加一个按钮,用于触发动画效果。可以使用按钮的事件监听器来处理按钮的点击事件。 3. 定义一个可以移动的对象,比如一个心形图标。可以使用Java图形库提供的绘图API(如Graphics2D)来绘制这个移动的对象。 4. 在按钮的点击事件监听器中,编写代码来控制移动对象的动画效果。可以使用循环和延时来实现对象的平滑移动,例如每次延时一小段时间后,将对象的位置逐渐改变一点,然后重新绘制界面。 5. 可以使用对象的移动轨迹来实现更加炫目的动画效果,比如实现流光效果、呼吸效果等等。 6. 在动画进行时,可以添加一段背景音乐或者文字特效来增强表白效果。 7. 最后,通过界面的其他组件(如文本框或标签)引导用户输入或展示表白的文字内容。 这样,当用户点击按钮时,心形图标将会在窗口中以动画的方式移动,背景音乐或文字特效也会同时播放,给人以浪漫的感觉。用户可以通过界面的其他组件来输入或展示表白的内容,从而实现一个具有动画效果的表白神器。 ### 回答3: 要用Java写一个表白神器并添加动画效果,可以采用Java图形用户界面库(Java GUI Library)和动画库(Animation Library)来实现。 首先,我们可以使用Swing或JavaFX来创建一个图形用户界面。通过创建一个窗口或面板,并添加背景图片,我们可以为神器创建一个吸引人的界面。 接下来,使用动画库,如JavaFX的动画类或自定义动画类,来创建各种动画效果。例如,我们可以使用渐变动画来实现背景图片的渐变效果,使其由黑暗变亮或变色。我们还可以使用旋转动画或缩放动画来增加神器的吸引力。 除了背景图片的动画效果,我们还可以为表白神器添加其他元素的动画。例如,在表白神器中添加红心图标,然后使用平移动画将其从屏幕边缘移动到中心位置,形成一个跳动的红心效果,给人一种浪漫的感觉。 此外,我们可以通过嵌入音乐和音效来增加表白神器的趣味性。例如,当用户点击一个按钮表白时,我们可以播放一段甜蜜的音乐,或者在表白成功后播放一个欢快的音效。 最后,我们还可以使用一些逻辑来控制动画的触发和相互作用。例如,当用户点击一个按钮时,我们可以实现神器的逐帧动画,以展示一系列浪漫的图像。此外,我们还可以添加一些交互功能,例如鼠标悬停效果或点击效果,以增强用户体验。 总之,通过使用Java的图形用户界面库和动画库,可以实现一个精美而有趣的表白神器。通过添加各种动画效果和音乐,我们可以打造一个令人难忘的表白方式,并为人们带来愉悦和浪漫的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值