热门标签 | 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,在低功耗的条件下运行算法。
在这里插入图片描述

未完待续


推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 技嘉秀高端B450主板:不再支持第七代APU,性价比高且兼容锐龙一代和二代
    在台北电脑展上,技嘉展示了一款高端的B450主板,型号为“b450 aorus pro wi-fi”。该主板具有10+1相供电、散热片覆盖的供电区域和芯片组,以及两个m.2插槽和背部IO挡板。虽然不支持第七代APU bristol ridge,但它兼容锐龙一代和二代,且具有较高的性价比。该主板还配备了音频声卡、Wi-Fi无线网卡等功能,是一款性能出色且设计精良的主板。 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
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社区 版权所有