前言
最近在做本科畢業(yè)設(shè)計(jì),要求是在樹莓派上部署yolo算法來實(shí)現(xiàn)火災(zāi)檢測(cè),在網(wǎng)上查了很多資料,最后選擇用yolov5s模型先試著在樹莓派上部署,看下效果如何,由于從大佬那里拿到了yolov5火災(zāi)檢測(cè)模型,但想要將它移植到樹莓派上第一步要把pt模型轉(zhuǎn)換成onnx模型,原因我想大概是因?yàn)闃漭伤懔Σ蝗鏿c,因此要轉(zhuǎn)換成合適的模型進(jìn)行部署。一開始我覺得轉(zhuǎn)換模型應(yīng)該是很簡(jiǎn)單的一個(gè)事情,但是在進(jìn)行的過程中踩了很多坑,走了很多彎路,因此在這里總結(jié)一下,也希望有相同需求的朋友能從這里獲得幫助,ps:因?yàn)楸救怂接邢匏阅軒偷酱蠹液芨吲d。
第一個(gè)問題
在進(jìn)行模型轉(zhuǎn)化時(shí)從網(wǎng)上找的代碼是這樣:
python export.py --weights ‘weights/last.pt’ --batch-size 1 --img_size 320
大概內(nèi)容是調(diào)用export.py這個(gè)文件來進(jìn)行模型的轉(zhuǎn)化,但是將代碼復(fù)制到項(xiàng)目命令行里運(yùn)行后產(chǎn)生如下報(bào)錯(cuò):
我看了下報(bào)錯(cuò)的原因大概是語(yǔ)法錯(cuò)誤,后來在網(wǎng)上查找后發(fā)現(xiàn)其實(shí)這個(gè)命令可以不帶后面的–batch-size和–img-size,如果要帶的話這里的–img_size應(yīng)該改為–img-size。
第二個(gè)問題
將后面的參數(shù)刪掉以后發(fā)現(xiàn)還是不能正常運(yùn)行,后來經(jīng)過分析后發(fā)現(xiàn)是因?yàn)檫@里的’weights/last.pt’應(yīng)該是你項(xiàng)目里這個(gè).pt模型的相對(duì)地址,因此將代買修改為以下形式:
python export.py --weights ‘runs/train/exp_yolov5s/weights/best.pt’
運(yùn)行后發(fā)現(xiàn)還是不行,報(bào)錯(cuò)如下:
在網(wǎng)上查找詳細(xì)步驟后發(fā)現(xiàn)是由于之前并沒有安裝好onnx的包導(dǎo)致,于是又輸入了這樣一行代碼安裝缺少的onnx包:
pip install onnx
很快就安裝好了:
安裝好了以后運(yùn)行還是和上面一樣的報(bào)錯(cuò),于是在網(wǎng)上查找資料發(fā)現(xiàn)是因?yàn)閜ytorch的版本太高導(dǎo)致包不兼容,所以又重新安裝了1.9.0版本的pytorch,因?yàn)橹鞍惭b了conda虛擬環(huán)境,所以安裝過程很順利,不過因?yàn)槲壹揖W(wǎng)速原因下載速度有些慢…
conda install pytorch1.9.0 torchvision0.10.0 torchaudio==0.9.0 cudatoolkit=10.2 -c pytorch
第三個(gè)問題
安裝好之后又運(yùn)行了一編export的文件,結(jié)果還是報(bào)錯(cuò),不過所幸這次報(bào)錯(cuò)的原因不一樣了,這也說明之前那個(gè)問題已經(jīng)解決了,雖然不清楚里面的原理不過對(duì)于我這個(gè)小白來說能用就已經(jīng)是一件令人激動(dòng)的事情了,如果有大佬的話希望可以幫忙分析一下。這次的報(bào)錯(cuò)是這樣的:
這個(gè)問題我在網(wǎng)上搜了很多,大部分都是說是conda的環(huán)境變量配的有問題,然而我的conda早就安裝好了而且可以正常運(yùn)行,之前也配置過環(huán)境變量所以應(yīng)該不是這個(gè)原因,后來偶然間看到有人說可能是因?yàn)閜illow版本的問題,于是我卸載然后重新裝了pillow:
pip uninstall pillow
pip install pillow==8.4
第四個(gè)問題
經(jīng)過上面踩過許多次坑之后,這次,終于!它提示成功運(yùn)行了:
但是,我還沒來得及高興又來了當(dāng)頭一棒:我發(fā)現(xiàn)在我存放.pt模型的文件夾里面并沒有成功出現(xiàn)導(dǎo)出的onnx文件,后來我發(fā)現(xiàn)在上面:
運(yùn)行了很多次都是相同的結(jié)果,然后當(dāng)時(shí)我心態(tài)就快崩潰了,后來又重振旗鼓去網(wǎng)上找解決方法,然后找到了一個(gè)看起來很靠譜的博客,按照大佬的辦法修改了export.py的代碼:
在這里修改data和weight的默認(rèn)路徑為你數(shù)據(jù)源data.yaml的路徑和模型的權(quán)重文件里的best.pt的路徑,在修改之后,在命令行輸入這行代碼:
python export.py --include torchscript onnx
終于,程序正常運(yùn)行,我在模型best.pt所在文件夾內(nèi)看到了導(dǎo)出的.onnx文件和.torchscript文件,如果只想導(dǎo)出onnx文件可以把前面的去掉,直接輸入:
python export.py --include onnx
到此,將模型部署到樹莓派上的第一步總算完成了。文章來源:http://www.zghlxwxcb.cn/news/detail-410965.html
總結(jié)
這是本人第一次在csdn上嘗試寫這種總結(jié)類的博客,目的也很簡(jiǎn)單,想把這個(gè)過程中自己遇到的坑和嘗試的經(jīng)歷記錄下來,方便后面開發(fā)過程中有需要的時(shí)候回來翻看,同時(shí)發(fā)布到csdn上也希望能夠得到大佬們的批評(píng)指正,如果某些內(nèi)容能夠幫到大家那再好不過了。
作為一個(gè)機(jī)械專業(yè)的大四學(xué)生,第一次做畢設(shè)就拿到這么有挑戰(zhàn)性的題目其實(shí)對(duì)我來說是很恐懼的,因?yàn)樽约褐安]有識(shí)別算法這方面的基礎(chǔ)知識(shí)儲(chǔ)備,研究生想做的方向是嵌入式,不過因?yàn)樽霎呍O(shè)需要用到深度學(xué)習(xí)圖像識(shí)別所以嘗試將它部署到樹莓派上,現(xiàn)在工作才剛剛開始就遇到這么多的困難其實(shí)是超出我的預(yù)期的,不過經(jīng)歷了這些之后我對(duì)于開發(fā)應(yīng)用這類工作有了新的認(rèn)識(shí),其實(shí)有時(shí)候這個(gè)東西真的沒有你想象中的那么難,只是你要做到心平氣和,不要浮躁,多學(xué)多問多嘗試,總會(huì)有新的收獲,加油!文章來源地址http://www.zghlxwxcb.cn/news/detail-410965.html
到了這里,關(guān)于如何在windows系統(tǒng)下將yolov5的pt模型導(dǎo)出為onnx模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!