
超快速和高精度轻巧的无锚对象检测模型。在移动设备上实时实时。

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