基于yolo的目标检测算法发展历程

近年来,深度学习技术快速发展,基于深度学习的算法已经在许多领域取得了重要的成果。在计算机视觉领域,卷积神经网络因为其强大的学习能力,使得人们不断进行研究,研究人员已经在多个视觉任务上(分类,检测,分割,跟踪)创造出性能优异的网络结构。本文主要研究的是基于卷积神经网络的光伏板计数算法,因此需要介绍一些基于yolo卷积神经网络的目标检测算法。

YOLO系列发展至今共有 V1、V2、V3、V4、V5、V6、V7,在这里简单对 YOLO V1、V2、V3、V4、V5进行介绍。

YOLO v1:

YOLO V1 不属于Anchor-based 的检测方法,但它也属于 YOLO 系列的经典算法, YOLO V1 的核心思想就是利用整张图片作为网络的输入,直接在输出层回归包围框的位置和所属的类别。YOLO 的实现方法就是将一幅图像划分成 S×S 的网格,如果物体的中心落在这个网格当中,这个网格就负责预测这个物体(这里记为 C 个类别)。每个网格要预测 B 个检测框,每一个检测框都需要回归 5 个值(四个点的位置和一个置信度的值)。如果一张图片被划分成 S×S 的网格,每个网格要预测 B 个检测框, C 个类别,那么网络的输出就是 S×S×(5×B+C)的一个张量。YOLO 中置信度计算公式为() × ℎ,如果有物体的中心落在一个网格里,那么()的值

就是 1 否则就是 0,那么第二项则是预测框和真实框之间的 IoU(Intersection over Union)的值。所以置信度的区间为[0,1]。这样的检测方式使得 YOLO V1 很难检测到小物体,虽然每个网格可以预测多个包围框,但是输出的物体检测框只有一个。当物体较小时,每个网格包含几个甚至十几个物体时,YOLO V1无法将它们全部检测出,这是YOLO V1 的一个缺陷。

YOLO V2:

YOLO V2 在 V1 的基础上进行改进,YOLO V2 没有使用 V1 的 GoogLeNet 来提取特征,而是使用 Darknet-19 作为特征提取网络。在一些低分辨率的图像上分类效果 Darknet-19 要优于 GoogLeNet 和 VGGNet 系列的网络,并且计算量远远低于 VGGNet。除此之外,YOLO V2 还使用了一系列的技巧,如:

  1. 在网络中使用 BN 层来提高模型收敛速度,减少过拟合。
  2. 使用高分辨率的图像进行训练提高精度。
  3. 加入 Anchor 来预测检测框。
  4. 加入多尺度训练,YOLO V2 采用了多尺度输入训练策略,具体来说就是在训练过程中每间隔一定的迭代次数之后,改变模型的输入图片大小。
  5. 使用 k 均值聚类自适应的选择 Anchor 的尺寸。

总的来说,YOLO V2 融合了很多提升精度的方法,这使得 YOLO V2 不管是在精度还是速度上都优于 V1。

YOLO V3:

YOLO V1/V2 对小物体的检测效果一直不好,这个问题在 YOLO V3 中得到了解决。YOLO V3 的网络结构如图 2-10 所示,特征提取网络使用 DarkNet-53,它融合 ResNet 的残差结构来进一步提升精度。最主要的是 YOLO V3 采用 FPN 的结构来进行多尺度预测,小特征图有助于检测大尺度的目标,大的特征图有助于检测小目标。值得注意的是,YOLO V3 中特征的融合采用的是特征图相连的方式,而不是像素值的直接相加。图 2-10 中 DBL 表示 YOLO V3 中的基本组件就是卷积+BN+Leaky Relu, Res_unit 表示一个残差单元,concat 表示特征的连接,resn 表示这个残差块里有多少个残差单元。

Yolo V

3

结构

去除了全连接层的

DarkNet

53

图 2-10  YOLOv3 网络结构图

Fig.2-10  Network structure of YOLOv3

YOLO V4:

YOLO V4 本质上和 YOLO V3 相差不大,YOLO V4 集成了众多提升精度的技巧在自己的算法当中,使得算法效果有很大的改进。首先是数据增强部分,YOLO V4 提出了 Mosaic 数据增强,随机使用 4 张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,使得网络的鲁棒性更好。然后是网络结构的创新,如图 2-11 所示,YOLO V4 的特征提取网络不再采用 YOLO V3 的 DarkNet-53,而是结合了 CSPNet 产生的新的特征提取网络 CSPDarknet-53,其中包含 5 个 CSP 模块,CSPDarknet-53 相比于 DarkNet-53 有更强的学习能力。YOLO V4 在特征融合的过程采用 FPN+PAN 的特征融合方式,并且加入空间金字塔池化(Spatial Pyramid Pooling,SPP)模块,将输入的特征使用 1×1,5×5,9×9,13×13 的最大池化的方式池化,再将不同尺度的特征图进行 Concat 操作。总而言之,YOLO V4 结合很多的深度学习算法的提升精度技巧,在精度和速度上都优于 YOLO V3。

Yolo V

4

结构

CSPDark

N

et

5

3

图 2-11  YOLO v4 网络结构

Fig.2-11  Network structure of YOLO v4

YOLO V5:

YOLOv5YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5COCO数据集上面的测试效果还是挺不错的。大家对YOLOv5算法的创新性半信半疑,有的人对其持肯定态度,有的人对其持否定态度。在我看来,YOLOv5检测算法中还是存在很多可以学习的地方,虽然这些改进思路看来比较简单或者创新点不足,但是它们确定可以提升检测算法的性能。其实工业界往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。他是一个在COCO数据集上预训练的物体检测架构和模型系列,它代表了Ultralytics对未来视觉AI方法的开源研究,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。YOLOv5YOLO系列的一个延申,您也可以看作是基于YOLOv3YOLOv4的改进作品。YOLOv5没有相应的论文说明,通过对源码分析,我们也能很快地了解YOLOv5的网络架构和工作原理。

1、自适应锚框计算

YOLOv3YOLOv4中,是通过K-Means方法来获取数据集的最佳anchors,这部分操作需要在网络训练之前单独进行。为了省去这部分"额外"的操作,Yolov5的作者将此功能嵌入到整体代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。当然,如果觉得计算的锚框效果不是很好,也可以在代码中将自动计算锚框功能关闭。

2、自适应灰度填充

为了应对输入图片尺寸 不一的问题,通常做法是将原图直接resize成统一大小,但是这样会造成目标变形,如下图所示:

为了避免这种情况的发生,YOLOv5采用了灰度填充的方式统一输入尺寸,避免了目标变形的问题。灰度填充的核心思想就是将原图的长宽等比缩放对应统一尺寸,然后对于空白部分用灰色填充。如下图所示:

总结yolo

YOLOv1的基本框架如图2所示,首先调整输 入图片大小到448×448,送入CNN提取特征,然后 处理网络预测结果,实现端到端的目标检测。CYOLOv1放弃传统的滑动窗口技术,其CNN 将输入图片划分成 网格,然后每个单元格负 责去检测那些中心点落在该网格内的目标,每个单 元格会预测 个边界框及边界框的置信度。置信度 包含该边界框含有目标的可能性大小和该边界框的 准确度。每个边界框预测5个元素:(x,y,w,h,c)分别表示边界框的位置、大小与置信度。每个单元 格预测(B×5+C)个值,其中C为类别数。之后利用非极大值抑制(Non-Maximum Suppression, NMS)算法进行网络预测。 后续YOLO系列均传承该基本思想。另外,基 于PyTorch开发的YOLOv5[14]尚处于快速发展的实 验阶段,且没有论文公开发表,其特点是代码更容 易理解和扩展。

你可能感兴趣的:(目标检测,算法,深度学习)