快到飛起!兼容所有主流操作系統(tǒng),又一 Java 開發(fā)神器面世!
自從飛槳框架 2.0 發(fā)布以來,一直有用戶期待什么時候能夠幫助 Java 用戶更便捷高效完成他們的部署任務(wù)。在過去,我們往往需要自己部署一臺 Model Server 來做這個事情。但是,無論是維護方面,還是速度方面,很多時候都沒有辦法達到預期?,F(xiàn)在,我們聯(lián)手 DeepJavaLibrary(以下簡稱為 DJL)—— 一個基于 Java 的深度學習開發(fā)包,提供了一套飛槳 Java 推理 API。
DJL x Paddle 是一個基于飛槳 C++ 推理庫的輕量級 Java 推理庫,它支持基本的飛槳 Tensor,并可以用來對所有飛槳模型進行推理。DJL x Paddle 可以直接在 Windows、Linux 和 Mac 操作系統(tǒng),以及所有的 Java 環(huán)境中使用。
目前,我們?yōu)橛脩籼峁┝藘蓚€基本的使用樣例:
基于飛槳的口罩識別應(yīng)用 基于 PaddleOCR 的文字識別應(yīng)用
Paddle 模型轉(zhuǎn)換教程鏈接:
http://docs.djl.ai/docs/paddlepaddle/how_to_create_paddlepaddle_model_zh.html
一個小故事

Aaron 是一名 Boss,負責一家位于田納西州的冷凍炸雞加工廠。最近,他一直因為工人不戴口罩進廠工作而苦惱。為了保護員工的健康,他在廠子門前安裝了攝像頭。這樣,他就可以在每次上班的時候,監(jiān)督工人佩戴口罩的情況,只有戴上口罩才能入內(nèi)。

可是,因為人流量眾多,他們需要時時刻刻去盯著屏幕來判斷是否要讓工人進來。這樣不僅十分不方便,還讓工人因為人工篩查耽誤時間變得焦躁。于是乎,Aaron 就想:有沒有什么辦法能夠?qū)⑦@個過程自動化,比如攝像頭自動識別客人是否戴了口罩,然后自動將他們放進工廠?本科期間,他學過一點 Java,工廠的網(wǎng)頁后端也是自己用 Java 寫的。他在網(wǎng)上搜索,有沒有什么 Java 的方法能夠解決這個問題。此時,DJL 就出現(xiàn)在了眼前。對于 Aaron 來說,他并不了解 AI,只是想找到一個現(xiàn)成的方法解決這個問題。

Aaron 在 DJL 提供的案例里找到了基于飛槳的口罩識別應(yīng)用模型!雖然飛槳和 DJL 都不曾聽說過,但是代碼看起來很簡單,只需要稍作改動就可以完成任務(wù)。對于 Aaron 來說,這個模型可以進行面部識別,還能判斷是否戴了口罩,完全滿足了他的需求!

心動不如行動,他開始嘗試直接使用這里所介紹的步驟完成他的口罩識別應(yīng)用。首先,他需要引入 DJL 相關(guān)的依賴項至 Gradle(Java 中常用的構(gòu)建工具)里:
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 發(fā)現(xiàn),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);
之后只需要將推理結(jié)果映射到圖片上即可:

Aaron 心想:“WOW,兩個人臉都識別出來了。不對,等一下,它只找到了人臉,但是我們?nèi)绾闻袛嗨麄冇袥]有戴口罩呢?” 他繼續(xù)往下看發(fā)現(xiàn),原來還有一個模型需要使用,人們僅通過輸入一張圖片,就能判斷是否戴了口罩:
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 嘀咕著。他把每張面部的推理結(jié)果映射到圖片試試看:

誒,還不錯嘛,識別精確度可以說是非常準了,終于可以用它來幫助我們開關(guān)門了。Aaron 的這個設(shè)計節(jié)約了很大的人力成本,他也不需要每天盯在屏幕前了。沒想到,就算是 Java 小白也可以輕松上手 DJL x Paddle。
Aaron 在 DJL 的 Slack 群里發(fā)了一條:
"Thanks for your help for this awesome application! Big love to DJL x Paddle :>"
翻譯 (DJL 組 Zach): "wo bu hui zhong wen"
總結(jié)
上面的案例只是冰山一角。我們提供了完整的中文教學,手把手幫你搭建一個屬于自己的口罩檢測模型。我們還提供了 OCR 模型的案例,可以幫助你順利識別文字。
值得一提的是,我們在這次集成中帶來了完全的 Java 支持,用戶只需寫幾行代碼便可以輕松讀取模型并用來推理。飛槳框架 2.0 的訓練十分簡單,部署也十分輕松。后續(xù)我們還將繼續(xù)優(yōu)化支持,推出 GPU 推理以及一些其他方向的開發(fā),敬請期待!
直播提醒
看完文章是不是有很多疑問想與作者交流?
請鎖定飛槳 B 站直播間!
4 月 21 日 19:00 本文作者蘭青將直播分享項目詳情!
?? 掃碼立即進群
如果您想詳細了解更多飛槳的相關(guān)內(nèi)容,請參閱以下文檔。
·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
?飛槳官網(wǎng)地址?
https://www.paddlepaddle.org.cn/
?飛槳開源框架項目地址?
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle
飛槳 (PaddlePaddle) 以百度多年的深度學習技術(shù)研究和業(yè)務(wù)應(yīng)用為基礎(chǔ),是中國首個開源開放、技術(shù)領(lǐng)先、功能完備的產(chǎn)業(yè)級深度學習平臺,包括飛槳開源平臺和飛槳企業(yè)版。飛槳開源平臺包含核心框架、基礎(chǔ)模型庫、端到端開發(fā)套件與工具組件,持續(xù)開源核心能力,為產(chǎn)業(yè)、學術(shù)、科研創(chuàng)新提供基礎(chǔ)底座。飛槳企業(yè)版基于飛槳開源平臺,針對企業(yè)級需求增強了相應(yīng)特性,包含零門檻 AI 開發(fā)平臺 EasyDL 和全功能 AI 開發(fā)平臺 BML。EasyDL 主要面向中小企業(yè),提供零門檻、預置豐富網(wǎng)絡(luò)和模型、便捷高效的開發(fā)平臺;BML 是為大型企業(yè)提供的功能全面、可靈活定制和被深度集成的開發(fā)平臺。
END
