一个垃圾分类项目带你玩转飞桨(2)
一個垃圾分類項目帶你玩轉(zhuǎn)飛槳(2)
接上文《一個垃圾分類項目帶你玩轉(zhuǎn)飛槳(1)》:基于PaddleClas實現(xiàn)垃圾分類,導(dǎo)出inference模型利用PaddleHub Serving 進(jìn)行服務(wù)化部署,并利用PYQT5實現(xiàn)可視化。
本文同以垃圾分類為項目基點,采用PaddleX『飛槳』深度學(xué)習(xí)全流程開發(fā)工具,基于Yolov3-DarkNet53模型,實現(xiàn)多目標(biāo)垃圾分類檢測。并基于EdgeBoard邊緣部署設(shè)備對模型進(jìn)行落地部署,從而加快垃圾分類效率,助力社會環(huán)保。
基于PaddleX實現(xiàn)垃圾檢測
隨著垃圾分類政策的深入落地,現(xiàn)如今,垃圾分類相關(guān)產(chǎn)品如雨后春筍拔地而起。然如今垃圾分類產(chǎn)品,多采用計算機(jī)視覺中的圖像分類技術(shù)對垃圾進(jìn)行識別分類,此方案雖能較為準(zhǔn)確的識別垃圾種類,但其受限于技術(shù)本身,其識別圖像為保證識別準(zhǔn)確率只能存在于一種垃圾,即:用戶在使用此產(chǎn)品時,只能在本次識別過程中在識別區(qū)放置一種垃圾。故而此方案極大地阻礙了垃圾分類效率的提升。而采用目標(biāo)檢測技術(shù)能夠有效解決此問題,加速垃圾分類效率,真正助力垃圾分類政策的深入落地,向社會普及垃圾分類知識。
PaddleX相關(guān)介紹
🤗 PaddleX 集成飛槳智能視覺領(lǐng)域圖像分類、目標(biāo)檢測、語義分割、實例分割任務(wù)能力,將深度學(xué)習(xí)開發(fā)全流程從數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練與優(yōu)化到多端部署端到端打通,并提供統(tǒng)一任務(wù)API接口及圖形化開發(fā)界面Demo。開發(fā)者無需分別安裝不同套件,以低代碼的形式即可快速完成飛槳全流程開發(fā)。
🏭 PaddleX 經(jīng)過質(zhì)檢、安防、巡檢、遙感、零售、醫(yī)療等十多個行業(yè)實際應(yīng)用場景驗證,沉淀產(chǎn)業(yè)實際經(jīng)驗,并提供豐富的案例實踐教程,全程助力開發(fā)者產(chǎn)業(yè)實踐落地。
目前PaddleX已發(fā)布2.0.4rc版本正式發(fā)布,實現(xiàn)動態(tài)圖的全面升級。本項目為保證模型能順利部署于EdgeBoard開發(fā)板上,仍采用1.3.11版本。
解壓數(shù)據(jù)集
本項目掛載數(shù)據(jù)集提供了既符合VOC格式又符合COCO格式的數(shù)據(jù)集,可以滿足PaddleX或PaddleDetection模型訓(xùn)練的數(shù)據(jù)集格式要求。
【相關(guān)數(shù)據(jù)集轉(zhuǎn)換方法可參考此Github倉庫歡迎貢獻(xiàn)代碼、star……😋】
模型訓(xùn)練
- 首先安裝paddlex==1.3.11版本;
- 依據(jù)EdgeBoard開發(fā)板模型支持列表及具體部署場景選擇訓(xùn)練模型;
- 模型導(dǎo)出;
1、考慮到本項目需部署于EdgeBoard開發(fā)板中,故安裝paddlex==1.3.11版本。
!pip install paddlex==1.3.112、模型訓(xùn)練
在模型選取方面,EdgeBoard提供了基于PaddleX部署的支持模型,在此模型列表中(此處只展示檢測支持模型,詳細(xì)模型請查詢此鏈接)
在本項目中,結(jié)合此檢測模型支持列表,依據(jù)實際部署場景,以精度為第一選擇優(yōu)先級,選取Yolov3-DarkNet53模型進(jìn)行訓(xùn)練。以下是詳細(xì)的訓(xùn)練代碼:
3、模型導(dǎo)出
!paddlex --export_inference --model_dir=image_model --save_dir=./inference_model基于EdgeBoard實現(xiàn)模型部署
EdgeBoard簡介
EdgeBoard是百度面向嵌入式與邊緣計算場景打造的AI解決方案。豐富的硬件選型,可滿足多變的邊緣部署需求。無縫兼容百度大腦工具平臺與算法模型,開發(fā)者既可以選用已有模型,也可以自定義算法。同時,模型訓(xùn)練與部署全程可視化,極大降低了開發(fā)與集成門檻。EdgeBoard靈活的芯片架構(gòu),可適配行業(yè)內(nèi)最前沿、效果最好的算法模型,基于EdgeBoard打造的軟硬一體產(chǎn)品,可廣泛適用于安防、工業(yè)、醫(yī)療、零售、教育、農(nóng)業(yè)、交通等場景。
硬件準(zhǔn)備
- EdgeBoard及其電源 ;顯示屏; miniDP轉(zhuǎn)HDMI轉(zhuǎn)換器; 網(wǎng)線 ;.usb攝像頭;電腦
EdgeBoard具體操作
使用配套的12V電源適配器插到EdgeBoard的電源接口,EdgeBoard電源接口為3.81mm間距的2pin綠色端子臺,如下圖所示,注意電源正負(fù),其他接口無供電功能。
EdgeBoard關(guān)機(jī)時,建議先通過poweroff命令將軟件操作系統(tǒng)斷電,再切斷外部電源,可以保護(hù)SD卡文件系統(tǒng)不被意外損壞。
EdgeBoard重啟有兩種方式,一種是在操作系統(tǒng)的窗口輸入reboot命令,完成系統(tǒng)重啟;另一種是短按設(shè)備上的reset按鍵,同樣實現(xiàn)EdgeBoard系統(tǒng)重啟
Windows環(huán)境
配置電腦IP
電腦配置IP地址步驟如下:電腦和Edgeboard直連后,進(jìn)入控制面板–>網(wǎng)絡(luò)和Internet–>查看網(wǎng)絡(luò)狀態(tài)和任務(wù)
點擊以太網(wǎng)
點擊屬性
點擊Internet協(xié)議版本4
設(shè)置電腦IP地址為靜態(tài)IP地址
點擊確定。
登錄Edgeboard系統(tǒng)
Edgeboard系統(tǒng)是精簡后的linux系統(tǒng),可以通過網(wǎng)絡(luò)SSH協(xié)議與其通訊。給設(shè)備上電后,通過電腦登錄到Edgeboard系統(tǒng)中進(jìn)行操作,Edgeboard系統(tǒng)的用戶名和密碼均為root。本教程使用window自帶的終端Windows PowerShell ,具體操作如下
打開Windows PowerShell,輸入ssh root@192.168.1.254,點擊回車,如果第一次連接該ip地址,會詢問是否接入,輸入yes,再回車,password為不可見字符,輸入root后,直接回車,即可進(jìn)去Edgeboard系統(tǒng)
EdgeBoard串口連接設(shè)備通訊
如果出現(xiàn)ssh連接不上,或者(設(shè)備ip動態(tài)獲取后)需要查看ip,需要使用串口進(jìn)入設(shè)備的控制臺。
可使用配套的USB調(diào)試線連接EdgeBoard的USB UART調(diào)試接口,使用電腦連接EdgeBoard系統(tǒng)。
Windows連接串口方法
安裝依賴
1.安裝驅(qū)動:初次使用usb轉(zhuǎn)串口設(shè)備需安裝驅(qū)動 CP210x_Windows_Drivers,下載鏈接:https://cn.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
2.安裝調(diào)試工具:下文以MobaXterm工具為例來介紹,工具下載:https://mobaxterm.mobatek.net/download.html
連接設(shè)備
1.保證電腦已連接EdgeBoard的USB UART接口(接口位置請參考對應(yīng)型號的硬件介紹),進(jìn)入【控制面包->硬件和聲音->設(shè)備管理器】查看設(shè)備管理器中映射的端口號,如圖所示,端口號為COM4
2.打開MobaXterm,點擊Session,進(jìn)入Session settings,選擇Serial,Serial port選擇映射出的端口,Speed為115200,Flow Control為None,點擊OK,如下圖所示
3.配置完成后進(jìn)入Session頁面,給Edgeboard上電,會看到系統(tǒng)啟動信息,待啟動完成后輸入用戶名和密碼root/root,即可進(jìn)入設(shè)備系統(tǒng)。如下圖所示
文件傳輸方式
推薦工具:winscp,下載鏈接:https://winscp.net/eng/download.php 「尊重知識產(chǎn)權(quán),遵守工具使用規(guī)范,推薦您使用正版軟件」
參照如下配置后,文件協(xié)議:scp;主機(jī)名:Edgeboard的IP;用戶名&密碼:root&root。點擊登錄
登錄后,可以直接通復(fù)制粘貼命令進(jìn)行電腦和設(shè)備間文件的拷貝
基于Edgeboard 1.8.0模型部署
上傳模型
模型訓(xùn)練完成后,將模型文件上傳到Edgeboard內(nèi),存放于/home/root/workspace/PaddleLiteDemo/res/models選擇與模型相對應(yīng)的文件夾,比如yolov3模型存放在detection目錄,模型文件中需要包含于示例對應(yīng)的文件,包括
model, params:模型文件(paddlepaddle版本不同,訓(xùn)練出的模型名稱或有差別,只要在config.json中對應(yīng)上即可)
label_list.txt:模型標(biāo)簽文件
img:放置預(yù)測圖片的文件夾
config.json:配置文件,需要基于示例給出的結(jié)構(gòu),更改為自訓(xùn)練模型的參數(shù)
修改模型配置文件參數(shù)
config.json文件內(nèi)容如下:
注意:config.json文件內(nèi)的mean、scale計算方式與訓(xùn)練模型時的計算方式可能不同,一般有如下兩種方式:
例如R為一張圖片中一個像素點的R通道的值
①(R / 255 – mean‘) / std’
②(R – mean) * scale(EdgeBoard處理方式)
如果訓(xùn)練模型的mean和std為第一種計算方式,就需要通過如下運算,計算為Edgeboard的處理方式。
edgeboard中的mean值 = mean‘ * 255Edgeboard中的scale值 = 1 / ( 255 * std’ )修改系統(tǒng)參數(shù)配置文件
系統(tǒng)配置文件存放于/home/root/workspace/PaddleLiteDemo/configs內(nèi),根據(jù)模型屬性修改對應(yīng)的配置文件,比如yolov3模型,修改image.json文件中模型文件路徑以及預(yù)測圖片路徑。
{"model_config": "../../res/models/detection/yolov3","input": {"type": "image","path": "../../res/models/detection/yolov3/img/screw.jpg"},"debug": {"display_enable": true,"predict_log_enable": true,"predict_time_log_enable": false} }執(zhí)行程序
模型配置文件和系統(tǒng)配置文件修改完成后,運行程序
cd /home/root/workspace/PaddleLiteDemo/C++/build ./detection ../../configs/detection/yolov3/image.jsonbilibili效果展示連接
總結(jié)
以上是生活随笔為你收集整理的一个垃圾分类项目带你玩转飞桨(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi TreeView树型框节点
- 下一篇: xib、stoaryboard详解