快到飛起!兼容所有主流操作系統(tǒng),又一 Java 開發(fā)神器面世!

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

Aaron 是一名 Boss,負(fù)責(zé)一家位于田納西州的冷凍炸雞加工廠。最近,他一直因?yàn)楣と瞬淮骺谡诌M(jìn)廠工作而苦惱。為了保護(hù)員工的健康,他在廠子門前安裝了攝像頭。這樣,他就可以在每次上班的時(shí)候,監(jiān)督工人佩戴口罩的情況,只有戴上口罩才能入內(nèi)。

可是,因?yàn)槿肆髁勘姸啵麄冃枰獣r(shí)時(shí)刻刻去盯著屏幕來(lái)判斷是否要讓工人進(jìn)來(lái)。這樣不僅十分不方便,還讓工人因?yàn)槿斯ずY查耽誤時(shí)間變得焦躁。于是乎,Aaron 就想:有沒(méi)有什么辦法能夠?qū)⑦@個(gè)過(guò)程自動(dòng)化,比如攝像頭自動(dòng)識(shí)別客人是否戴了口罩,然后自動(dòng)將他們放進(jìn)工廠?本科期間,他學(xué)過(guò)一點(diǎn) Java,工廠的網(wǎng)頁(yè)后端也是自己用 Java 寫的。他在網(wǎng)上搜索,有沒(méi)有什么 Java 的方法能夠解決這個(gè)問(wèn)題。此時(shí),DJL 就出現(xiàn)在了眼前。對(duì)于 Aaron 來(lái)說(shuō),他并不了解 AI,只是想找到一個(gè)現(xiàn)成的方法解決這個(gè)問(wèn)題。

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

心動(dòng)不如行動(dòng),他開始嘗試直接使用這里所介紹的步驟完成他的口罩識(shí)別應(yīng)用。首先,他需要引入 DJL 相關(guān)的依賴項(xiàng)至 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"
}
之后,直接導(dǎo)入圖片:
String url = "/user/home/my_client.jpg";
Image img = ImageFactory.getInstance().fromUrl(url);
Aaron 發(fā)現(xiàn),DJL 直接把模型和前后處理都封裝好了。而后,只需要下面這些代碼,就可以直接導(dǎo)入模型并且用來(lái)推理。首先,使用第一個(gè)模型,用以尋找人臉:
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,兩個(gè)人臉都識(shí)別出來(lái)了。不對(duì),等一下,它只找到了人臉,但是我們?nèi)绾闻袛嗨麄冇袥](méi)有戴口罩呢?” 他繼續(xù)往下看發(fā)現(xiàn),原來(lái)還有一個(gè)模型需要使用,人們僅通過(guò)輸入一張圖片,就能判斷是否戴了口罩:
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é)果映射到圖片試試看:

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