日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个垃圾分类项目带你玩转飞桨(2)

發(fā)布時間:2024/3/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个垃圾分类项目带你玩转飞桨(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一個垃圾分類項目帶你玩轉(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……😋】

!unzip -oq /home/aistudio/data/data100472/dataset.zip -d dataset

模型訓(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.11

2、模型訓(xùn)練
在模型選取方面,EdgeBoard提供了基于PaddleX部署的支持模型,在此模型列表中(此處只展示檢測支持模型,詳細(xì)模型請查詢此鏈接)
在本項目中,結(jié)合此檢測模型支持列表,依據(jù)實際部署場景,以精度為第一選擇優(yōu)先級,選取Yolov3-DarkNet53模型進(jìn)行訓(xùn)練。以下是詳細(xì)的訓(xùn)練代碼:

import os os.environ['CUDA_VISIBLE_DEVICES'] = '0'from paddlex.det import transforms import paddlex as pdx# 定義訓(xùn)練和驗證時的transforms # API說明 https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html train_transforms = transforms.Compose([transforms.MixupImage(mixup_epoch=250), transforms.RandomDistort(),transforms.RandomExpand(), transforms.RandomCrop(), transforms.Resize(target_size=608, interp='RANDOM'), transforms.RandomHorizontalFlip(),transforms.Normalize() ])eval_transforms = transforms.Compose([transforms.Resize(target_size=608, interp='CUBIC'), transforms.Normalize() ])# 定義訓(xùn)練和驗證所用的數(shù)據(jù)集 # API說明:https://paddlex.readthedocs.io/zh_CN/develop/apis/datasets.html#paddlex-datasets-vocdetection train_dataset = pdx.datasets.VOCDetection(data_dir='/home/aistudio/dataset/VOC2007',file_list='/home/aistudio/dataset/VOC2007/train_list.txt',label_list='/home/aistudio/dataset/VOC2007/labels.txt',transforms=train_transforms,shuffle=True) eval_dataset = pdx.datasets.VOCDetection(data_dir='/home/aistudio/dataset/VOC2007',file_list='/home/aistudio/dataset/VOC2007/val_list.txt',label_list='/home/aistudio/dataset/VOC2007/labels.txt',transforms=eval_transforms)# 初始化模型,并進(jìn)行訓(xùn)練 # 可使用VisualDL查看訓(xùn)練指標(biāo),參考https://paddlex.readthedocs.io/zh_CN/develop/train/visualdl.html num_classes = len(train_dataset.labels)# API說明: https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-yolov3 model = pdx.det.YOLOv3(num_classes=num_classes, backbone='DarkNet53')# API說明: https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#id1 # 各參數(shù)介紹與調(diào)整說明:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html model.train(num_epochs=270,train_dataset=train_dataset,train_batch_size=16,eval_dataset=eval_dataset,learning_rate=0.000125,save_interval_epochs=2,lr_decay_epochs=[104, 126, 240],save_dir='output/yolov3_darknet53',use_vdl=True)

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ù),其他接口無供電功能。
  • 關(guān)機(jī)
  • 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)容如下:

    {"network_type":"YOLOV3","model_file_name":"model","params_file_name":"params","labels_file_name":"label_list.txt","format":"RGB","input_width":608,"input_height":608,"mean":[123.675, 116.28, 103.53],"scale":[0.0171248, 0.017507, 0.0174292],"threshold":0.3 }

    注意: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.json

    bilibili效果展示連接

    總結(jié)

    以上是生活随笔為你收集整理的一个垃圾分类项目带你玩转飞桨(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。