草庐IT

YOLO发展史

放p给你玩 2024-03-30 原文

系列文章目录

YOLO发展史

文章目录


前言

目前物体检测算法有以下三种:
第一种是传统物体检测算法,使用人工设计特征以及机器学习的分类方式,但这种算法提取到的特征局限性较大且学习速度有限;
第二种是结合候选框+深度学习分类法,这类Two-Stage方法解决了前者的问题,在精度上有很大突破,但在速度上很难达到实时检测的效果;
第三种是基于深度学习的回归方法,在速度上达到了实时级别的突破,本文使用YOLO就是属于One-stage,YOLO虽然在v1,v2版本准确率上有所欠缺,但到v5版本时准确率提高了很多。


一、YOLO简介

①作者:Joseph Redmon,华盛顿大学博士,YOLO目标检测算法主要作者,YOLO是Joseph     Redmon和Ali Farhadi等人于2015年提出的第一个基于单个神经网络的目标检测系统。

②YOLO的全称是you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。

③YOLO是目标检测模型。目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些     特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置。

④YOLO能实现图像或视频中物体的快速识别,在相同的识别类别范围和识别准确率条件下,           YOLO识别速度最快。YOLO有多种模型,其中最新的为V5,V5的特点是速度更快,识别准确率     更高,权重文件更小,可以搭载在配置更低的移动设备上。

二、YOLO发展史

1.YOLOV1

        YOLO网络借鉴了GoogLeNet分类网络结构,不同的是YOLO使用1x1卷积层和3x3卷积层替代inception module。如下图所示,整个检测网络包括24个卷积层和2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值

1.1.YOLOV1优点

        ①快。因为回归问题没有复杂的流程(pipeline)。

        ②可以基于整幅图像预测(看全貌而不是只看部分)。与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试期间会看到整个图像,因此它隐式地编码有关类及其外观的上下文信息。因为能看到图像全貌,与 Fast R-CNN 相比,YOLO 预测背景出错的次数少了一半。

        ③学习到物体的通用表示(generalizable representations),泛化能力好。因此,当训练集和测试集类型不同时,YOLO 的表现比 DPM 和 R-CNN 好得多,应用于新领域也很少出现崩溃的情况。

1.2.YOLOV1缺点

        ①空间限制:一个单元格只能预测两个框和一个类别,这种空间约束必然会限制预测的数量;

        ②难扩展:模型根据数据预测边界框,很难将其推广到具有新的或不同寻常的宽高比或配置的对象。由于输出层为全连接层,因此在检测时,YOLO 训练模型只支持与训练图像相同的输入分辨率。

        ③网络损失不具体:无论边界框的大小都用损失函数近似为检测性能,物体 IOU 误差和小物体 IOU 误差对网络训练中 loss 贡献值接近,但对于大边界框来说,小损失影响不大,对于小边界框,小错误对 IOU 影响较大,从而降低了物体检测的定位准确性。

2.YOLOV2

        YOLOv2采用Darknet-19,其网络结构如下图所示,包括19个卷积层和5个max pooling层,主要采用3x3卷积和1x1卷积,这里1x1卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用BN层以加快模型收敛同时防止过拟合。最终采用global avg pool 做预测。采用YOLOv2,模型的mAP值没有显著提升,但计算量减少了。

        YOLOv1虽然检测速度快,但在定位方面不够准确,并且召回率较低。为了提升定位准确度,改善召回率,YOLOv2在YOLOv1的基础上提出了几种改进策略,如下图所示,可以看到,一些改进方法能有效提高模型的mAP。

大尺度预训练分类

New Network:Darknet-19

加入anchor

2.1.YOLOV2优点

  • 结果:相对v1 (更快、mAP更高)
  • 正负样本:引入Anchor和使用K-means聚类,提高了Recall
  • Backbone:DarkNet-19,降低了计算量(更快)
  • Neck:引入特征融合模块(passthrouch),融合细粒度特征
  • 检测头:去掉v1中的FC,可以适应32x的输入; 多尺度训练提高模型能力;二者实现了速度和精度的权衡
  • 小技巧:引入BN,加速网络收敛;约束输出范围,训练更稳定;

2.2.YOLOV2缺点

  • Backbone 可持续优化
  • Neck 可持续优化
  • 只是单个检测头,小目标识别还不太好
  • 损失函数可持续优化

3.YOLOV3

        YOLOv3总结了自己在YOLOv2的基础上做的一些尝试性改进,有的尝试取得了成功,而有的尝试并没有提升模型性能。其中有两个值得一提的亮点,一个是使用残差模型,进一步加深了网络结构;另一个是使用FPN架构实现多尺度检测。

3.1.YOLOV3的创新点    

        ①新网络结构:DarkNet-53

        ②融合FPN

        ③用逻辑回归替代softmax作为 分类

3.2.YOLOV3网络结构的改进

        YOLOv3在之前Darknet-19的基础上引入了残差块,并进一步加深了网络,改进后的网络有53个卷积层,取名为Darknet-53,网络结构如下图所示(以256*256的输入为例)。

3.3.YOLOV3中多尺度检测实现方法

        YOLOv3借鉴了FPN的思想,从不同尺度提取特征。相比YOLOv2,YOLOv3提取最后3层特征图,不仅在每个特征图上分别独立做预测,同时通过将小特征图上采样到与大的特征图相同大小,然后与大的特征图拼接做进一步预测。用维度聚类的思想聚类出9种尺度的anchor box,将9种尺度的anchor box均匀的分配给3种尺度的特征图.如下图是在网络结构图的基础上加上多尺度特征提取部分的示意图(以在COCO数据集(80类)上256x256的输入为例):

4.YOLOV4

        YOLOv4在原来的YOLO目标检测架构的基础上,采用了很多优化策略,在数据处理,主干网络,网络训练,激活函数,损失函数等方面都有不同程度的优化。

①backbone

 YOLOv4的网络结构如上所示,可以看出,他是在YOLOv3的主干网络Darknet-53的基础上增加了backbone结构,其中包含了5个CSP模块,可以有效增强网络的学习能力,降低成本。同时增加了Droblock,缓解过拟合现象。

此外很重要的一点是,使用了Mish激活函数,根据实验,这种激活函数可以增加精度。

 ②YOLOv4中的Neck结构主要采用了SPP模块,FPN+PAN的方式,SPP模块指的是用不同尺度的最大池化方式连接不同尺寸的特征图,可以显著分离上下文的特征,此外FPN和PAN起到了特征聚合的作用。

③输入部分采用了Mosaic数据增强,随机采用四张图片随即缩放后随机凭借,丰富了数据集,增强了模型的鲁棒性。预测部份采用了CIOU_Loss替换了IOU_Loss,DIOU_nms替换了nms,充分考虑了边框不重合,中心点距离,以及边框宽高比的问题。

5.YOLOV5

①YOLOV5简介:

        YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。大家对YOLOv5算法的创新性半信半疑,有的人对其持肯定态度,有的人对其持否定态度。在我看来,YOLOv5检测算法中还是存在很多可以学习的地方,虽然这些改进思路看来比较简单或者创新点不足,但是它们确定可以提升检测算法的性能。其实工业界往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。本文将对YOLOv5检测算法中提出的改进思路进行详细的解说,大家可以尝试者将这些改进思路应用到其它的目标检测算法中。

②网络结构

        在YOLOv5中新加入了一个focus框架,其最大的特点是原始608×608×3的图像输入Focus结构,采用切片操作,先变成304×304×12的特征图,再经过一次32个卷积核的卷积操作,最终变成304×304×32的特征图,加速了训练速度。 另外在YOLOv4中使用的CSP模块现在在backone和neck中都有应用。

 ③输入和预测

        输入部分依然采用了YOLOv4中采用的Mosaic数据增强技术,另外对于anchor box的设置采用了每次训练时自适应生成的方式,以及为了保持正常的长宽比,在填充增强环节自适应增添最少的黑边。预测部份同样采用了CIOU_Loss替换了IOU_Loss,DIOU_nms替换了nms.

三.YOLOV5实用性

1.应用场景

        城市道路抓拍外地车辆未办理进京证,大货车禁行,占用非机动车及公交车道,单行线逆行,违法停车等。

四.YOLOV5结构解析


1.输入端

        (1)Mosaic数据增强

                主要有几个优点:

                丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。

                 减少GPU:可能会有人说,随机缩放,普通的数据增强也可以做,但作者考虑到很多人可能只有一个GPU,因此Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。

        (2)自适应锚框计算

        (3)自适应图片缩放

2.Backbone

      (1)Focus结构

        源码如下:

 Focus结构如下,在yolov3、yolov4中并没有这个结构,其中比较关键是切片操作。

 (2)CSP结构

yolov4网络结构中,借鉴了CSPNet的设计思路,在主干网络中设计了CSP结构。

yolov5与yolov4不同点在于,yolov4中只有主干网络使用了CSP结构。

而yolov5中设计了两种CSP结构,以yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。

因此yolov4在主干网络Backbone采用CSPDarknet53网络结构,主要有三个方面的有点:

        优点一:增强CNN的学习能力,使得在轻量化的同时保持准确性。
        优点二:降低计算瓶颈
        优点三:降低内存成本

4.Neck

        yolov5现在的Neck和yolov4的一样,都采用FPN+PAN的结构,但在yolov5刚出来时,只使用了FPN结构,后面才增加了PAN结构,此外网络中其他部分也进行了调整。

可以看到经过几次下采样,三个紫色箭头指向的地方,输出分别是76*76、38*38、19*19。

以及最后的Prediction中用于预测的三个特征图,①19*19*255,②38*38*255,③76*76*255。
【注:255表示80类别(1+4+80)*3=255】

我们将Neck部分用立体图画出来,更直观的看下两部分之间是如何通过FPN结构融合的。

如图所示,FPN是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合的,得到进行预测的特征图。

而yolov4中Neck这部分除了使用FPN外,还在此基础上使用了PAN结构:

前面CSPDarknet53中讲到,每个CSP模块前面的卷积核都是3*3大小,步长为2,相当于下采样操作。

因此可以看到三个紫色箭头处的特征图是76*76、38*38、19*19。

以及最后的Prediction中用于预测的三个特征图,①76*76*255,②38*38*255,③19*19*255。

下面是Neck部分的立体图像,展示了两部分是如何通过FPN+PAN结构进行融合的。

和yolov3的FPN层不同,yolov4在FPN层的后面还添加了一个自底向上的特征金字塔。

其中,包含两个PAN结构。

这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合,这样的操作确实很皮。

FPN+PAN借鉴的是18年CVPR的PANet,当时主要应用于图像分割领域,但Alexey将其拆分应用到yolov4中,进一步提高特征提取的能力。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了YOLO的介绍。

有关YOLO发展史的更多相关文章

  1. 企业大数据发展面临问题之存算分离技术思考 - 2

    文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据

  2. 中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年 - 2

    中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年详情内容请咨询鸿晟信合研究院!【全新修订】:2022年2月【撰写单位】:鸿晟信合研究研究【报告目录】第1章:中国民用飞机制造行业发展综述1.1民用飞机制造行业概述1.1.1民用飞机的概念1.1.2飞机制造的概念1.1.3民用飞机的分类1.2民机制造行业周期特性1.2.1影响行业周期的因素(1)GDP增速分析(2)运量增量分析(3)飞机更替分析(4)航空公司获利水平1.2.2行业现阶段周期分析1.2.3行业现阶段景气分析1.3民机制造信息化分析1.3.1信息化技术应用状况分析(1)MDO技术应用分析(2)供应链协同研发分析(3

  3. YOLO v5 代码精读(1) detect模块以及非极大值抑制 - 2

    目录 YOLO简介argpares模块detect模块导入部分主函数main()run()资源处理for循环输出结果 YOLO简介YOLO是目前最先进的目标检测模型之一,现在博客上常有的是如何使用YOLO模型训练自己的数据集,而鲜有对YOLO代码的精读。我认为只有对算法和代码实现有全面的了解,才能将YOLO使用的更加得心应手。这里的代码精读为YOLO v5,github版本为6.0。版本不同代码也会有所不同,请结合源码阅读本文。本文使用注释完成对每行代码的解读,文段来概括总结每个代码段。yolov5代码6.0版本github代码地址argpares模块在了解yolov5代码之前,首先要了解py

  4. 汽车车灯的发展趋势 - 2

    汽车车灯的发展和光源的发展也是息息相关的,光源从煤油灯——》乙炔灯——》白炽灯——》卤素灯——》放电灯——》LED灯——》激光灯——》像素化光源,可以说一步步的越来越进步,而车灯的发展也从白炽灯 ——》卤素灯——》氙气灯——》LED灯。比如有一款车使用的Matrix矩阵式全LED大灯头灯就是多LED灯组,由37颗LED灯组成,由日行灯、转向灯、近光灯、远光灯、角灯组成,转弯时可实现增强照明,泊车可增强照明,  可以说汽车照明系统已经从满足一些基本功能转向了个性化智能化及豪华体验上了。最近激光大灯也出来了,原理是激光发光二极管的蓝光灯将会贯穿前大灯单元内有荧光的荧光粉材料,将其转换成一个扩散的白

  5. SE5_基于YOLO3D的目标检测算法移植与测试 - 2

    本文档适用于SOPHGO(算能)BM1684-SE5及对应通用云开发空间,主要内容:注意:由于SOPHGOSE5微服务器的CPU是基于ARM架构,部分步骤将在基于x86架构CPU的开发环境中完成初始化开发环境(基于x86架构CPU的开发环境中完成)YOLO3D目标检测算法模型转换(基于x86架构CPU的开发环境中完成)YOLO3D模型推理测试(处理后的YOLO3D项目文件将被拷贝至SOPHGOSE5微服务器上推理测试)1.初始化开发环境(基于x86架构CPU的开发环境中完成)1.1初始化开发环境(若wget后的地址不可用,请前往算能官网下载Docker镜像及SDK)#切换成root权限sudo

  6. 编程语言的发展史 - 2

    编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语言发展变化一样的缓慢而又持久,其发展是相当快速的,这主要是计算机硬件、互联网和IT业的发展促进了编程语言的发展。1956年10月15日—FORTRANFORTRAN语言是FormulaTranslation的缩写,意为“公式翻译”。它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。FORTRAN语言是世界上第一个被正式推广使用的高级语言。它是1954年被提出来的,1956年的10月15日正式使用,历

  7. AI 芯片的简要发展历史 - 2

    随着人工智能领域不断取得突破性进展。作为实现人工智能技术的重要基石,AI芯片拥有巨大的产业价值和战略地位。作为人工智能产业链的关键环节和硬件基础,AI芯片有着极高的技术研发和创新的壁垒。从芯片发展的趋势来看,现在仍处于AI芯片发展的初级阶段。未来将是AI芯片发展的重要阶段,无论是架构还是设计理念都存在着巨大的创新空间。一、芯片的发展历史1956年达特茅斯会议上,科学家约翰·麦卡锡,克劳德·香农和马文·明斯基提出了"人工智能"一词。50年代末,阿瑟·萨缪尔(ArthurSamuel)提出了"机器学习"这个术语,他开发了一个西洋跳棋程序,可以从错误中吸取教训,经过学习后,甚至比编写程序的人棋力更强

  8. 2022年值得关注的NFT发展趋势 - 2

    我们第一次知道NFT是在2014年5月创建的。2015年,科技慢慢跟上了世界,人们开始慢慢地、稳步地接受它。随着NFT的铸造,许多NFT市场的发展开始增长。人们开始创建NFT,有些人开始创建NFT市场。在科技世界中,当任何新事物被发明出来时,其未来的可能性有三个方面。一是它在世界上的成功逐渐增加,并在某一点停止。第二种可能性是它在早期获得了巨大的成功,并且比成功时失败的次数少。第三种可能是产品的成功和未来逐渐增加,保持其辉煌的增长斜率。当一个科技产品到达终点时,可能没有回报,但我们不能说永远。根据目标生成,它可能会在进化后卷土重来。2021年,NFT开始大肆宣传。NFT在2019年左右开始流行

  9. 从云原生实战峰会,透视2023年云原生发展趋势 - 2

    CSDN:如果用两个关键词来总结2022年云原生的发展态势,您会有哪些评价?——繁荣和普惠。“繁荣”代表当前云原生的技术和产品蓬勃发展;“普惠”代表云原生技术从互联网走向金融、零售、政企等行业,普惠千行百业构建丰富应用。(阿里云智能云原生应用平台产品负责人李国强)2022年,云原生技术日趋成熟,伴随容器、Serverless、微服务等技术快速发展,已逐步构建出繁荣的技术体系。如今云原生凭借降本增效、提高持续交付能力、易于开发等优势,正在不断激活应用构建范式,引起企业系统架构、生产方式、商业模式等发生变革,毋庸置疑,云原生已成为企业数字化转型的最短路径。那么,2022年云原生领域有哪些新进展?未

  10. ChatGPT和Web3:人工智能如何帮助您建立和发展您的 Web3 公司 - 2

    ChatGPT是OpenAI在2022年11月推出的聊天机器人。该机器人建立在OpenAI的GPT-3人工智能家族上,并通过监督学习和强化学习技术进行了优化。与ChatGPT机器人聊天时,你会感觉自己在与一个懂得一切并以非常教育性的方式回答的朋友交谈。回答在许多知识领域非常详细和有条理。ChatGPT可以为您在建立业务方面提供很多价值。与谷歌结合使用,它是你最好的业务孵化器。一、寻找创意ChatGPT可以通过分析市场数据和使用预测分析来识别潜在的机会,帮助寻找Web3业务创意。它还可以用于发现新技术及其潜力,这些技术可以用来创建Web3业务。ChatGPT聊天机器人还可以分析客户数据,以识别他

随机推荐