快到飛起!兼容所有主流操作系統(tǒng),又一Java開(kāi)發(fā)神器面世!
自從飛槳框架2.0發(fā)布以來(lái),一直有用戶期待什么時(shí)候能夠幫助Java用戶更便捷高效完成他們的部署任務(wù)。在過(guò)去,我們往往需要自己部署一臺(tái)Model Server來(lái)做這個(gè)事情。但是,無(wú)論是維護(hù)方面,還是速度方面,很多時(shí)候都沒(méi)有辦法達(dá)到預(yù)期。現(xiàn)在,我們聯(lián)手DeepJavaLibrary(以下簡(jiǎn)稱為DJL)—— 一個(gè)基于Java的深度學(xué)習(xí)開(kāi)發(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都不曾聽(tīng)說(shuō)過(guò),但是代碼看起來(lái)很簡(jiǎn)單,只需要稍作改動(dòng)就可以完成任務(wù)。對(duì)于Aaron來(lái)說(shuō),這個(gè)模型可以進(jìn)行面部識(shí)別,還能判斷是否戴了口罩,完全滿足了他的需求!

心動(dòng)不如行動(dòng),他開(kāi)始嘗試直接使用這里所介紹的步驟完成他的口罩識(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)幫助我們開(kā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推理以及一些其他方向的開(kāi)發(fā),敬請(qǐng)期待!
如果您想詳細(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/
·飛槳開(kāi)源框架項(xiàng)目地址·
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle

往 期 推 薦 1、最牛逼的 Java 日志框架,性能無(wú)敵,橫掃所有對(duì)手! 2、把Redis當(dāng)作隊(duì)列來(lái)用,真的合適嗎? 3、驚呆了,Spring Boot居然這么耗內(nèi)存!你知道嗎? 4、牛逼哄哄的 BitMap,到底牛逼在哪? 5、全網(wǎng)最全 Java 日志框架適配方案!還有誰(shuí)不會(huì)? 6、30個(gè)IDEA插件總有一款適合你 7、Spring中毒太深,離開(kāi)Spring我居然連最基本的接口都不會(huì)寫了

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看
