乐趣区

关于SegmentFault:NanoDet这是个小于4M超轻量目标检测模型

摘要: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

开发具体环境要求如下:

  • Cython
  • termcolor
  • numpy
  • torch>=1.3
  • torchvision
  • tensorboard
  • pycocotools
  • matplotlib
  • pyaml
  • opencv-python
  • tqdm

通常测试感觉 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 抉择搭建的开发环境;

而后先点击 Apply,期待加载实现,再点击 OK;

进行指标检测

具体命令请参考:

【指标检测 - 图片】

【指标检测 - 视频文件】

检测的是 1080*1920 的图片,很晦涩毫不卡顿,就是目前辨认精度不太高

4)调用模型的外围代码

detect_main.py 代码:

本文分享自华为云社区《指标检测模型 NanoDet(超轻量,速度很快)介绍和 PyTorch 版本实际》,原文作者:一颗小树 x。

点击关注,第一工夫理解华为云陈腐技术~

退出移动版