前言
本文將講述如何利用ncnn在安卓手機(jī)端部署YOLOv7,這里以YOLOv7-tiny為例進(jìn)行講解,YOLOv7按照步驟依次進(jìn)行即可,同時(shí)對(duì)于Android Studio的安裝不在本次教程之內(nèi)
1、YOLOv7-tiny模型部署
標(biāo)準(zhǔn)YOLOv7-tiny
部署指的是沒(méi)有更改YOLOv7-tiny
的網(wǎng)絡(luò)模型架構(gòu),直接利用訓(xùn)練好的模型權(quán)重進(jìn)行部署,下面分幾步進(jìn)行講述:
1.1 獲得所需模型文件
首先是將訓(xùn)練獲得的權(quán)重文件.pt
轉(zhuǎn)為.onnx
:
python export.py --weights '你的權(quán)重文件' \
--iou-thres 這個(gè)自己設(shè)置 --conf-thres 自己設(shè)置 \
--device 0
這個(gè)導(dǎo)出有GPU就GPU到,然后–fp16和–int8看自己情況來(lái)吧,導(dǎo)出之后會(huì)在你的權(quán)重保存路徑下生成.onnx
的文件,保存這個(gè)文件。
將導(dǎo)出的文件傳到此網(wǎng)站:convertmodel
保存這兩個(gè)文件,后續(xù)要用到
1.2 克隆所需要的代碼
首先是下載ncnn-android-yolov7代碼,其次是ncnn,之后便是opencv-mobile
ncnn-android-yolov7
代碼下載:
ncnn
代碼下載:
opencv-mobile
下載:
下載之后便得到了三個(gè)壓縮包,將其解壓到同一目錄下,最好目錄不要有中文,避免報(bào)錯(cuò),如下:
然后將紅箭頭所指文件夾復(fù)制到ncnn-android-yolov7
的這個(gè)目錄下:D:\xx\ncnn-android-yolov7-master\app\src\main\jni
之后用Android Studio
打開(kāi)ncnn-android-yolov7
項(xiàng)目,打開(kāi)箭頭所指文件,然后將我畫(huà)紅線(xiàn)位置改成你所復(fù)制的文件夾名字:
將第1節(jié)得到的.param
和.bin
文件復(fù)制到asserts
文件夾下
到這里,準(zhǔn)備工作就全部做好了,下一步就開(kāi)始改代碼了。
1.3 修改代碼
請(qǐng)用netron打開(kāi)剛剛轉(zhuǎn)換模型得到的.param
文件
這里的images
填入到的ex.input("xx", yy);
中的xx,請(qǐng)注意,images
只是我的.param
文件下的名字,如果你的和我的不一樣,請(qǐng)?zhí)钅隳P偷摹?/p>
找到第一個(gè)檢測(cè)頭的這個(gè)卷積,
將畫(huà)框的output
填到stride8
,這里的名字是onnx::Reshape_588
,當(dāng)然,你們的名字肯定和我的不一樣,這個(gè)沒(méi)關(guān)系,填你們自己的名字即可。依葫蘆畫(huà)瓢,找到第二個(gè)檢測(cè)頭上面一個(gè)卷積,然后將名字填到stride16
,之后填stride32
對(duì)于yolo.cpp
,請(qǐng)轉(zhuǎn)到Yolo::detect
函數(shù),然后將得到的名字,按照相應(yīng)位置填進(jìn)去,對(duì)我畫(huà)框部分進(jìn)行修改,還有啊,anchor
是你自己訓(xùn)練時(shí)配置文件中所用的anchor
,所以也記得要進(jìn)行修改。
繼續(xù)在yolo.cpp
文件中,轉(zhuǎn)到Yolo::draw
,改成你自己的類(lèi)別名稱(chēng):
到此為止yolo.cpp
修改完畢
轉(zhuǎn)到yoloncnn.cpp
,按框所示,改成你自己的.param
文件的名字:
轉(zhuǎn)到下面箭頭所指文件,app_name
是做成app后顯示的名字,然后model_array
下面的item
要填你的.param
文件的名字
到此為止,代碼上的改動(dòng)已經(jīng)全部結(jié)束,之后還需要對(duì).param
文件進(jìn)行修改,打開(kāi)它,然后像箭頭一樣修改即可
到此為止,真的就全部修改完了。
2、連接手機(jī)進(jìn)行部署
首先打開(kāi)開(kāi)發(fā)者模式,這里不進(jìn)行贅述,另外,如果你是小米手機(jī),那么請(qǐng)?jiān)陂_(kāi)發(fā)者選項(xiàng)中關(guān)閉MIUI優(yōu)化,不然會(huì)出錯(cuò)。
第一步:
第二步:
第三步:
靜等一會(huì)兒,應(yīng)用就會(huì)自動(dòng)安裝到手機(jī),然后進(jìn)行檢測(cè),到此為止,YOLOv7-tiny的部署就此完成。
總結(jié)
這里的圖片和步驟有點(diǎn)多,請(qǐng)大家按照步驟一步一步進(jìn)行,我也是看了一些資料才搞定的,應(yīng)該算是保姆級(jí)教學(xué)了,原創(chuàng),給個(gè)免費(fèi)的贊謝謝!有問(wèn)題可以在評(píng)論區(qū)交流哦!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-772313.html
參考
https://github.com/xiang-wuu/ncnn-android-yolov7
https://github.com/nihui/opencv-mobile
https://github.com/Tencent/ncnn文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-772313.html
到了這里,關(guān)于YOLOv7安卓部署 ncnn的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!