• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于YOLO发展浅析目标检测

李爽
  
探索科学·学术
2023年10期
中国人民大学统计学院 北京海淀 100872

摘要:目标检测是实际生活当中,将机器与算法结合的典型案例之一。

本文对目标检测模型的特点及发展进行浅述,简述了传统目标检测和现代目标检测在发展中的经典模型,重点介绍几代YOLO模型。

关键词:目标检测;YOLO

引言

目标检测解决的问题本身属于统计学中的分类问题。其最终目的是要知道目标“是什么”。但针对于一段视频或者一张图片来说,目标可能处于不同的地方。所以还需要定位出图片或者视频当中目标所处的位置。每个位置还可能会有多个目标存在。由于各种类型的物体具有不同的外观、形状以及不同的姿态,物体间还会出现覆盖,遮挡等问题,目标检测任务也成为了计算机视觉领域中具有挑战性的问题。

1. 目标检测方法分类

目标检测检测器的类型通常可以被分为两类[1]:一阶段的检测器和二阶段的检测器。一阶段检测器的最大特点是直接通过卷积神经网络提取特征,预测目标的分类与定位。二阶段检测器最大特点为先进行区域生成,即生成候选区域,在通过卷积神经网络预测目标的分类与定位。

本文以深度神经网络的应用程度作为划分,通过时间线,将目标检测方法分为传统目标检测方法和现代目标检测方法。

传统的目标检测方法,大多是通过多帧之间的信息变化来实现检测其中的目标。但基于这种前后帧之间信息变化的方式不容易对静态的目标做出良好的检测方案。于是又在静态目标的检测为痛点的基础上,预先设定需要检验的区域,提取目标区域的特征,然后输入到模型中进行分类检测。但其提取目标区域特征的丰富度会影响最终模型的效果。

随着计算机硬件的迅速发展,深度学习所需要的算力瓶颈也不断被刷新。由此引出了以深度神经网络为基础的现代目标的检测方法。

2. 传统目标检测方法

传统目标检测的方法的特征提取主要基于手工。检测算法流程大致可以概括为:①选取可能包含感兴趣的检测目标的区域;②对可能包含目标的区域进行特征提取;③通过提取的特征进行分类。

2001年,Viola 和 Jones 提出了一种人脸检测的模型,通过滑动窗口的方式检测目标是否存在于窗口之中。但是因为其计算量较大,采用了合并三项的技术进行了改进。合并三项分别为:①通过积分图快速计算特征;②利用AdaBoost作为有效的分类器;③设计级联结构提高分类策略。

2005年,Dalal 和 Triggs 提出了 HOG 特征检测的经典算法。为了平衡特征不变性(包括光照等)和非线性(区分对象类别的差异),通过在均匀间隔单元的密集网格上计算重叠的局部对比度归一化来提高检测准确性。因此检测器是基于本地像素块进行特征直方图提取的一种算法,它在目标局部变形和受光照影响下都有很好的稳定性。为后期很多检测方法奠定了重要基础,相关技术被广泛应用于计算机视觉各大应用。

2008年,P. Felzen. 提出的 DPM 算法成为了传统目标检测方法的巅峰方法之一。DPM 算法由多个辅助过滤器和单个主要过滤器所构成,通过边框回归、上下文启动和硬负挖掘技术改进检测精度。其优点在于运算速度快,能够适应物体形变,但它无法适应大幅度的旋转,故稳定性不佳。

因为基于手工的特征提取方法,所以也遗留了较多的问题。比如识别效果不佳,准确率不够高;所需要的计算量较大,运行的速度较为缓慢;并且可能产生多个正确的结果等。

3. 现代目标检测方法

在2012年以后,因为深度学习在目标检测当中的应用愈发成熟,现代目标检测的方法开始崭露头角。

2014年,经典算法 RCNN 被 Ross G. 提出来。它通过选择性搜索算法从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像经过缩放,提供到已经训练好的CNN模型当中提取特征,最后将特征送入到分类器来预测是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。但是由于重叠框的计算使得算法整体的检测速度较慢。

2015年,Ross G.提出了 Fast RCNN 算法。该网络首先输入图像,图像被传递到CNN中提取特征,并返回感兴趣的区域ROI,之后在ROI上运用池化层以保证每个区域的尺寸相同,最后这些区域的特征被传递到全连接层的网络中进行分类,并用Softmax和线性回归层同时返回边界框。通过对CNN网络的优化,平均精度由RCNN的58.5%提升到了70%,并且检测速度也相较于RCNN提升了200倍。但Fast RCNN处理一张图片仍然需要2s,在真实的大数据集上速度还是不够理想。

2016年,由 Shaoqing Ren 等人提出了 Faster RCNN 模型。为了弥补Fast RCNN的速度问题,算法通过区域选择网络用于生成候选框,能几大提升检测框的生成速度。并且在特征映射上应用区域生成网络,返回候选目标和相应分数。应用ROI池化层,将所有候选修正到同样尺寸。最后,将候选传递到完全连接层,生成目标物体的边界框。其精度在同一数据集中,可以较Fast RCNN的70%提升至73.2%,并且检测速度也接近实时检测。不过其在计算过程当中也会产生一些冗余,并且对于IoU(Intersection over Union)的调整难度较大。

4. YOLO的发展历史

YOLO的全称是 You Only Look Once,即只需要看一次。所以 YOLO 也属于一阶段的检测算法。

4.1 YOLO V1

YOLO最初的版本 YOLO V1[2]诞生于2015年,由 Joseph Redmon 等人创作。YOLO V1其主要思想是将目标检测视为一个回归问题,然后利用一个神经网络同时去预测候选框的位置和类别。

YOLO V1首先将图片缩放到指定的大小,然后通过已经训练好的卷积网络提取图片的特征,最后通过已经提取好的特征,经过两层全连接层输出特征图片。

在YOLO V1中,使用的预先训练好的卷积网络是 googleLeNet。它的主要特点是网络不仅有深度,还在横向上具有“宽度”。所以有较好的特征提取效果。

YOLO V1的优势在于,相比于二阶段的算法,直接利用回归的方式,减少了计算量,提高了整体检测的速度。但是其缺点在于:每个网格只有两个预测框,如果存在多个物体处于同一个网格内,或者检测的目标非常小的时候,模型的检测效果就会大打折扣。

4.2 YOLO V2

Joseph Redmon 等人在同年提出了 YOLO V2[3],针对 YOLO V1 的不足进行了改进。

YOLO V2将主干网络由 googleLeNet 替换为了 darknet19。并且在此基础上,增加了 PassThrough 的操作,更好的提升了特征的提取效果,将高低层次的语义信息进行了融合,一定程度上增强了小目标的检测效果。与此同时,YOLO V2 还引入了 anchor,调整位置预测为偏移量预测,降低了预测的难度,提升了预测的准确性。

但 YOLO V2 没有采取残差网络的结构,针对于多个密集的检测物体聚集时,仍旧没有很好的检测效果。

4.3 YOLO V3

针对 YOLO V2 的问题 Joseph Redmon 吸取了其他较好的网络设计思想,引入了残差网络模块,加深了网络的深度,在主干网络上替换了 Darknet19,改为了 Darknet53,于年提出了 YOLO V3[4]

YOLO V3 将图片输入到 Darknet53 中进行特征提取,然后借鉴了 FPN(特征金字塔网络)的思想,把高级语义信息和低级语义信息进行了融合,在高中低三个层次上分别进行目标框的预测,最终输出三个尺度的特征图信息。因为有了大、中、小三种不同的候选框分别对目标进行预测,所以 YOLO V3 基本解决了检测小目标效果不佳的问题,通过引入 Darknet53,在速度和精度上实现了较好的平衡。

4.4 YOLO V4

在 YOLO V3 的基础上,Alexey Boch. 等人于 2020 年 4 月份对 YOLO V3 进行了改进,推出了 YOLO V4[5]

YOLO V4 是针对 YOLO V3 的改进,方法就是汇集目标检测的技巧,经过筛选、排列组合逐个试验哪些是更加有效的。主要方法大致有以下几点:

(1)使用了新的 CSPDarnet53 的网络结构。

CSP 设计了 Partial transition 的网络层,目的是最大化梯度联合的差异。融入了 CPS 结构后的新网络能够有效的减少重复的梯度学习,提升网络的学习能力。

(2)使用空间金字塔(SPP)池化扩大感受野

SPP 在卷积层以后增加一个 SPP 层,将特征图拉成要给固定长度的特征向量,然后将特征向量输出到全连接层中,这样可以解决候选区域的尺寸问题,扩大感受野。

(3)在 FPN(特征金字塔网络)的基础上加入了路径聚合网络(PAN)结构。

在 FPN 层以后加入了一个自底向上的 PAN 结构,这样的结合操作使得 FPN 层自顶向下传达强语义特征,而 PAN 层自底向上传达强定位特征,增强了整体的特征表达能力。

(4)引入 Mish 激活函数

Mish 激活函数避免了由于封顶而导致的饱和,对负值的轻微放开允许更好的梯度流。平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

4.5 YOLO V5

在与 YOLO V4 发出的同年6月份,Xingkui Zhu 等人在前几代 YOLO 的基础上又提出了 YOLO V5。但并没有发表论文。

YOLO V5 与前几代相比,增加了自适应锚框计算,以及在主干网络上增加了 focus 结构,并且每次训练模型之前,都会自动计算训练数据集最合适的 Anchor 尺寸。

4.6 YOLO V6

2022年,由 Chuyi Li 等人提出了 YOLO V6[6]

YOLO V6 最大的改进就是将 2021 年提出的 RepVGG 引入到了 YOLO 的模型当中。按照 RepVGG 的思路,为每一个3x3的卷积添加平行了一个1x1的卷积分支和恒等映射分支,然后在推理时融合为3x3的结构,这种方式对计算密集型的硬件设备会比较友好。

5. 总结与展望

YOLO 模型每一代基本上会从主干网络的处理、数据的预处理、特征提取、损失函数等方面进行了改动。从 YOLO V4 以后,每一代的 YOLO 不再引入的巨大的改动变化。

随着时间的发展,在一些极端环境和复杂变化的天气情况下,图像的记录失真或者难以记录全部信息会使得目标检测更加具有挑战性。一方面需要提高硬件的素质,而另一方面,模糊的特征提取以及特征推断能力会是未来算法的研究方向。

参考文献:

[1]L.C. Jiao,Fan Zhang. A Survey of Deep Learning-based Object Detection. arXiv:1907.09408 [cs.CV]

[2]Joseph Redmon,Santosh Divvala,Ross Girshick,Ali Farhadi. You Only Look Once:Unified,Real-Time Object Detection. arXiv:1506.02640 [cs.CV]

[3]J. Redmon,A. Farhadi. YOLO9000:Better,Faster,Stronger. arXiv:1612.08242 [cs.CV].

[4]Joseph Redmon,Ali Farhadi. YOLOv3:An Incremental Improvement. arXiv:1804.02767 [cs.CV]

[5]Alexey Bochkovskiy,Chien-Yao Wang. YOLOv4:Optimal Speed and Accuracy of Object Detection. arXiv:2004.10934 [cs.CV]

[6]Chuyi Li,Lulu Li,Hongliang Jiang. YOLOv6:A Single-Stage Object Detection Framework for Industrial Applications. arXiv:2209.02976 [cs.CV]

(作者单位:中国人民大学统计学院)

*本文暂不支持打印功能

monitor