AI目标检测之YOLO发家史

导读:目标检测广泛应用于城市安防、自动驾驶、遥感解译等领域,基于深度学习的目标检测方法经过近十年的发展已经相当成熟。近年来,单阶段目标检测YOLO系列架构在众多方法中脱颖而出,有成为主流的趋势,本文对AI目标检测总体发展脉络进行简要梳理,见证YOLO的发家史。


0 概述

目标检测主要任务是确定图片或视频中感兴趣目标的具体位置以及所属类别,并返回目标边界框和属性定义,能够解决“目标在哪里”以及“目标是什么”这两个问题。深度学习目标检测算法利用卷积神经网络对于目标特征进行自动提取,按检测过程可分为两阶段算法和单阶段算法。两阶段算法首先提取图像中可能含有目标的候选区域,然后再候选区域内进行回归,得到检测结果,这一过程可以概括为“由粗到细”。单阶段算法直接通过回归的方式获取待测目标的具体位置和类别信息,这一过程可以概括为“一步到位”。这两类算法相互竞争又互相成就,推动着目标检测的发展。

1 混沌初期

传统目标检测方法因依赖手工设计特征或先验知识进行目标检测,鲁棒性低且无法进行多类目标的推广,于2010年前后基本达到饱和状态。2012年Hinton团队提出AlexNet深度学习模型,在计算机视觉领域获得里程碑式成功,标志着深度学习时代的来临。2013年OverFeat横空出世,因其集成了定位和检测任务,被认为是单阶段目标检测的先驱。

2百家争鸣

2014年Girshick提出R-CNN,在目标检测任务中实现了质的飞跃。从此,基于深度学习的目标检测算法开始在自然图像识别领域崭露头角,单阶段目标检测和两阶段目标检测也开始了长达数年的“爱恨纠葛”。

图1 目标检测发展史

R-CNN 在 VOC2007 上实现了显著的性能提升,平均检测精度(mAP)达到 58.5%,比传统方法提高了近25%。但是该方法的回归过程极其耗费时间和内存,训练5000张图耗费84个小时,产生几百G的特征文件,检测一张图需要近50秒。

同年,为了改善R-CNN复杂的训练过程并提高检测速度,何凯文提出空间金字塔池化网络(SPPNet),该方法可以有效减少重复计算造成的信息冗余,其检测速度是R-CNN的20多倍,且mAP能达到66%。但它仍存在未能解决的问题,只实现了全连接层的微调,而没有处理训练过程中其他的特征层。

2015年Girshick提出了Fast R-CNN检测器,它融合了R-CNN和SPPNet的优点,在相同的配置下能够同时训练目标类别检测器和边界框回归器,显著加快了训练进程和测试速度,也进一步提高了检测精度。训练时间减少到9.5小时,mAP达到66.9%,检测一张图约0.3秒。

随后不久,Ren提出了Faster R-CNN,该模型用高效的区域建议网络(RPN)代替缓慢的选择性搜索方法,克服了Fast R-CNN的速度瓶颈,提高了检测精度和运算效率并实现了端到端的目标检测,在VOC2007数据集上mAP达到了69.9%。其中一个快速版本mAP为59.9%,FPS达到17,是有史以来首个接近实时的深度学习目标检测器。至此两阶段检测器的基本架构已经确定。

图2 Faster R-CNN网络结构

历史的车轮滚滚向前,人们并不满足于“接近实时”这一现状。2016年Joseph等人提出了YOLO,作为深度学习时代第一个正式的单阶段目标检测器,该方法彻底摒弃了两阶段中“区域建议+回归”的检测模式,将待测图像缩放成统一大小并分割成多个网格,再根据目标中心所处的网格预测目标类别,在最后一个卷积层上输出检测结果。这一过程可以理解为仅用一个卷积神经网络就完成了特征提取、候选框回归和目标分类任务,节省了大量计算成本。速度达到了45FPS,在当时的算力下,YOLO完美的实现了目标的实时检测。但mAP仅为63.4%,相比于两阶段检测器损失了检测精度。

几个月后,Liu等人提出SSD,这是继YOLO之后的第二款单阶段检测器。与YOLO相比,SSD使用多尺度特征图,并引入了RPN结构,提高了模型对各种尺度目标的检测性能。参考了Faster R-CNN中锚框(anchor)的设计,提出了先验框的概念。可以同时判断目标的类别和位置。SSD兼备了FasterR-CNN的高精度与YOLO的高速度。检测速度为46FPS,mAP达到了74.3%。

2016年底,单阶段家族又填一名得力干将——YOLOv2。为了改善 v1版本召回率低的问题,将Darknet-19作为骨干网络,在原有YOLO 方法上作了许多改进。首先将批量归一化层加入到每一个卷积层上,从而使网络中各层的输入数据分布相对稳定,降低模型对网络参数的敏感性,简化参数调整过程,还具有一定的正则化效果。另外通过k-means 方法对 MS COCO 数据集进行聚类得到 anchor,以找到适合各种目标的anchor 大小和比例,再预测 anchor 内目标的坐标偏移量并判断目标类别。相对v1版本,在继续保持处理速度的基础上,从预测更准确,速度更快,识别对象更多这三个方面进行了改进。当mAP为76.8%时,FPS可达67。但对于密集目标的检测或者小目标的检测效果还有待提升。

2017年两阶段目标检测器连出大招,首先提出了特征金字塔网络(FPN)。FPN是一个自上而下且伴有横向连接的体系结构,与CNN自下而上的结构相结合,实现了不同层次特征图的信息融合,既保留了高层次的语义信息,又兼顾了低层次的位置信息,对各类尺寸目标的检测都取得了重大进展。自此之后,FPN成为了许多新型检测器的基础部件。

图3 FPN结构

随后,Dai等人提出了Light Head R-CNN,通过轻量化网络检测头部减少网络参数,进一步加快检测速度。年底诞生的CascadeR-CNN利用级联回归作为重采样机制,根据卷积层次的逐步加深提高区域建议的交并比,得到了更准确的检测结果。

3 YOLO异军突起

时间来到2018年,YOLOv3引入了残差网络模块,在Darknet19的基础上推陈出新,使用特征提取能力更强大的Darknet53作为主干网络对图像特征进行提取,去掉了池化层和全连接层,进一步加深网络层数。特征融合策略与FPN相似,利用低、中、高三个不同尺度的特征图分别预测目标框,能够更好地应对尺度差异较大的目标。与YOLO和 YOLOv2相比,YOLOv3 实现了更快、更准的目标检测,解决了小目标检测效果差的问题,是目标检测one-stage中非常经典的算法, Darknet-53网络结构、anchor锚框、FPN的组合也成为了YOLO的经典搭配,为后续YOLO系列做大做强提供了坚实的基础。

以往基于anchor的一阶段检测器需要根据特定的数据集或针对具体应用场景来设计锚点框的尺寸和数量,导致算法泛化性较差。后续又出现了一些无anchor的检测算法,比如将目标检测问题转化为关键点检测的CornerNetCenterNet等,这些算法模型简单,泛化性强且速度较快,能够胜任高精度实时检测任务。

2019年,EfficientDet应用复合缩放方法,在基线网络上同时你扩大主干网络、特征网络以及分类回归网络的分辨率、深度和宽度,还加入了FPN的加强版BiFPN。目标检测方法发展到这一阶段,无论是检测速度还是检测精度都已经达到了令人满意的程度。

研究人员和学者们对于提升目标检测性能的研究一直如火如荼地进行着。2020年,Bochkovskiy等人提出的YOLOv4再一次刷新了目标检测史上的最好记录。首先在数据输入端引入Mosaic数据增强,将4张图像进行旋转、缩放、裁剪等变换后拼接成一副图像输入到主干网络进行训练,既丰富了数据集又减少了运算成本。主干网络采用CSPDarknet53,避免了网络优化过程中梯度信息重复的问题,并使用 Dropblock 随机减少神经元数量,简化网络模型。还使用了SPP模块和FPN+PANet结构,充分利用语义信息和位置信息实现多尺度特征融合。在同等速度下,精度较YOLOv3提高了近10个点。

图4 YOLOv4网络结构

紧接着YOLOv5重磅登场,在网络的输入端中嵌入了锚框运算功能,在每个训练集上都可以根据需要自适应地求出最优锚框值。主干网络部分加入了 Focus 结构,运用切片运算的方法减少计算量和参数量。借鉴了YOLOv4网络中SCPNet的设计思路,设计了CSP结构,加强了网络的特征融合能力。YOLOv5中包含YOLO5s、YOLO5m、YOLO5l以及YOLO5x四个模型,网络深度和宽度依次增大,特征提取能力和特征融合能力也依次增强。YOLOv5s模型小、速度快且精度高,可以直接部署到移动端实现实时检测。

纵观发展历程,自2018年开始,两阶段方法的“市场份额”逐步被一阶段抢占,它引以为傲的“高精度”也渐渐趋于平庸。直到2020年,两阶段目标检测又增一位新成员CPNDet,其作者是前文提到的一阶段算法CenterNet的作者,该方法在CenterNet的基础上使用关键点提取候选框,再利用两阶段分类器进行预测。准确率和推理速度都比较可观。在目标检测发展过程中,两阶段算法与一阶段算法相互借鉴、彼此渗透,二者之间的界限也没有最初那般明显了。

2022年美团开源了专为工业应用设计的YOLOv6,各种精巧设计大放异彩,在精度和速度上均超越其他同量级的cv模型。YOLOv4使用的CSPDarknet53在一定程度上会增加延时,减小GPU利用率。YOLOv6则使用更高效的EfficientRep作为主干网络。中间部分也基于Rep和PAN搭建了Rep-PAN结构,实现特征的有效融合。检测头部分将边框回归与类别分类过程一分为二,不仅加快收敛速度,也提高了检测头的复杂程度,从而达到了速度与精度的权衡。

两个星期后YOLOv4原班人马推出YOLOv7,从YOLOv4、v5、v6入手,性能再创新高。首先,扩展了高效长程注意力网络E-ELAN,能在不破坏原始梯度路径的情况下,提高网络的学习能力。其次,采用基于级联的模型缩放方法,以满足不同推理速度的需求。还设计了新的标签分配方法,同时考虑网络预测结果与真实框,然后将软标签分配到“label assigner”。

2023年1月10日,YOLOv5的研发公司Ultralytics再次推出重大版本YOLOv8。它建立在以前YOLO版本的基础上,引入了新的功能和改进。骨干网络和Neck部分将YOLOv5的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数,不再是一套参数应用到所有模型,大幅提升了模型性能;Head部分相比YOLOv5改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从Anchor-Based换成了Anchor-Free;Loss计算方面采用了 Task Aligned Assigner正样本分配策略,并引入了Distribution Focal Loss。

图5 YOLOv8结构图(mmYOLO绘制)

当然,YOLO系列模型远不止上文提到的这些,下图不完全列举一些YOLO家族的产品。单是YOLO变体就多达数十种,可见YOLO家族之强大。

图6 YOLO系列

4 传承发展

无论哪种方法,都有过自己存在的意义。一阶段方法因为效率高更贴近生产生活,两阶段方法在许多场景下仍然好用。数年的发展使这两类方法相互成就、共同繁荣。虽然目标检测算法已经较为成熟,但人们从未停止过对其的改进,没有最好,只有更好。纵观AI目标检测发展时间线,经典算法层出不穷。

图7 AI目标检测时间轴

2014年R-CNN的发布开启了深度学习目标检测的时代,至今已8年有余。将这段时间一分为二,前四年两阶段算法集中爆发,占领大部分江山。后四年一阶段算法日渐强大,独占鳌头,尤其到后期YOLO如日中天。回顾来看,目标检测算法从繁到简,从有锚框到无锚框,从多阶段到两阶段再到一阶段;从粗到细,逐渐考虑更多细节,如密集程度、更多定位信息等。总体看来,是向着“更快更强的网络架构、更有效的特征集成方法、更准确的检测方法、更精确的损失函数、更有效的标签分配方法、更有效的训练方法”去发展的。而无论是一阶段还是二阶段,都是基于卷积神经网络的方法。最近,基于Transformer的算法抛弃了卷积神经网络,实现了端到端的目标检测,各项性能逐渐趋近最优,似乎有后来者居上的趋势。这大概就是“江山代有才人出,各领风骚数百年”吧。


技术交流/科研合作/客座实习/联合培养请投递:[email protected]

未来GIS实验室」作为超图研究院上游科研机构,致力于洞见未来GIS行业发展方向,验证前沿技术落地可行性,以及快速转化最新研究成果到关键产品。部门注重科研和创新功底,团队气氛自由融洽,科研氛围相对浓厚,每个人都有机会深耕自己感兴趣的前沿方向。

猜你喜欢

转载自blog.csdn.net/futuregislab/article/details/128921903