首页 > 编程语言 >NanoDet-Plus: 超快速轻量级无锚点目标检测模型

NanoDet-Plus: 超快速轻量级无锚点目标检测模型

时间:2024-10-09 17:35:03浏览次数:1  
标签:示例 demo 模型 Plus 无锚 NanoDet 轻量级

NanoDet-Plus:超快速轻量级无锚点目标检测模型
NanoDet-Plus是一个超快速、高精度的轻量级无锚点目标检测模型,由RangiLyu开发并开源。它在保持高检测精度的同时,具有极小的模型体积和极快的推理速度,可以在移动设备上实现实时目标检测。

主要特点
NanoDet-Plus具有以下突出特点:

超轻量级:模型文件仅980KB(INT8)或1.8MB(FP16)
超快速:在移动ARM CPU上可达97FPS(10.23ms)
高精度:在COCO数据集上可达34.3 [email protected]:0.95,同时保持实时性能
训练友好:相比其他模型GPU显存占用更少,GTX1060 6G可支持batch size=80
易于部署:支持ncnn、MNN、OpenVINO等多种后端,提供基于ncnn的Android demo
NanoDet-Plus架构图

技术原理
NanoDet是一种FCOS风格的单阶段无锚点目标检测模型,使用广义焦点损失(Generalized Focal Loss)作为分类和回归损失。

在NanoDet-Plus中,作者提出了一种新的标签分配策略,包含一个简单的分配指导模块(AGM)和一个动态软标签分配器(DSLA),用于解决轻量级模型训练中的最优标签分配问题。此外还引入了一种轻量级特征金字塔Ghost-PAN来增强多层特征融合。这些改进使NanoDet的检测精度在COCO数据集上提高了7个mAP。

性能对比
下表对比了NanoDet-Plus与其他目标检测模型在COCO数据集上的性能:

模型 分辨率 mAP CPU延迟 ARM延迟 FLOPS 参数量 模型大小
NanoDet-Plus-m 320320 27.0 5.25ms 11.97ms 0.9G 1.17M 2.3MB(FP16) / 1.2MB(INT8)
NanoDet-Plus-m 416
416 30.4 8.32ms 19.77ms 1.52G 1.17M 2.3MB(FP16) / 1.2MB(INT8)
YOLOv4-Tiny 416416 21.7 - 32.81ms 6.96G 6.06M 23.0MB
YOLOX-Nano 416
416 25.8 - 23.08ms 1.08G 0.91M 1.8MB(FP16)
可以看到,NanoDet-Plus在保持较高精度的同时,具有更小的模型体积和更快的推理速度。

部署示例
NanoDet提供了多种部署方式的示例:

Android demo
Android demo

Android demo项目位于demo_android_ncnn文件夹中。

NCNN C++示例
基于ncnn的C++示例位于demo_ncnn文件夹中。

MNN示例
使用阿里巴巴MNN框架的推理示例位于demo_mnn文件夹中。

OpenVINO示例
使用Intel OpenVINO的推理示例位于demo_openvino文件夹中。

Web浏览器示例
可以在这里体验基于WebAssembly的在线demo。

PyTorch示例
项目还提供了基于PyTorch的推理示例,可以用于快速验证模型效果。

如何使用
安装依赖
NanoDet需要以下环境:

Linux或MacOS
CUDA >= 10.2
Python >= 3.7
PyTorch >= 1.10.0, <2.0.0
克隆代码并安装
git clone https://github.com/RangiLyu/nanodet.git
cd nanodet
pip install -r requirements.txt
准备数据集
NanoDet支持COCO、Pascal VOC和YOLO格式的数据集。

修改配置文件
在config文件夹中复制并修改示例配置文件,设置数据路径、模型参数等。

开始训练
python tools/train.py CONFIG_FILE_PATH
导出模型并部署
训练完成后,可以将模型导出为ONNX格式,然后转换为各种推理框架支持的格式进行部署。

总结
NanoDet-Plus作为一个超快速、高精度的轻量级目标检测模型,在移动端和嵌入式设备上具有广阔的应用前景。它的开源不仅为研究人员提供了宝贵的学习资源,也为工业界提供了一个实用的目标检测解决方案。未来,随着移动设备算力的不断提升,相信会有更多基于NanoDet的创新应用出现。

如果您的项目中使用了NanoDet,不要忘记引用原作者的工作:

@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}
}
NanoDet的成功离不开开源社区的贡献,在此也要感谢ncnn、mmdetection等优秀的开源项目为NanoDet的开发提供了重要支持。
文章链接:www.dongaigc.com/a/nanodet-plus-fast-lightweight-object-detection
https://www.dongaigc.com/a/nanodet-plus-fast-lightweight-object-detection
www.dongaigc.com/p/RangiLyu/nanodet
https://www.dongaigc.com/p/RangiLyu/nanodet

标签:示例,demo,模型,Plus,无锚,NanoDet,轻量级
From: https://www.cnblogs.com/dongai/p/18454746

相关文章

  • MyBatis-Plus 的核心插件及其使用介绍
    MyBatis-Plus是基于MyBatis的增强工具,为简化MyBatis的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了CRUD(Create,Read,Update,Delete)操作的简化方法以及多种实用插件。以下是MyBatis-Plus的核心插件及其使用介绍:1.分页插件(PaginationInt......
  • 20241009--Java--MyBatis-Plus快速上手(1)
     一、MyBatis-Plus是什么?MyBatis是一个流行的开源持久层框架,用于简化数据库交互。它提供了一个简单的方法来执行数据库操作,同时保留了SQL的灵活性。MyBatis曾经被称为iBatis,是一个半自动化的ORM(Object-RelationalMapping对象关系映射)框架,它允许开发者将Java对象映......
  • 铁威马新品F8 SSD Plus:假期出行的完美存储“伙伴”
    国庆小长假刚刚结束大家都去哪里玩了呢?假期出行如何安全、便捷地存储和管理大量的照片、视频和其他文件也是一个不容忽视的问题 铁威马秋季系列新品NAS的发售为我们提供了多种选择  而F8SSDPlus性能与便携的完美融合成为假期出行不可或缺的“好伙伴” F8......
  • Spring Boot、MyBatis、MyBatis-Plus 依赖版本对应关系总结
    SpringBoot、MyBatis、MyBatis-Plus依赖版本对应关系总结在使用SpringBoot、MyBatis和MyBatis-Plus时,确保它们的依赖版本兼容是项目正常运行的关键。版本不兼容可能会导致诸如sqlSessionFactory、sqlSessionTemplate未正确配置等错误。因此,合理选择各个依赖的版本......
  • YOLO11改进|卷积篇|引入轻量级自适应提取卷积LAE
    目录一、【LAE】卷积1.1【LAE】卷积介绍1.2【LAE】核心代码二、添加【LAE】卷积机制2.1STEP12.2STEP22.3STEP32.4STEP4三、yaml文件与运行3.1yaml文件3.2运行成功截图一、【LAE】卷积1.1【LAE】卷积介绍下图是【LAE】卷积的结构图,让我们简单分析一下运行过程......
  • element-plus如何使用可编辑的table
    ElementPlus的Table组件本身不提供内置的编辑功能。但是可以通过结合Table组件和Form组件来实现行级别的可编辑功能<template><el-table:data="tableData"style="width:100%"><el-table-columnprop="date"label="日期"width="180&quo......
  • CherryPy :一个轻量级的 Python Web 框架
    CherryPy是一个用于构建Web应用的微框架。它通过简洁的API和强大的功能,使开发者能够快速创建高性能的Web应用。在生物信息开发中,数据库搭建和模型部署等场景可能会用到,因此记录下。学习资源官方文档:https://docs.cherrypy.dev/en/latest/GitHub项目:https://github.......
  • Linux_权限理解(详细PLUS)Gu
    1.用户Linux下有两种用户:超级用户(root)和普通用户;超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是"#",普通用户的命令提示符是"$"超级用户:普通用户:2.用户切换用户间切换:su+用户名//可用exit回退到原用户1)普......
  • 完全私有化部署!一款开源轻量级网站防火墙!
    大家好,我是Java陈序员。今天,给大家介绍一款开源轻量级网站防火墙!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍SamWaf——是一款适用于小公司、工作室和个人网站的开源轻量级网站防火墙,完全私有化部署,数据加密且仅......
  • Linux_权限理解(详细PLUS)
    1.用户Linux下有两种用户:超级用户(root)和普通用户;超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是"#",普通用户的命令提示符是"$"超级用户:普通用户:2.用户切换用户间切换:su+用户名//可用exit回退到原用户1)普通......