天天看点

目标检测轻量级NanoDet 模型

近日,GitHub 上出现了一个项目 nanodet,它开源了一个移动端实时的 Anchor-free 检测模型,希望能够提供不亚于 YOLO 系列的性能,而且同样方便训练和移植。该项目上线仅两天,Star 量已经超过 500。

项目地址:https://github.com/RangiLyu/nanodet

NanoDet 模型介绍

NanoDet 是一个速度超快和轻量级的移动端 Anchor-free 目标检测模型。该模型具备以下优势:

  • 超轻量级:模型文件大小仅 1.8m;
  • 速度超快:在移动 ARM CPU 上的速度达到 97fps(10.23ms);
  • 训练友好:GPU 内存成本比其他模型低得多。GTX1060 6G 上的 Batch-size 为 80 即可运行;
  • 方便部署:提供了基于 ncnn 推理框架的 C++ 实现和 Android demo。

模型性能

目前开源的 NanoDet-m 模型在 320x320 输入分辨率的情况下,整个模型的 Flops 只有 0.72B,而 yolov4-tiny 则有 6.96B,小了将近十倍。模型的参数量也只有 0.95M,权重文件在使用 ncnn optimize 进行 16 位存储之后,只有 1.8mb。

尽管模型非常的轻量,但是它的性能不容小觑。在与其他模型进行比较时,项目作者选择使用 COCO mAP (0.5:0.95) 作为评估指标,兼顾检测和定位的精度,在 COCO val 5000 张图片上测试,并且没有使用 Testing-Time-Augmentation。在这种设置下,320 分辨率输入能够达到 20.6 的 mAP,比 tiny-yolov3 高 4 分,只比 yolov4-tiny 低 1 个百分点。在将输入分辨率与 YOLO 保持一致,都使用 416 输入的情况下,NanoDet 与 yolov4-tiny 得分持平。具体结果如下表所示:

目标检测轻量级NanoDet 模型

以上性能基于 ncnn 和麒麟 980 (4xA76+4xA55) ARM CPU 获得。

此外,项目作者将 ncnn 部署到手机(基于 ARM 架构的 CPU 麒麟 980,4 个 A76 核心和 4 个 A55 核心)上之后跑了一下 benchmark,模型前向计算时间只要 10 毫秒左右,而 yolov3 和 v4 tiny 均在 30 毫秒的量级。在安卓摄像头 demo app 上,算上图片预处理、检测框后处理以及绘制检测框的时间,NanoDet 也能轻松跑到 40+FPS。

继续阅读