【摘要】NanoDet 是一個速度超快和輕量級的移動端 Anchor-free 目標檢測模型。
前言YOLO、SSD、Fast R-CNN等模型在目標檢測方面速度較快和精度較高,但是這些模型比較大,不太適合移植到移動端或嵌入式裝置;輕量級模型 NanoDet-m,對單階段檢測模型三大模組(Head、Neck、Backbone)進行輕量化,目標加檢測速度很快;模型檔案大小僅幾兆(小於4M)。
NanoDet作者開原始碼地址:https://github.com/RangiLyu/nanodet (致敬)
基於NanoDet專案進行小裁剪,專門用來實現Python語言、PyTorch 版本的程式碼地址:https://github.com/guo-pu/NanoDet-PyTorch
下載直接能使用,支援圖片、影片檔案、攝像頭實時目標檢測
先看一下NanoDet目標檢測的效果:
同時檢測多輛汽車:
檢視多目標、目標之間重疊、同時存在小目標和大目標的檢測效果:
NanoDet 模型介紹NanoDet是一種 FCOS 式的單階段 anchor-free 目標檢測模型,它使用 ATSS 進行目標取樣,使用 Generalized Focal Loss 損失函式執行分類和邊框迴歸(box regression)。
1)NanoDet 模型效能
NanoDet-m模型和YoloV3-Tiny、YoloV4-Tiny作對比:
備註:以上效能基於 ncnn 和麒麟 980 (4xA76+4xA55) ARM CPU 獲得的。使用 COCO mAP (0.5:0.95) 作為評估指標,兼顧檢測和定位的精度,在 COCO val 5000 張圖片上測試,並且沒有使用 Testing-Time-Augmentation。
NanoDet作者將 ncnn 部署到手機(基於 ARM 架構的 CPU 麒麟 980,4 個 A76 核心和 4 個 A55 核心)上之後跑了一下 benchmark,模型前向計算時間只要 10 毫秒左右,而 yolov3 和 v4 tiny 均在 30 毫秒的量級。在安卓攝像頭 demo app 上,算上圖片預處理、檢測框後處理以及繪製檢測框的時間,NanoDet也能輕鬆跑到 40+FPS。
2)NanoDet 模型架構
3)NanoDet損失函式
NanoDet使用了李翔等人提出的 Generalized Focal Loss 損失函式。該函式能夠去掉 FCOS 的 Centerness 分支,省去這一分支上的大量卷積,從而減少檢測頭的計算開銷,非常適合移動端的輕量化部署。
詳細請參考:Generalized Focal Loss:Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
4)NanoDet 優勢
NanoDet是一個速度超快和輕量級的移動端 Anchor-free 目標檢測模型。該模型具備以下優勢:
超輕量級:模型檔案大小僅幾兆(小於4M——nanodet_m.pth);速度超快:在移動 ARM CPU 上的速度達到 97fps(10.23ms);訓練友好:GPU 記憶體成本比其他模型低得多。GTX1060 6G 上的 Batch-size 為 80 即可執行;方便部署:提供了基於 ncnn 推理框架的 C++ 實現和 Android demo。基於PyTorch 實現NanoDet基於NanoDet專案進行小裁剪,專門用來實現Python語言、PyTorch 版本的程式碼地址:
1)NanoDet目標檢測效果
同時檢測出四位少年
在複雜街道中,檢測出行人、汽車:
透過測試發現NanoDet確實很快,但識別精度和效果比YOLOv4差不少的。
2)環境引數
測試環境引數
系統:Windows 程式語言:Python 3.8 整合開發環境:Anaconda
深度學習框架:PyTorch1.7.0+cu101 (torch>=1.3 即可) 開發程式碼IDE:PyCharm
開發具體環境要求如下:
Cythontermcolornumpytorch>=1.3torchvisiontensorboardpycocotoolsmatplotlibpyamlopencv-pythontqdm通常測試感覺GPU加速(顯示卡驅動、cudatoolkit 、cudnn)、PyTorch、pycocotools相對難裝一點
Windows開發環境安裝可以參考:
安裝cudatoolkit 10.1、cudnn7.6請參考
https://blog.csdn.net/qq_41204464/article/details/108807165
安裝PyTorch請參考 https://blog.csdn.net/u014723479/article/details/103001861
安裝pycocotools請參考 https://blog.csdn.net/weixin_41166529/article/details/109997105
3)體驗NanoDet目標檢測
下載程式碼,開啟工程
先到githug下載程式碼,然後解壓工程,然後使用PyCharm工具開啟工程;
githug程式碼下載地址:https://github.com/guo-pu/NanoDet-PyTorch
說明:該程式碼是基於NanoDet專案進行小裁剪,專門用來實現Python語言、PyTorch 版本的程式碼
NanoDet作者開原始碼地址:https://github.com/RangiLyu/nanodet (致敬)
使用PyCharm工具開啟工程
選擇開發環境
檔案(file)——>設定(setting)——>專案(Project)——>Project Interpreters 選擇搭建的開發環境;
進行目標檢測
具體命令請參考:
【目標檢測-圖片】
【目標檢測-影片檔案】
檢測的是1080*1920的圖片,很流暢毫不卡頓,就是目前識別精度不太高
4)呼叫模型的核心程式碼
detect_main.py程式碼: