热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

轻量型目标检测算法一次看个够

序言不知道大家有没有发现,近两年目标检测算法发展非常的快,恍惚

序言

不知道大家有没有发现,近两年目标检测算法发展非常的快,恍惚一看,单阶段算法几乎统一了目标检测,各种高性能的目标检测算法层出不穷,印象中是在YOLOv4出来后,基于YOLO的改进变得一发不可收拾,各种改进版本精度越来越高、速度越来越快,同时模型体积也越来越小,越来越多的轻量型模型涌现,更适合移动端部署。这篇文章花点时间来盘点一下一些在github上比较火的轻量型目标检测算法,收藏也方便以后工程中实践。

一、yolov5

github:https://github.com/ultralytics/yolov5

说到目前最火的目标检测算法,yolov5绝对当仁不让,如果说yolov4是导火线,那yolov5就是引爆目标检测界的那个火石,记得当初刚出来的时候,还被大家扣上一个“名不正,言不顺”的帽子,因为没有论文产出,甚者很多工作和yolov4高度重合,很多业内人事都不愿意承认它作为yolo系列的“正统”,但是随着时间的演进,yolov5逐渐为自己证明,其高精度、低耗时、易训练、易部署、好上手等特点,让yolov5的热度一举超过yolov4,成为当前目标检测界的主流,并且作者也一直在维护,新版本精度越来越高、速度越来越快、模型越来越小,截至目前为止,yolov5已经迭代到了第六个版本。

关于yolov5的原理我就不多介绍了,hub中提供了五个基线版本,x、l、m、s、n,前四个模型是一直都有的,虽然说它们模型体积相对于其他算法而言已经很小了,但是对于移动端而言还是太大了一些,所以作者推出了了n版本,专门为了移动端设计,参数量仅为1.9M,map精度也达到了28.4,各个模型精度指标如下所示:
在这里插入图片描述

二、yolox

github:https://github.com/Megvii-BaseDetection/YOLOX

yolox是作为今年的yolo系列的后起之秀,一出来各种夸张的标题就把我吓到了(不得不说有些公众号的标题党太恶心了),还好自身实力过硬,也收割了一波粉丝,最关键的是把部署的代码都帮你写好了,可谓业界良心,这也为了后面的目标检测算法竖立了标杆。

yolox的原理网上也很多,篇幅原因我就不详细讲解了,来看下yolox的精度指标,与yolov5对比,似乎每个版本的精度都有很大提升,实际项目情况我也没有对比过,不过在发布后的大半年时间里业内认可度非常不错,两者都是非常优秀的算法,只能说萝卜青菜,各有所爱了,小孩子才做选择,我全都要!!
在这里插入图片描述
因为本文主要介绍的是轻量型模型,所以重点关注轻量的模型Nano和tiny版本,nano版本在0.91M参数量的情况下,416尺度推理精度达到了25.8,还是非常不错的;再看tiny版本,tiny版本一直是yolo系列中的一个特色,所以yolox也继续发扬了这一项工作,在参数量减少的情况下,大幅提高了tiny版本的精度,达到了32.8,要知道18年yolov3刚出来的时候,最高的精度也才33,现在tiny版本的精度已经赶上v3正版了,不得不感叹这两年的目标检测技术发展的迅猛,隐约有种被卷死的不详预感,所以各种同学一定要坚持学习啊,千万不要懈怠了。在这里插入图片描述

三、nanodet

github:https://github.com/RangiLyu/nanodet

YOLO之外的另一选择,手机端97FPS的Anchor-Free目标检测模型NanoDet现已开源

超简单辅助模块加速训练收敛,精度大幅提升!移动端实时的NanoDet升级版NanoDet-Plus来了!

nanodet去年刚出来的时候非常的火,基于FCOS改进的anchor-free算法,在速度和精度上都有很好的权衡,并且部署比较友好,当时我也试过这个模型,但是训练出来的效果并不是特别好,所以就一直没怎么用,就当我快忘了它的时候,NanoDet-Plus版本出来了!!

超简单辅助模块加速训练收敛,精度大幅提升!与上一代的NanoDet相比,在仅增加1毫秒多的延时的情况下,精度提升了30%。与YOLOv5-n, YOLOX-Nano等其他轻量级模型相比,在精度和速度上也都高了不少!同时NanoDet-Plus改进了代码和架构,提出了一种非常简单的训练辅助模块,使模型变得更易训练!同时新版本也更易部署,同时提供ncnn、OpenVINO、MNN以及安卓APP的Demo!!

nanodet-plus精度指标看下图,以1.17M的参数量,在416大小的推理下,map达到了30.4,1.5x的版本甚至达到了34.1,且参数量仅为2.44M:
在这里插入图片描述

四、PicoDet

github:https://github.com/PaddlePaddle/PaddleDetection

ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)

算法是好算法,但是百度的宣传标题一如既往的夸张,以至于刚出来就被很多人吐槽,不过无伤大雅,算法本身实力够硬,宣传夸张点也不影响我们学习。

作者研究了anchor-free 策略在轻量级目标检测模型中的适用性,增强了Backbone结构,设计了Neck的轻量化结构,提高了网络的特征提取能力。改进了标签分配策略和损失函数,使训练更加稳定和高效。

通过这些优化,创建了一个新的实时物体检测系列架构,名为PP-PicoDet,它在移动设备上实现了优越的物体检测性能。与其他流行的模型相比,该模型架构在准确性和延迟之间实现了更好的权衡。PicoDet-S只有0.99M参数,mAP值为30.6%,与YOLOX-Nano相比,mAP提高了4.8%,同时移动CPU延迟降低了55%,与NanoDet相比,mAP提高了7.1%。当输入尺寸为320时,在移动ARM CPU上达到123 FPS(使用Paddle Lite时达到150 FPS)。PicoDet-L仅3.3M参数的mAP值为40.9%,mAP值提高了3.7%,比YOLOv5s快44%。如下图所示,本文模型远远优于轻量级目标检测的最新结果。
在这里插入图片描述
这项工作是百度开源的项目,pp-picoDet也加入了PaddleDetetion的大家庭,如果想用的话需要先熟悉一下paddlepaddle框架,不过说句题外话,paddlepaddle最近的开源工作都做的非常多,基本上覆盖了各个领域,并且效果也停不错的,奈何框架生态一直不太行。

五、yolo-fastest

github:https://github.com/dog-qiuqiu/Yolo-Fastest

github:https://github.com/dog-qiuqiu/Yolo-FastestV2

Yolo-Fastest:超超超快的开源ARM实时目标检测算法

Yolo-FastestV2:更快,更轻,移动端可达300FPS,参数量仅250k

yolo-fastest应该是第一个把yolo系列参数量逼到1M以内的目标检测算法,由记得刚出来的时候非常的震惊,模型大小仅为1.3M,让我第一次直观的感受到原来目标检测算法也可以设计得这么小。感兴趣的可以看上面两篇文章介绍,目前已经更新到V2版本,精度指标如下:

在这里插入图片描述
在这里插入图片描述

六、yolov5-lite

github:https://github.com/ppogg/YOLOv5-Lite

YOLOv5-Lite:更轻更快易于部署的YOLOv5

一个非常优秀的轻量型yolov5改进版本,整体算法与yolov5基本一致,通过修改了yolov5的backbone达到了模型压缩的目的。

根据不同的backbone分别提供了s、c、g版本,s版本的backbone为shufflenet,c版本的backbone为LCNet,g版本的backbone为Repvgg,与各个轻量型算法的精度对比如下:
在这里插入图片描述
这个项目用起来比较友好,开箱方式与yolov5一样,上手起来比较简单,精度也不错,非常值得学习。

七、MutualGuide

github:https://github.com/ZHANGHeng19931123/MutualGuide

【BMVC2021】新一代紧凑型目标检测器MutualGuide

这个项目是偶然间看到了,其实也不算是轻量型吧,因为提供的各个模型参数量其实还是挺大的,但是因为使用的backbone都是偏轻量的,所以还是决定把它算进来。

项目特点:

  • 相较于众多已经存在的general目标检测框架,MutualGuide专门针对嵌入式设备设计,在检测速度上有很大优势。
  • 支持RetinaNet、FCOS、YOLOF等多种检测头,ResNet、VGG、RepVGG、ShuffleNet等多种特征提取网络,灵活客制化你自己的模型结构。
  • 融入Mixup、EMA、Cosine lr decay、Context Enhancement Module、GFocal
    loss、Balanced L1 loss、GIOU loss等提升检测性能的工程技巧。
  • 支持custom数据集训练与测试、支持混合精度训练和TensorRT推理加速。
  • 项目结构清晰,适合初学者入门并熟悉目标检测的pipeline。
    在这里插入图片描述

八、YOLOv6

github:https://github.com/meituan/YOLOv6
YOLOv6:又快又准的目标检测框架开源啦

YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。本框架同时专注于检测的精度和推理效率,在工业界常用的尺寸模型中:YOLOv6-nano 在 COCO 上精度可达 35.0% AP,在 T4 上推理速度可达 1242 FPS;YOLOv6-s 在 COCO 上精度可达 43.1% AP,在 T4 上推理速度可达 520 FPS。在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。

目前只放出了三个小模型,大模型不知道是性能达不到前面几个的标准还是啥,迟迟没有放出来,不过通过对放出来的小模型精度速度等性能对比,效果还是很不错的,不妨在项目中使用试试。

在这里插入图片描述
在这里插入图片描述

九、FastestDet

github:https://github.com/dog-qiuqiu/FastestDet

FastestDet: 比yolo-fastest更快!更强!更简单!全新设计的超实时Anchor-free目标检测算法

这可能是目前最小的目标检测网络,作者还是上面的fastest-yolo原作,参数量极致的压缩,虽然精度差了点,但是考虑到能把模型参数量压缩得这么小,还是很值的学习一下的,对于一些精度要求不是很高的场景,还是值的去试一试。

FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法压根儿不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的(不要在拿int8的模型和我fp32的模型比体积了,不公平),但是精度自然而然也比不过。FastestDet是针对计算资源紧缺的ARM平台设计的,突出单核效能,因为在实际业务场景中,不会把所有CPU资源都给推理框架做模型推理的,假如说你想在例如树莓派, RK3399, RK3568去跑实时目标检测,那么FastestDet是比较好的选择,或者移动端上不想占用太多cpu资源,也可以去用单核并设置cpu sleep去推理FastestDet,在低功耗的条件下运行算法。
在这里插入图片描述

未完待续


推荐阅读
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • Redis管理工具的安装与使用指南
    本文详细介绍了两款流行的Redis管理工具——Another Redis Desktop Manager 和 Redis Desktop Manager 的安装步骤及基本使用方法,旨在帮助用户更高效地管理和操作Redis数据库。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本作业探讨了矩阵链乘法的问题,包括问题定义、解析过程、算法设计思路及性能分析。通过将矩阵链分解为多个子问题,旨在找到最小化基本运算次数的方法。 ... [详细]
  • 本文介绍了两个重要的Node.js库——cache-content-type和mime-types,它们在处理HTTP响应头时非常有用。cache-content-type是基于mime-types构建的,并且实现了缓存机制以提高性能。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 为帮助编程爱好者更好地掌握Python和Go语言的核心技能,我们特别提供两本精选图书的免费赠阅机会。《易懂的Python算法指南》适合所有希望提高算法理解能力的读者,《Go语言编程从入门到精通》则面向对Go语言感兴趣的初学者及有一定基础的开发者。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 使用IntelliJ IDEA高效开发与运行Shell脚本
    本文介绍了如何利用IntelliJ IDEA中的BashSupport插件来增强Shell脚本的开发体验,包括插件的安装、配置以及脚本的运行方法。 ... [详细]
  • 深入解析Nacos服务自动注册机制
    本文将探讨Nacos服务自动注册的具体实现方法,特别是如何通过Spring事件机制完成服务注册。通过对Nacos源码的详细分析,帮助读者理解其背后的原理。 ... [详细]
author-avatar
另一种Xing福_290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有