五金外貿(mào)網(wǎng)站模板刷關(guān)鍵詞排名系統(tǒng)
若該文為原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明原文出處。
通過正點(diǎn)原子的ATK-3568了解到了YOLOP,這里記錄下訓(xùn)練及測(cè)試及在onnxruntime部署的過程。
步驟:訓(xùn)練->測(cè)試->轉(zhuǎn)成onnx->onnxruntime部署測(cè)試
一、前言
YOLOP是華中科技大學(xué)研究團(tuán)隊(duì)在2021年開源的研究成果,其將目標(biāo)檢測(cè)/可行駛區(qū)域分割和車道線檢測(cè)三大視覺任務(wù)同時(shí)放在一起處理,并且在Jetson TX2開發(fā)板子上能夠達(dá)到23FPS。
論文標(biāo)題:YOLOP: You Only Look Once for Panoptic Driving Perception
論文地址: https://arxiv.org/abs/2108.11250
官方代碼: https://github.com/hustvl/YOLOP
網(wǎng)絡(luò)結(jié)構(gòu)
相比于其它論文,YOLOP的論文很容易閱讀。YOLOP的核心亮點(diǎn)就是多任務(wù)學(xué)習(xí),而各部分都是拿其它領(lǐng)域的成果進(jìn)行縫合,其網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
三個(gè)子任務(wù)共用一個(gè)Backbone和Neck,然后分出來三個(gè)頭來執(zhí)行不同的任務(wù)。
二、環(huán)境搭建
1、平臺(tái)
使用的是AutoDL平臺(tái),配置如下:
2、環(huán)境創(chuàng)建
# 創(chuàng)建虛擬環(huán)境
conda create -n yolop_env python=3.8 -y
# 激活環(huán)境
conda activate yolop_env
# 安裝pytorch
根據(jù)官網(wǎng)Previous PyTorch Versions | PyTorch安裝pytorch,這里選擇1.7版本,其他版本測(cè)試時(shí),在轉(zhuǎn)換成onnx時(shí)出錯(cuò),所以在這里直接安裝1.7版本。
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
# 下載源碼,代碼地址:
https://github.com/hustvl/YOLOP
# 安裝yolop環(huán)境
pip install -r requirements.txt
# 測(cè)試
python tools/demo.py --source ./inference/images/0ace96c3-48481887.jpg
運(yùn)行 python tools/demo.py --source ./inference/videos/1.mp4
測(cè)試圖片:–source 圖片路徑 (或存放圖片的文件夾路徑)
測(cè)試視頻:–source 視頻路徑 (或存放視頻的文件夾路徑)
相機(jī)實(shí)時(shí):–source 0
默認(rèn)用cpu測(cè)試效果,如果想改成gpu,修改demo.py 198行。
三、onnxruntime測(cè)試
先安裝onnxruntime
pip install onnxruntime
測(cè)試
python test_onnx.py --weight yolop-640-640.onnx --img ./inference/images/adb4871d-4d063244.jpg
四、訓(xùn)練
訓(xùn)練前需要下載數(shù)據(jù)集,可以根據(jù)YOLOP里的readme.md里的地址下載,也可以下載下面的網(wǎng)盤地址,把數(shù)據(jù)解壓到Y(jié)OLOP目錄下。
鏈接:https://pan.baidu.com/s/1DJirasFncnnf4auI-BxEHA
提取碼:1234
在Train之前修改相關(guān)參數(shù),修改文件./lib/config/default.py
1、修改第9行:
_C.WORKERS = 0
2、修改第51-56行,這是數(shù)據(jù)集的路徑
_C.DATASET = CN(new_allowed=True)
_C.DATASET.DATAROOT = '/root/YOLOP-main/datasets/images' ? ? ? # the path of images folder
_C.DATASET.LABELROOT = '/root/YOLOP-main/datasets/det_annotations' ? ? ?# the path of det_annotations folder
_C.DATASET.MASKROOT = '/root/YOLOP-main/datasets/da_seg_annotations' ? ? ? ? ? ? ? ?# the path of da_seg_annotations folder
_C.DATASET.LANEROOT = '/root/YOLOP-main/datasets/ll_seg_annotations' ? ? ? ? ? ? ? # the path of ll_seg_annotations folder
3、修改ATCH_SIZE
修改96行,121行_C.TRAIN.BATCH_SIZE_PER_GPU 為合適大小
修改完后,就可以訓(xùn)練了,執(zhí)行下面命令開始訓(xùn)練:
python tools/train.py
訓(xùn)練時(shí)間很久,根據(jù)default.py文件,epoch共240輪,大概8小時(shí)左右,在訓(xùn)練過程中有一點(diǎn)要注意,每訓(xùn)練一輪結(jié)束后,模型和一些圖片都會(huì)保存下來,造成磁盤空間不夠,有可能訓(xùn)練失敗,我只是測(cè)試所以只訓(xùn)練了100輪。
五、轉(zhuǎn)onnx模型及測(cè)試
轉(zhuǎn)換成onnx模型前,先安裝環(huán)境
pip install onnxruntime
pip install onnx
pip install onnx-simplifier
pip install onnxoptimizer
pip install numpy==1.20.0
安裝完后,運(yùn)行python export_onnx.py轉(zhuǎn)成onnx模型
onnxruntime測(cè)試和上面一樣,執(zhí)行下面命令測(cè)試
python test_onnx.py --weight yolop-640-640.onnx --img ./inference/images/adb4871d-4d063244.jpg
onnx轉(zhuǎn)換并測(cè)試成功,接下來就是把模型轉(zhuǎn)成rknn并在rk3568上部署。
遇到的問題:
[ONNXRuntimeError] : 1 : FAIL : Node (Mul_948) Op (Mul) [ShapeInferenceError]
處理:把torch降成1.7
?
如有侵權(quán),或需要完整代碼,請(qǐng)及時(shí)聯(lián)系博主。