锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

YOLO系列(YOLOv1-YOLOv5)算法详细介绍和总结

时间:2023-08-22 20:07:00 1sma22at3g抑制二极管

YOLO系列(YOLOv1-YOLOv5)详细介绍和总结算法


文章目录

  • YOLO系列(YOLOv1-YOLOv5)详细介绍和总结算法
  • 前言
  • YOLOv1
    • YOLOv1思想
    • YOLOv1网络结构
    • YOLOv1的损失函数
    • YOLOv1的问题
  • YOLOv2
    • YOLOv2在YOLOv在此基础上做了以下尝试
      • 1. Batch Normalization
      • 2. High Resolution Classifier
      • 3. Convolutional With Anchor Boxes
      • 4. Dimension Clusters
      • 5. Direct location prediction
      • 6. Fine-Grained Features
      • 7. Multi-Scale Training
    • Backbone:Darknet-19
    • YOLOv2模型框架
  • YOLOv3
    • Backbone:Darknet53
    • YOLOv3网络框架
    • 预测目标边界框
    • 匹配正负样本
    • YOLOv3损失函数
  • YOLOv4
    • YOLOv4网络结构
    • 优化策略
    • Backbone:CSPDarknet53
    • Neck:SPP
    • Neck:PAN
    • 优化策略—Eliminate grid sensitivity
    • 优化策略—Mosaic data augmentation
    • 优化策略—IoU threshold(match posotive samples)
    • 优化策略—Optimizered Anchors
    • 优化策略—CIOU
  • YOLOv5
    • YOLOv5网络结构
    • SPPF
    • YOLOv数据增强增强策略
    • YOLOv5训练策略
    • YOLOv5损失函数


前言

本文对YOLO介绍了一系列网络,站在巨人的肩膀上YOLO总结了系列网络。


YOLOv1

YOLOv1思想

在这里插入图片描述

如上图所示,将图像分成图像SxS个网格(grid cell),如果某个object如果该网格的中心落在该网格中,则该网格负责预测该网格object。

B应预测每个网格bounding box,每个bounding box除了预测位置外,还应附加预测位置confidence值。每个网格还需要预测c类的分数。


网络最终输出7x7.深度为30的特征
矩阵。我们可以单独查看延伸深度方向的一行向量(图中的浅黄色)。由于深度为30,该向量有30个值进一步分割,因为每个网格需要预测两个bounding box,每个bounding box预测5个值,每个值包括四个坐标信息和一个confidence,同时还包括20个类别分数。

YOLOv1网络结构

YOLOv1的损失函数

YOLOv损失包括三部分:bounding box损失、confidence损失和classes损失。在计算损失时,主要使用误差平方和解决方案

YOLOv1的问题

  • 对于一些群体性小目标,检测结果相对较差
  • 当目标出现新的尺寸和配置时,目标检测结果相对较差
  • 定位不准确

YOLOv2

YOLOv2在YOLOv在此基础上做了以下尝试

1. Batch Normalization

通过使用Batch Normalization对模型的训练收敛有很大的帮助,减少了正则化处理MAP如果值增加2%,也可以移除dropout操作。

2. High Resolution Classifier

在YOLOv2244用于使用224x而在 YOLOv作者采用了448x以448的尺寸作为输入,论文总是表明可以使用更大的分辨率作为输入MAP提高4%的值。

3. Convolutional With Anchor Boxes

在YOLOv1中间直接预测边界框的中心坐标、宽度和高度,定位效果差,所以在YOLOv2中作者采用anchor使用目标框进行预测anchor也可以使网络更容易的去学习和收敛。

4. Dimension Clusters

根据训练集中的标记框使用K-means先验框获得算法聚类。

5. Direct location prediction

直接是使用anchor预测发现训练模型中的训练不稳定,大部分不稳定因素来自中心坐标的预测部分,因此作者提出采用以下方法anchor预测方式。

6. Fine-Grained Features

底层特征信息将包含更多的特征细节,这些细节需要测试小目标,因此高层信息和低层信息的集成。

7. Multi-Scale Training

使用不同的图像尺寸作为输入训练,以提高网络的鲁棒性。每次迭代10个batch随机选择网络的输入尺寸,因为YOLOv2中的特征图缩放因子为32,所以网络中使用的特征图是32的整数倍(320,352…609)。

Backbone:Darknet-19

Darknet-19包括19个卷积层,6个池化和1个Softmax。

YOLOv2模型框架

通过移除最后一个卷积层来修改网络进行检测,而是添加三个 3 x 3 每个卷积层都有卷积层 1024 一个过滤器,然后是最终的 1 x 1 卷积层,包括我们需要检测的输出量。 对于 VOC,我们预测 5 每个框都有一个框 5 个坐标,每个框有 20 所以使用125 个卷积核。 我们还从最后 3 × 3 × 512 层到倒数第二个卷积层添加了一个特征融合层,以便模型可以使用细粒度特征。

YOLOv3

Backbone:Darknet53

YOLOv3在YOLOv改进了2backbone,YOLOv3的backbone如图

YOLOv3采用darknet-53作为backbone,53表示有53层卷积层,darknet-53没有卷积层。

YOLOv3网络框架

YOLOv如图1所示,3结构示意图YOLOv使用全卷积网络Darknet53提取网络作为特征,Darknet53由5组不同尺度的特征提取层组成,组特征提取层包括下采样卷积单元和残差结构单元(Residual),下采样卷积单元包括卷积核为3×3、步幅为2的卷积、批量归一化层(bath normalization,BN)和激活函数(Leaky Relu),使用批量归一化和Leak Relu激活函数能加速算法的收敛速度。残差结构单元由两条支路组成,第一条支路将上一层输出的特征图进行卷积核为3×3和1×1的卷积操作,首先使用1×1的卷积对输入特征图进行通道压缩,然后使用3×3的卷积进行特征提取。第二条支路将上一层输出的特征图进行恒等映射,最后将两条支路对应通道上的特征图进行融合,这种残差结构通过卷积核之间跳转相连(skip connection)的方式增加了模型对于特征图的复用程度,同时避免了因网络深度不断增加导致的网络性能退化问题。

随着卷积网络的不断深入,深层卷积得到的特征图语义信息越抽象,从而使小目标的特征信息容易丢失。YOLOv3借鉴特征金字塔网络结构(FPN,feature pyramid networks)实行多尺度检测的方法。将416×416尺寸的图像输入YOLOv3算法中,经过5次下采样后得到13×13、26×26和52×52尺寸的特征图,首先将13×13尺寸的特征图二倍上采样后与26×26尺寸的特征图融合,获得包含浅层特征信息和深层特征信息的特征图,然后将特征图再次二倍上采样与52×52尺寸的特征图融合,最后分别在13×13、26×26和52×52尺寸的特征图上进行目标检测。

目标边界框的预测

YOLOv3中的anchor机制和YOLOv2是一样的,但是与SSD和Faster RCNN不一样的是,SSD和Faster RCNN预测的有关目标中心点的参数是相对于anchor而言的,但是在YOLOv3中预测的有关目标中心点的参数相对于cell左上角点而言。

图中虚线对应的矩形框就是anchor,我们只需要关注anchor的宽度P_w和高度P_h两个参数,蓝色矩形框是网络最终预测的目标位置和大小。需要注意的是由于Sigmoid函数结果是0~1之间,所以最终预测的b_x、b_y也是在0和1之间,所以Sigmoid函数将预测的边界框中心点限制当前cell之间,从而加框网络收敛。

正负样本的匹配

针对每一个bounding box 都会分配一个bounding box prior,即针对每一个ground truth 都会分配一个正样本,一张图像中有几个ground truth就有几个正样本,分配原则其实也很简单,就是将与ground truth重合程度最大的bounding box prior作为正样本,如果与ground truth重合程度不是最大的但是又超过了某个阈值的bounding box prior,就直接丢弃,将最后剩下的样本作为负样本。

YOLOv3损失函数

YOLOv3的损失包括三部分:置信度损失、分类损失和定位损失。

置信度损失为二值交叉熵损失


其中o_i表示预测目标边界框与真实目标边界框的IOU,c为预测值,c_hat为c通过Sigmoid函数得到的预测置信度,N为正负样本个数。

类别损失同样采用的是二值交叉熵损失

其中o_ij表示预测目标边界框i中是否存在第j类目标,C_ij为预测值,C_ij_hat为C_ij通过Sigmoid函数得到的目标概率,N_pos为正样本个数。

定位损失

YOLOv4

YOLOv4网络结构

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLOv3

优化策略

  • Eliminate grid sensitivity
  • Mosaic data augmentation
  • IoU threshold(match posotive samples)
  • Optimizered Anchors
  • CIOU

Backbone:CSPDarknet53

YOLOv4使用的CSPDarknet53相比YOLOv3的Darknet53添加了CSP结构,如图

添加CSP可以提高CNN学习的能力,移除计算瓶颈,降低显存的使用。

Neck:SPP

SPP模块经输入的特征层依次输入kernel为5x5、9x9和13x13的最大池化下采样层,且stride都是1,通过padding操作后输出尺寸和通道数和输出完全一样,然后将三个最大池化后的输出和原输入进行拼接。

Neck:PAN

(a)中在backbone提取的特征图上构建特征金字塔,即FPN模块,FPN模块将高层的语义信息通过上采样与低层的 语义信息融合,(b)中的过程正好相反,将低层的特征图通过下采样再与高层的特征图融合,而(a)和(b)共同构成了PAN模块。

还要注意的是,原始的PAN模块特征图的融合使用的是add策略,在YOLOv4中使用concate策略,将两个特征图在深度方向进行拼接

优化策略—Eliminate grid sensitivity

首先回忆一下YOLOv3如何进行目标边界框预测的,CNN网络计算每个cell中的每个anchor预测目标边界框回归参数以及针对每个类别的score分数,其中sigmoid函数将anchor中心点的位置限制在一个cell内部,这就会面临一个问题,就是如果目标框的中心点在cell的边界时sigmoid函数将不再适用,为了解决这个问题,YOLOv4在原来公式的基础上加了一个缩放因子scale。

YOLOv4改进后的预测目标边界框回归参数公式如下


目前主流的选择scale为2,则公式对应如下

优化策略—Mosaic data augmentation

在输入网络进行训练时,将四张不同的图片按一定的规则拼接在一起,这样在做具有以下优势:

  • 增加数据的多样性
  • 增加目标个数
  • BN能一次性统计多张图片的参数

优化策略—IoU threshold(match posotive samples)

将每一个GT和anchor temple进行匹配,针对每一个检测层都对应3
个不同的模板AT1、AT2和AT3,将每一个GT和anchor左上角对其计算IoU,并将IoU大于阈值的anchor作为正样本。

优化策略—Optimizered Anchors

YOLOv4用的YOLOv3不同

优化策略—CIOU

YOLOv5

YOLOv5网络结构

  • Backbone: New CSP-Darknet53
  • Neck: SPPF, New CSP-PAN
  • Head : YOLOv3 Head

SPPF

SPPF中依次将输入串联通过3个5x5的最大池化层,然后再与书瑞进行拼接,为什么要这么做呢,因为将两个5x5的池化层进行串联等价于使用一个9x9的最大池化,而使用3个5x5的最大池化又等价于一个13x13的最大池化,但是使用SPPF比SPP效率更高。

YOLOv5中的数据增强策略

  • Mosaic(图像拼接)
  • Copy paste(将不同图像中的目标进行负值和粘贴)
  • Random affine(随机仿射变换:旋转、平移等)
  • MixUp(将两张图片按一定透明程度混合成一张图片)
  • Albumentations(滤波、直方图均衡化以及改变图片质量等等)
  • Augment HSV(调整图像色度、透明度和饱和度)
  • Random horizontal flip(水平翻转)

YOLOv5训练策略

  • Multi-scale training(0.5~1.5x)(多尺度训练)
  • AutoAnchor(For training custom data)(重新生成anchor)
  • Warmup and Cosine LR scheduler(学习率的调整)
  • EMA(Exponential Moving Average)Mixed precision(将学习变量添加一个动量)
  • Mixed precision(混合精度训练)
  • Evolve hyper-parameters

YOLOv5损失函数

YOLOv5的损失由三部分组成:

  • Classes loss,分类损失,采用的是BCE loss(二值交叉熵损失),注意只计算正样本的分类损失。
  • objectness loss,obj损失,采用的依然是BCE loss,注意这里的obj指的是网络预测的目标边界框与GT
    Box的CIoU。这里计算的是所有样本的obj损失。
  • Location loss,定位损失,采用的是CIoU loss,注意只计算正样本的定位损失。

本文参考:https://blog.csdn.net/qq_37541097?type=blog


如果本文对您有帮助的话,记得点赞哦!

写作不易,您的支持是对我最大的鼓励!!!

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章