除了Yolo的其他選擇,輕量級(jí)檢測(cè)網(wǎng)絡(luò)層出不窮(框架解析及部署實(shí)踐)
開源代碼:https://github.com/RangiLyu/nanodet
前言&背景
圖像選自于《https://www.cnblogs.com/azureology/p/14103685.html》
目標(biāo)檢測(cè)是現(xiàn)在最熱門的研究課題,也一直是工業(yè)界重點(diǎn)研究的對(duì)象,最近幾年內(nèi),也出現(xiàn)了各種各樣的檢測(cè)框架,所屬于YOLO系列是最經(jīng)典也是目前被大家認(rèn)可使用的檢測(cè)框架。
CVPR21目標(biāo)檢測(cè)新框架:不再是YOLO,而是只需要一層特征(干貨滿滿,建議收藏)
目標(biāo)檢測(cè) | Anchor free的目標(biāo)檢測(cè)進(jìn)階版本
ICCV2021:阿里達(dá)摩院將Transformer應(yīng)用于目標(biāo)重識(shí)別,效果顯著(附源代碼)
2
框架介紹
Super fast and lightweight anchor-free object detection model. Real-time on mobile devices.
真實(shí)使用NANODet框架,確實(shí)比YOLO-Fastest系列好用很多,比YOLOF都好用一些,下一期,我們“計(jì)算進(jìn)視覺研究院”計(jì)劃給大家一起來詳細(xì)說說YOLO-Fastest系列。
現(xiàn)在Github提供的整體,都已在安卓運(yùn)行,華為P30上用NCNN移植跑benchmark,每幀僅需10.23毫秒,比yolov4-tiny快3倍,參數(shù)量小6倍,COCO mAP(0.5:0.95)能夠達(dá)到20.6 。而且模型權(quán)重文件只有1.8mb。
圖片來自于:
https://openaccess.thecvf.com/content_ICCV_2019/papers/Tian_FCOS_Fully_Convolutional_One-Stage_Object_Detection_ICCV_2019_paper.pdf
這么做的好處是能夠?qū)z測(cè)頭的參數(shù)量降低為不共享權(quán)重狀態(tài)下的 1/5。這對(duì)于光是檢測(cè)頭就擁有數(shù)百通道卷積的大模型來說非常有用,但是對(duì)于輕量化模型來說,共享權(quán)重檢測(cè)頭并沒有很大的意義。由于移動(dòng)端模型推理由 CPU 執(zhí)行計(jì)算,共享權(quán)重并不會(huì)帶來推理過程的加速,而且在檢測(cè)頭非常輕量的情況下,共享權(quán)重使其檢測(cè)能力進(jìn)一步下降,因此項(xiàng)目作者認(rèn)為選擇對(duì)每一層特征使用一組卷積比較合適。
00:53
FPN 層改進(jìn)
摘自于《機(jī)器之心》
目前針對(duì) FPN 的改進(jìn)有許多,如EfficientDet使用了BiFPN,YOLO v4和v5使用了PAN,除此之外還有BalancedFPN等等。BiFPN雖然性能強(qiáng)大,但是堆疊的特征融合操作會(huì)導(dǎo)致運(yùn)行速度降低,而PAN只有自上而下和自下而上兩條通路,非常簡(jiǎn)潔,是輕量級(jí)模型特征融合的好選擇。
原版的PAN和YOLO系列中的PAN都使用了stride=2的卷積進(jìn)行大尺度Feature Map到小尺度的縮放。而該項(xiàng)目出于輕量化的考慮,選擇完全去掉 PAN 中的所有卷積,只保留從骨干網(wǎng)絡(luò)特征提取后的1x1卷積來進(jìn)行特征通道維度的對(duì)齊,上采樣和下采樣均使用插值來完成。與YOLO使用的concatenate操作不同,項(xiàng)目作者選擇將多尺度的Feature Map直接相加,使整個(gè)特征融合模塊的計(jì)算量變得非常小最終得到的極小版 PAN結(jié)構(gòu)非常簡(jiǎn)單:
圖片源自于《https://zhuanlan.zhihu.com/p/306530300》
主干網(wǎng)絡(luò)
項(xiàng)目作者選擇使用ShuffleNetV2 1.0x作為主干網(wǎng)絡(luò),他去掉了該網(wǎng)絡(luò)的最后一層卷積,并且抽取8、16、32倍下采樣的特征輸入到PAN中做多尺度的特征融合。整個(gè)主干模型使用了Torchvision提供的代碼,能夠直接加載Torchvision上提供的imagenet預(yù)訓(xùn)練權(quán)重,對(duì)加快模型收斂起到很大幫助。
3部署
生成部署文件
pth 轉(zhuǎn)化為ONNX
python tools/export.py --cfg_path /config/EfficientNet-Lite/nanodet-EfficientNet-Lite1_416.yml --model_path /model_best/model_best.pth --out_path model_test.onnx --input_shape 416,416
ONNX轉(zhuǎn)化NCNN
1)編譯ncnn
參考 https://blog.csdn.net/weixin_40970506/article/details/1051480612)安裝onnx==1.8.1
3)cd onnx-simplifier-master
python -m onnxsim /nanodet/nanodet-main/tools/model_test.onnx nanodet_sim.onnx
4)轉(zhuǎn)換成bin
cd /ncnn-master/build/tools/onnx
./onnx2ncnn /onnx-simplifier-master/nanodet_sim.onnx nanodet_m.param nanodet_m.bin
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理