轻量级目标检测算法整理

article/2025/6/29 15:31:54

随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端应用的关注度越来越高,尤其是对于如何保持速度和精度上的平衡,也形成了不小的研究热度。本篇整理了一些较新的轻量级目标检测网络,结合我们自己的目标,所选的网络参数量多在4M以下。

1. YOLO Nano

YOLO Nano是一个高度紧凑的网络,它是一个基于YOLO网络的8位量化模型,并在PASCAL VOC 2007数据集上进行了优化。模型大小在4M左右,在计算上需要4.57B推算,性能表现上,在VOC 2007数据集上得到了69.1%的mAP。该网络非常适合边缘设备与移动端的实时检测。

论文地址:https://arxiv.org/abs/1910.01271

代码地址:GitHub - liux0614/yolo_nano: Unofficial implementation of yolo nano

YOLO Nano与Tiny YOLOv2、Tiny YOLOv3的对比:

2. Micro-YOLO

Micro-YOLO基于YOLOv3-Tiny,它在保持检测性能的同时显着减少了参数数量和计算成本。研究者建议将YOLOv3-tiny网络中的卷积层替换为深度分布偏移卷积(DSConv:https://arxiv.org/abs/1901.01928v1)和带有squeezeexcitation块的移动反向瓶颈卷积 (MBConv:主要源自于EfficientNet),并设计渐进式通道级剪枝算法以最小化数量参数并最大化检测性能。

该网络尚未找到开源实现。

论文地址:https://www.scitepress.org/Papers/2021/102344/102344.pdf

Micro-YOLO模型的参数量、乘加数可参见下表:

3. NanoDet

NanoDet是一款超快速、高精度、anchor-free的轻量级检测网络,可实现在移动设备上的实时运行。主要面向工程应用,暂未有论文发表。

 工程链接:GitHub - RangiLyu/nanodet: NanoDet-Plus

该网络具有如下特性:

  • 超轻量级:模型文件只有0.98MB(INT8)或1.8MB(FP16);
  • 推理速度快:在移动ARM CPU上可达到97fps,即每帧10.23ms的推理速度;
  • 高精度:CPU实时推理下最高可达34.3 mAPval@0.5:0.95;
  • 训练友好:比其他模型具有明显小的GPU memory消耗,在GTX1060 6G0上可做到batch-size=80;
  • 方便部署:支持各种后端,包括ncnn、MNN和OpenVINO。并且提供了基于ncnn推理框架的Android演示。

NanoDet-Plus在NanoDet基础上进行了更进一步的优化,增加了AGM(Assign Guidance Module) 和DSLA(Dynamic Soft Label Assigner)模块,使精度在COCO dataset上有了7个点的 mAP提升(与NanoDet相比提升了30%左右),且使得训练和部署更容易。

NanoDet-Plus整体架构图:

模型表现对比:

4. YOLOX-Nano

YOLOX是在YOLO系列的基础上进行了若干改进生成的新的高性能检测器。要点包括:(1) Anchor-free的检测方式;(2) 检测头解耦;(3) 先进的标签分配策略SimOTA;(4)强数据增广;(5) Multi positives。其中,YOLOX-Nano只有0.91M的参数量和1.08G FLOPs,在COCO数据集上获得了25.3%的mAP,比NanoDet高1.8% mAP。

论文地址:https://arxiv.org/abs/2107.08430

代码地址:https://github.com/Megvii-BaseDetection/YOLOX

下图给出了YOLO和YOLOX在检测头结构上的区别:

两种检测头在训练时的收敛情况如下图所示:

论文中给出了YOLOX-Nano与其他轻量级网络的对比。

更多图形化对比:

5. 华为GhostNet

GhostNet通过Ghost模块构建高效的神经网络结构,从而减少神经网络的计算成本。Ghost模块将原始卷积层分为两部分,首先使用较少的卷积核来生成原始特征图,然后,进一步使用廉价变换操作以高效生产更多幻影特征图。在基准模型和数据集上进行的实验表明,该方法是一个即插即用的模块,能够将原始模型转换为更紧凑的模型,同时保持可比的性能。此外,在效率和准确性方面,使用提出的新模块构建的GhostNet均优于最新的轻量神经网络,如MobileNetV3

论文地址:https://arxiv.org/pdf/1911.11907.pdf

代码地址:GhostNet

6. YOLOv5

代码地址:YOLOv5

YOLOv5是一系列目标检测架构的合集,其高精度、低耗时、易训练、易部署、好上手等特点,让YOLOv5的热度一举超过YOLOv4,成为当前目标检测界的主流。并且作者也一直在维护,新版本精度越来越高、速度越来越快、模型越来越小,截至目前为止,YOLOv5已经迭代到了第六个版本。为了应对移动端的部署应用,作者推出了YOLOv5n版本,其参数量只有1.9M,在COCO val2007 dataset上的mAP精度也达到了28.4,而YOLOv5n6YOLOv5n的基础上,mAP又有所提升,达到了34,同时模型参数量提升到3.2M

推理和精度:

7. YOLO-Fastest 

Yolo-Fastest注重的是单核的实时推理性能,在满足实时的条件下的低CPU占用。目前Yolo-Fastest更新到了V2版本。

工程地址:

YOLO-FastestV2

YOLO-Fastest

模型特点:

  • 简单、快速、紧凑、易于移植;
  • 占用资源少,单核性能优异,功耗低;
  • 基于yolo的已知最快最小通用目标检测算法;
  • 适用于所有平台的实时目标检测算法;
  • ARM移动终端优化设计,优化支持NCNN推理框架。
  • 训练速度快,计算能力要求低,训练只需要3GB视频内存,gtx1660ti训练COCO 1 epoch只需4分钟。

V2版本相对于V1版本更快更小:以0.3%的精度损失换取30%的推理速度提高,参数数量减少25%。

数据对比:

 

8. YOLOv5-Lite

YOLOv5-Lite为轻量型的YOLOv5改进版本,整体算法与YOLOv5基本一致,通过修改了YOLOv5的backbone达到模型压缩的目的。根据不同的backbone分别提供了e、s、c、g版本,e版本的backbone为shufflenetv2,s版本的backbone也是shufflenetv2 (与e版本的head不同),c版本的backbone为PPLcnet,g版本的backbone为Repvgg。

工程地址:YOLOv5-Lite

与各个轻量级算法的精度对比:

 各模型的backbone、head以及适用的平台可参加下面几个表:

9. YOLObile

YOLObile,顾名思义,是一种适用于移动设备的轻量级网络,从压缩、编译两个角度,在保证模型准确率的基础上,减少模型的大小,并提升模型在移动设备端的运行速度。新的YOLObile framework将YOLOv4压缩了14倍,准确率保持在49.0mAP。

论文地址:https://arxiv.org/pdf/2009.05697.pdf

代码地址:YOLObile

YOLObile使用了一种新的block-punched剪枝技术,并且为了提高在移动设备上的计算效率,采用了GPU-CPU协作方案以及高级编译器辅助优化。YOLObile在三星Galaxy S20 GPU上达到17FPS的帧率,使用GPU-CPU协作方案可将帧率提升至19.1 FPS,比YOLOv4的速度提升了5倍。

YOLObile与其他模型在精度和速度上的对比:

 

10. PP-PicoDet

PP-PicoDet是基于百度PaddleDetection提出的面向移动端和CPU的轻量级检测模型,在移动设备上具有卓越的性能,成为全新的SOTA轻量级模型,并且一直在更新维护,最新的版本发布于2022年3月20日。

论文地址:https://arxiv.org/abs/2111.00869

工程链接:PaddlePaddle/PaddleDetection

PP-PicoDet模型具有如下特点:

  • 更高的mAP,参数量在1M以内,在输入像素416x416时,mAP超过30;
  • 更快的预测速度,在ARM CPU上可达到150FPS;
  • 部署友好,支持PaddleLite、MNN、MCNN、OpenVINO等平台,支持转换ONNX,并且提供了C++/Python/Android的Demo;
  • 算法创新,在现有SOTA算法上进行了优化,包括ESNet、CSP-PAN、SimOTA等。

模型架构:

模型参数量、FLOPs等数据如下表所示:

更多模型对比:

 

 各移动端模型在COCO数据集上精度mAP和高通骁龙865处理器上预测速度(FPS)对比图:


http://chatgpt.dhexx.cn/article/gwN8U3yq.shtml

相关文章

轻量级网络总结

文章目录 1. SqueezeNet2. ShuffleNet2.1 v12.2 v2 3. MobileNet3.1 v13.2 v23.3 v3 4. GhostNet4.1 v14.2 v2 1. SqueezeNet SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size 考虑到卷积层的参数量为 C i n ∗ C o u t ∗ K ∗ K …

轻量级c语言开发环境,几款轻量级的C/C++编写软件

因为有同学问我写C用什么软件好点。。。其实这些软件各有优势&#xff0c;只不过看自己需要罢了。 我下了个VS 2017.....不过太大了点。算下来20G左右&#xff0c;硬盘小点的笔记本直接没法玩......(我的就没问题&#xff0c;嘻嘻嘻)&#xff0c;要是你想用VS2017&#xff0c;我…

Synchronized原理(轻量级锁篇)

Synchronized原理&#xff08;轻量级锁篇&#xff09; 简述 介绍 轻量级锁是JDK1.6之中加入的新型锁机制&#xff0c;它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的&#xff0c;因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是&#xff0…

轻量级 android模拟器,【分享中控】轻量级中控系统

先上图: 这是一个简单的模拟器本地中控,自恋的说非常好用,它帮助了我成功开发无数款脚本,已经在多台电脑上稳定运行数月。 虽然不算强大,但是足以应付大部分的脚本开发需求。 [hide]注意 1. 使用此软件的前提是安装好 .Net Framework 4.5 运行环境,Win10自带此环境无需安…

浅析轻量级锁

从轻量级锁 来看锁机制。 (目前 上的唯一一张图。= =。 因为有些东西没有图的话 是很难理清楚的 - - )对象是否被某个线程的锁定的依据是, 对象头中记录的信息。 mark word 也叫对象标志词。对象头的信息内容是变化的,变化后是根据不同的锁标志位来描述对应的信息。 比如当…

14种轻量级网络综述 — 主干网络篇

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨VincentLee 来源丨晓飞的算法工程笔记 编辑丨极市平台 导读 早期的卷积神经很少考虑参数量和计算量的问题&#xff0c;由此轻量级网络诞生&#xff0c;其旨在保持模型精度基础上近一步减少模型参数量和…

神经网络学习小记录47——ShuffleNetV2模型的复现详解

神经网络学习小记录47——ShuffleNetV2模型的复现详解 学习前言什么是ShuffleNetV2ShuffleNetV21、所用模块2、网络整体结构 网络实现代码 学习前言 据说ShuffleNetV2比Mobilenet还要厉害&#xff0c;我决定好好学一下。 什么是ShuffleNetV2 这篇是ECCV2018关于轻量级模型的…

一个简单的dos命令实现无限弹窗,卡死电脑

教大家一个简单的dos命令实现无限弹窗&#xff0c;从而实现卡死电脑。 1.新建一个文本文件 2.在该文件里面输入 : start start cmd goto start 3.保存后并把此文件的.txt后缀改为.bat 提示&#xff1a;如果你的计算机不显示后缀拓展名&#xff0c;首先应先让显示拓展名再进行操…

Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)

Pycharm制作搞怪弹窗(声音强制最大&#xff0c;屏幕亮度强制最亮&#xff0c;按钮躲避&#xff0c;弹窗炸弹&#xff09; 闲来无聊用python制作了一个搞怪的桌面弹窗程序&#xff0c;惊喜连连哦 运行动图 实现代码&#xff1a; import tkinter as tk import tkinter.font as…

Charles抓包出现弹窗问题或者无法抓包https问题汇总

一、重要问题总结 1、https抓包需要在电脑端和移动端都装上相应的证书&#xff01;不同的电脑、手机需要的证书可能不一样&#xff0c;如果不能正常工作&#xff0c;建议重新安装。 2、iOS10及以上系统&#xff0c;需要在安装charles证书后 在设置->通用->关于本机->…

python制作恶搞_Pycharm制作搞怪弹窗的实现代码

闲来无聊用python制作了一个搞怪的桌面弹窗程序,惊喜连连哦 运行动图 实现代码: import tkinter as tk import tkinter.font as tkFont # 引入字体模块 import time import sys import pygame import random import threading import win32api import wmi from tkinter.messa…

用Python写一个假的病毒炸弹(整蛊)

病毒炸弹 现在我们用Python来写一个假的病毒炸弹 弹窗实现 import tkinter as tk import random import threading import timedef boom():window tk.Tk()width window.winfo_screenwidth()height window.winfo_screenheight()a random.randrange(0, width)b random.ra…

bat 炸弹升级

转自&#xff1a;http://digi.163.com/15/0320/06/AL4LP0QD0016192R.html 第1页&#xff1a;什么是批处理炸弹&#xff1f; 最近网上流传一个叫做《大哥别杀我》视频纷纷遭到网友模仿&#xff0c;虽然我们都知道视频里出现的人大多都是群众演员&#xff0c;但还是会被视频中各种…

xss完成浏览器视窗炸弹

无聊&#xff0c;&#xff0c;&#xff0c;发个文章。 这个就是很简单的视窗炸弹&#xff0c;放在自己的 xss平台上&#xff0c;执行就会一直打开页面。初学者可以 试一试。 function WindowBomb() { var iCounter 0 // dummy counter while (true) { window.open(“https:/…

Linux fork炸弹以及预防办法

fork炸弹是什么&#xff1f; fork炸弹以极快的速度创建大量进程&#xff08;进程数呈以2为底数的指数增长趋势&#xff09;&#xff0c;并以此消耗系统分配予进程的可用空间使进程表饱和&#xff0c;而系统在进程表饱和后就无法运行新程序&#xff0c;除非进程表中的某一进程终…

弹窗炸弹恶搞整人

1.创建一个记事本文件 2.编辑文件内容 在文件中输入以下内容并保存 :start start cmd goto start3.实现弹窗炸弹 把文件扩展名改为.bat。 双击执行&#xff08;慎用&#xff09;&#xff0c;效果如下&#xff1a; 4.解除无线弹窗的方法 方法一&#xff1a; 新建个记事本…

python弹窗炸弹

当我们看某人不爽时&#xff0c;可以用这个&#xff1a; ​ import tkinter as tk import random import threading import timedef dow():window tk.Tk()window.title(你是SB)window.geometry("200x50" "" str(random.randrange(0, window.winfo_scre…

无限弹窗(bat代码 整人恶作剧)

炸弹弹窗&#xff0c;是使用bat制作的一个小程序&#xff0c;效果就是执行程序后会一直不停地弹出窗口&#xff0c;用来恶作剧。下面我们就来看看详细的教程。 打开文件&#xff0c;输入以下代码&#xff1a; :start start cmd goto start 点击文件&#xff0c;选择另存为 把文…

bat代码雨代码流星_怎么制作无限弹窗效果? 限弹窗代码bat文件分享

炸弹弹屏,也可以叫炸弹弹窗,是可以使用txt制作的一个小程序,效果就是执行程序后会一直不停地弹出窗口,就好像炸弹轰炸一样,如图所示,用来恶作剧很好玩。该怎么制作这个无限弹窗效果呢?下面我们就来看看详细的教程。 1、首先,如图所示,我们打开电脑,在桌面鼠标右键,新…

分享森林火灾年鉴统计平台

https://www.yearbookchina.com 可以参观一下&#xff0c;里面有一部分研究人员能用得上的数据