
超快速和高精度輕巧的無錨對象檢測模型。在移動設備上實時實時。

Nanodet是FCOS風格的一階段無錨對象檢測模型,該模型使用廣義局灶性損失作為分類和回歸損失。
在Nanodet-Plus中,我們提出了一種新穎的標籤分配策略,該策略具有簡單的分配指導模塊(AGM)和動態軟標籤分配程序(DSLA),以解決輕量級模型培訓中的最佳標籤分配問題。我們還引入了一種名為Ghost-Pan的輕型金字塔,以增強多層功能融合。這些改進在可可數據集上通過7地圖提高了先前的Nanodet的檢測準確性。
nanodet-plus知乎中文介紹
納米特知乎中文介紹
QQ交流群:908606542(答案:煉丹)
| 模型 | 解決 | 地圖閥 0.5:0.95 | CPU延遲 (i7-8700) | 手臂潛伏期 (4XA76) | 拖鞋 | 參數 | 型號大小 |
|---|---|---|---|---|---|---|---|
| Nanodet-M | 320*320 | 20.6 | 4.98ms | 10.23ms | 0.72克 | 0.95m | 1.8MB(FP16) | 980KB(INT8) |
| Nanodet-Plus-M | 320*320 | 27.0 | 5.25ms | 11.97ms | 0.9克 | 117m | 2.3MB(FP16) | 1.2MB(INT8) |
| Nanodet-Plus-M | 416*416 | 30.4 | 8.32ms | 19.77ms | 1.52克 | 117m | 2.3MB(FP16) | 1.2MB(INT8) |
| Nanodet-Plus-M-1.5x | 320*320 | 29.9 | 7.21ms | 15.90ms | 1.75克 | 244萬 | 4.7MB(FP16) | 2.3MB(INT8) |
| Nanodet-Plus-M-1.5x | 416*416 | 34.1 | 11.50ms | 25.49ms | 2.97克 | 244萬 | 4.7MB(FP16) | 2.3MB(INT8) |
| yolov3小 | 416*416 | 16.6 | - | 37.6ms | 5.62克 | 886萬 | 33.7MB |
| yolov4小 | 416*416 | 21.7 | - | 32.81ms | 6.96克 | 6.06m | 23.0MB |
| Yolox-Nano | 416*416 | 25.8 | - | 23.08ms | 1.08克 | 0.91m | 1.8MB(FP16) |
| yolov5-n | 640*640 | 28.4 | - | 44.39ms | 4.5克 | 1.9m | 3.8MB(FP16) |
| FBNETV5 | 320*640 | 30.4 | - | - | 1.8克 | - | - |
| 動員 | 320*320 | 25.6 | - | - | 0.9克 | - | - |
下載預訓練的模型,並在模型動物園或發行文件中找到更多模型
基於NCNN的Kirin 980(4XA76+4XA55)ARM CPU測量了ARM性能。您可以使用NCNN_ANDROID_BENCHMARC測試手機上的延遲。
Intel CPU性能是基於OpenVino的Intel Core-I7-8700測量的。
Nanodet地圖(0.5:0.95)在COCO Val2017數據集上進行了驗證,沒有測試時間增加。
Yolov3和Yolov4地圖是指縮放Yolov4:縮放跨階段部分網絡。
[2023.01.20]升級到Pytorch-Lightning-1.9。最小Pytorch版本升級到1.10。支持FP16培訓(感謝 @Crisp-Snakey)。支持忽略標籤(謝謝 @Zero0kiriyu)。
[2022.08.26]升級到Pytorch-Lightning-1.7。最低Pytorch版本升級到1.9。要使用以前版本的Pytorch,請安裝nanodet <= v1.0.0-alpha-1
[2021.12.25] Nanodet-Plus釋放!添加AGM (分配指導模塊)& DSLA (動態軟標籤分配器)以改進7個地圖,僅成本一點。
在“更新說明”中查找更多更新說明。

Android Demo Project在Demo_android_ncnn文件夾中。請參閱Android演示指南。
這是一個更好的實施NCNN-android-nanodet
基於NCNN的C ++演示位於Demo_ncnn文件夾中。請參閱CPP演示指南。
使用Alibaba的MNN框架的推理在Demo_mnn文件夾中。請參閱MNN演示指南。
使用OpenVino的推論位於Demo_openvino文件夾中。請參閱OpenVino演示指南。
https://nihui.github.io/ncnn-webassembly-nanodet/
首先,安裝要求和設置納米特安裝指南。然後從這裡下載可可預處理
可可預處理檢查站
預先訓練的重量由config/nanodet-plus-m_416.yml訓練。
python demo/demo.py image --config CONFIG_PATH --model MODEL_PATH --path IMAGE_PATHpython demo/demo.py video --config CONFIG_PATH --model MODEL_PATH --path VIDEO_PATHpython demo/demo.py webcam --config CONFIG_PATH --model MODEL_PATH --camid YOUR_CAMERA_ID此外,我們在此處提供了一個筆記本,以演示如何使其與Pytorch一起使用。
conda create -n nanodet python=3.8 -y
conda activate nanodetconda install pytorch torchvision cudatoolkit=11.1 -c pytorch -c conda-forgegit clone https://github.com/RangiLyu/nanodet.git
cd nanodetpip install -r requirements.txtpython setup.py developNanodet支持各種骨架。轉到配置文件夾查看示例培訓配置文件。
| 模型 | 骨幹 | 解決 | 可可地圖 | 拖鞋 | 參數 | 預訓練重量 |
|---|---|---|---|---|---|---|
| Nanodet-M | Shufflenetv2 1.0x | 320*320 | 20.6 | 0.72克 | 0.95m | 下載 |
| Nanodet-Plus-M-320(新) | Shufflenetv2 1.0x | 320*320 | 27.0 | 0.9克 | 117m | 重量|檢查點 |
| Nanodet-Plus-M-416(新) | Shufflenetv2 1.0x | 416*416 | 30.4 | 1.52克 | 117m | 重量|檢查點 |
| Nanodet-Plus-M-1.5x-320(新) | ShuffLenetv2 1.5倍 | 320*320 | 29.9 | 1.75克 | 244萬 | 重量|檢查點 |
| nanodet-plus-m-1.5x-416(新) | ShuffLenetv2 1.5倍 | 416*416 | 34.1 | 2.97克 | 244萬 | 重量|檢查點 |
注意: Weight和Checkpoint之間的差異是重量僅在推理時間內提供參數,但是檢查點包含訓練時間參數。
舊模型動物園
| 模型 | 骨幹 | 解決 | 可可地圖 | 拖鞋 | 參數 | 預訓練重量 |
|---|---|---|---|---|---|---|
| Nanodet-M-416 | Shufflenetv2 1.0x | 416*416 | 23.5 | 1.2克 | 0.95m | 下載 |
| Nanodet-M-1.5x | ShuffLenetv2 1.5倍 | 320*320 | 23.5 | 1.44克 | 208m | 下載 |
| Nanodet-M-1.5x-416 | ShuffLenetv2 1.5倍 | 416*416 | 26.8 | 2.42克 | 208m | 下載 |
| Nanodet-M-0.5x | Shufflenetv2 0.5倍 | 320*320 | 13.5 | 0.3g | 0.28m | 下載 |
| 納米特-T | Shufflenetv2 1.0x | 320*320 | 21.7 | 0.96克 | 136萬 | 下載 |
| Nanodet-G | 自定義CSP網 | 416*416 | 22.9 | 4.2克 | 3.81m | 下載 |
| 納米效率 | 效率網絡-lite0 | 320*320 | 24.7 | 1.72克 | 3.11m | 下載 |
| 納米效率 | 效率網絡lite1 | 416*416 | 30.3 | 4.06克 | 4.01m | 下載 |
| 納米效率 | 效率網絡lite2 | 512*512 | 32.6 | 7.12克 | 4.71m | 下載 |
| Nanodet-Repvgg | repvgg-a0 | 416*416 | 27.8 | 11.3g | 675m | 下載 |
準備數據集
如果您的數據集註釋是Pascal VOC XML格式,請參閱config/nanodet_custom_xml_dataset.yml
否則,如果您的數據集註釋是yolo格式(darknet txt),請參閱config/nanodet-plus-m_416-yolo.yml
或將數據集註釋轉換為MS Coco格式(可可註釋格式的詳細信息)。
準備配置文件
在Config/ Folder中復制並修改示例YML配置文件。
將Save_dir更改為您要保存模型的位置。
更改模型 - > Arch->頭部中的num_classes 。
在數據 - > train和data-> val中更改圖像路徑和註釋路徑。
在設備中設置GPU ID,數字工人和批處理大小以適合您的設備。
根據您的數據集設置total_epochs , lr和lr_schedule並進行批處理。
如果要修改網絡,數據增強或其他內容,請參閱配置文件詳細信息
開始訓練
Nanodet現在使用Pytorch Lightning進行訓練。
對於單GPU或多個GPU,運行:
python tools/train.py CONFIG_FILE_PATH可視化日誌
張板日誌保存在您在配置文件中設置的save_dir中。
要可視化張板日誌,請運行:
cd < YOUR_SAVE_DIR >
tensorboard --logdir ./Nanodet提供了多餘的C ++演示,包括NCNN,OpenVino和MNN。還有一個基於NCNN庫的Android演示。
要將nanodet pytorch型號轉換為ncnn,您可以選擇以這種方式:pytorch-> onnx-> ncnn
要導出ONNX型號,請運行tools/export_onnx.py 。
python tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH}請參閱demo_ncnn。
請參閱Demo_openvino。
請參閱demo_mnn。
請參考Android_demo。
如果您發現此項目對您的研究有用,請考慮引用:
@misc { =nanodet ,
title = { NanoDet-Plus: Super fast and high accuracy lightweight anchor-free object detection model. } ,
author = { RangiLyu } ,
howpublished = { url{https://github.com/RangiLyu/nanodet} } ,
year = { 2021 }
}https://github.com/tencent/ncnn
https://github.com/open-mmlab/mmdetection
https://github.com/implus/gfocal
https://github.com/cmdbug/yolov5_ncnn
https://github.com/rbgirshick/yacs