目标检测——YOLO系列(一网打尽)

YOLO系列算法

  • 1. 基本概念
  • 2. 目标检测算法分类及流程
    • 2.1 算法分类
    • 2.2 基本流程
    • 2.3 Two-stage与One-stage基本流程比较
  • 3. YOLO系列目标检测模型
    • 3.1 YOLO v1
      • 3.1.1 基本思想
      • 3.1.2 网络结构
      • 3.1.3 训练过程
      • 3.1.4 优缺点
    • 3.2 YOLO v2
      • 3.2.1 基本介绍
      • 3.2.2 改进之处
      • 3.2.3 训练过程
      • 3.2.4 优缺点
    • 3.3 YOLO v3
      • 3.3.1 基本介绍
      • 3.3.2 改进之处
      • 3.3.3 多尺度预测
      • 3.3.4 基础网络 Darknet-53
      • 3.3.5 主干架构的性能对比
    • 3.4 YOLO v4
      • 3.4.1 基本介绍
      • 3.4.2 贡献之处
      • 3.4.3 实验
    • 3.5 YOLO v5
      • 3.5.1 基本介绍
      • 3.5.2 模型效果
  • 4. 结尾
  • 参考文献

友情提示:参考文献中附有原论文地址

1. 基本概念

目标检测(Object Detection)是在图像中对一类或多类感兴趣的目标进行查找和分类,确定它们的类别和位置。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域具有挑战性的问题。

计算机视觉中关于图像识别有四大类任务:

(1)分类(Classification):解决“是什么”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

(2)定位(Location):解决“在哪里”的问题,即定位出这个目标的的位置。

(3)检测(Detection):解决“在哪里,是什么”的问题,即定位出这个目标的位置并且知道目标物是什么。

(4)分割(Segmentation):分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

因此,我们可以发现目标检测网络是一个多任务的网络,它不仅要进行一个分类还要进行定位回归,如下图1所示。

目标检测——YOLO系列(一网打尽)_第1张图片

图1 图像识别

目标检测中需解决的问题:

(1)分类问题:即图片(或某个区域)中的图像属于哪个类别。

(2)定位问题:目标可能出现在图像的任何位置。

(3)大小问题:目标有各种不同的大小。

(4)形状问题:目标可能有各种不同的形状。

2. 目标检测算法分类及流程

2.1 算法分类

近年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region ProposalR-CNN系列算法(R-CNNFast R-CNN, Faster R-CNN等),它们属于two-stage算法,需要算法先产生目标候选框,也就是目标位置,然后再对候选框做分类与回归。而另一类是YOLOSSD这类one-stage算法,其仅仅使用一个主干卷积神经网络CNN直接预测不同目标的类别与位置。第一类方法是识别精度较高,但是速度慢,第二类算法是速度较快,但识别精度较低,如下图2所示。

目标检测——YOLO系列(一网打尽)_第2张图片

图2 目标检测算法

2.2 基本流程

传统的目标检测流程如下图3所示。首先输入图像,然后通过输入候选框,对候选框进行特征的提取,再利用分类器对候选框进行判断属于目标还是背景,最后利用非极大值抑制对候选框进行合并,删除冗余的候选框,最终得到目标输出的结果。

在这里插入图片描述

图3 传统目标检测流程

基于深度学习的Two-stage的目标检测算法流程如图4所示。将候选框、特征提取和分类器判断通过RPN网络来完成候选框的推荐,取代手动设计特征滑动窗口的方式。
目标检测——YOLO系列(一网打尽)_第3张图片

图4 Two-stage目标检测算法流程

基于深度学习的One-stage的目标检测算法直接采用特征提取与回归的方式对感兴趣目标区域进行提取,如下图5所示。
目标检测——YOLO系列(一网打尽)_第4张图片

图5 One-stage目标检测算法流程

传统的目标检测算法与基于深度学习的目标检测方法的区别主要取决于是否采用手动设计特征的方式还是采用卷积神经网络的方式

2.3 Two-stage与One-stage基本流程比较

Two-stage网络中,Img为输入的图像,Conv&Pooling为深度卷积神经网络,不代表只有一个卷积层,而是代表主干基础网络(如GooleNetResNet等)。通过主干网络进行深度特征的提取,再将输出的特征图(Feature Map)经过RPN网络完成原有通过滑动窗口完成的任务,即产生候选区域。候选区域提取的同时完成区域分类的任务,区分是背景还是目标,还会对目标位置进行初步的预测,即区域分类和位置粗修两个环节,在得到候选框后,后续会进一步精确地定位。Roi_Pooling层可以理解为一个抠图的过程,得到候选框特征后再通过全连接FC层对特征进行表示,最后通过分类与回归完成对候选目标位置的分类和精修,Lcls识别出目标的种类,Lreg得到目标的位置坐标。在One-stage中,通过输入图像Img,然后主干网络进行深度特征的提取,接着直接进行区域的回归与分类,完成目标检测任务。

目标检测——YOLO系列(一网打尽)_第5张图片

(a) Two-stage基本流程

在这里插入图片描述

(b) One-stage基本流程
图6 Two-stage与One-stage基本流程比较

3. YOLO系列目标检测模型

3.1 YOLO v1

3.1.1 基本思想

YOLOYou Only Look Once)是继RCNNFAST-RCNNFASTER-RCNN之后,Ross Girshick针对深度学习目标检测速度问题提出的另一种框架,其核心思想是将整张图片作为网络的输入(类似于Faster-RCNN),直接在输出层对Bounding Box的位置和所属类别进行回归

基于Region ProposalR-CNN系算法首先需要产生大量可能包含待检测物体的先验框, 然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所属类别的概率或者置信度,同时需要后续处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。YOLO创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。下图展示了各网络目标检测流程简图。

目标检测——YOLO系列(一网打尽)_第6张图片

图7 各网络目标检测流程简图

实际上,YOLO并没有真正去掉候选区,而是采用了预定义候选区的方法,也就是将图片划分为7*7个网格,每个网格允许预测出2个边框,总共49*2bounding box,可以理解为98个候选区域,它们很粗略地覆盖了图片的整个区域。YOLO以降低mAP为代价,大幅提升了时间效率。

图8 图像网格划分产生候选框

图8是将一幅图像划分为7*7(S×S)个网格,其中的红点代表的是Ground Truth,即物体的中心,包含有Ground Truth的格子用来预测狗这个目标,橙色的这个格子在训练过程中是用来预测外面包含狗的这个红色Bounding Box的,而绿色和白色的格子在训练过程中仅作为分类的依据,并不参与狗的这个Bounding Box的预测。

每个格子用来预测B个Bounding Box及其置信度,以及C个类别的概率,其中每个Bounding Box包含 [ x , y , w , h , c ] [x,y,w,h,c] [x,y,w,h,c] 5个参数新, ( x , y ) (x,y) (x,y)坐标表示中心点相对于网格的偏移量,宽度 w w w和高度 h h h是相对于整张图像预测的比例,置信度 c c c预测表示预测框与实际边界框之间的IOU。因此,每幅图像所输出的向量长度为 S × S × ( 5 × B + C ) S×S×(5×B+C) S×S×(5×B+C),如图9所示。置信度分数反映了该模型对框是否包含目标的可靠程度,以及它预测框的准确程度。置信度定义为:

P r ( O b j e c t ) ∗ I O U p r e d t r u t h , 其 中 P r ( O b j e c t ) ∈ { 0 , 1 } Pr(Object)*IOU_{pred}^{truth}, \quad其中Pr(Object)∈\left\{0,1\right\} Pr(Object)IOUpredtruth,Pr(Object){0,1}

如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度分数等于预测框与真实值之间联合部分的交集(IOU)。每个网格单元还预测 C C C个类别条件概率 P r ( C l a s s i ∣ O b j i e c t ) Pr(Class_i|Objiect) Pr(ClassiObjiect)
目标检测——YOLO系列(一网打尽)_第7张图片

图9 图像输出的向量长度

下图可以更清晰看到YOLO v1的预测过程,对于每一个网格预测2个Bounding Box,每个Bounding Box包含有5个与测量和20个类别概率,即最终输出了1470个向量。通过NMSBounding Box的合并,并过滤掉冗余的候选框得到相应的检测结果。

目标检测——YOLO系列(一网打尽)_第8张图片

图10 YOLO v1的预测过程

3.1.2 网络结构

YOLO v1网络结构有24个卷积层,后面是2个全连接层。仅使用1×1卷积降维层,后面是3×3卷积层,如下图所示。

目标检测——YOLO系列(一网打尽)_第9张图片

3.1.3 训练过程

  • 预训练。采用前20个卷积层、平均池化层、全连接层进行了大约一周的预训练;
  • 输入。输入数据为224×224448×448大小的图像。
  • 采用相对坐标。通过图像宽度和高度来规范边界框的宽度和高度,使它们落在0和1之间,边界框 x x x y y y坐标参数化为特定网格单元位置的偏移量,边界也在0和1之间。
  • 损失函数。由坐标预测、是否包含目标物体置信度、类别预测构成。如果目标存在于该网格单元中(前面讨论的条件类别概率),则损失函数仅惩罚分类错误。如果预测器“负责”实际边界框(即该网格单元中具有最高IOU的预测器),则它也仅惩罚边界框坐标错误。

目标检测——YOLO系列(一网打尽)_第10张图片

  • 学习率。第一个迭代周期,慢慢地将学习率从 1 0 − 3 10^{-3} 103提高到 1 0 − 2 10^{-2} 102,然后继续以 1 0 − 2 10^{-2} 102的学习率训练75个迭代周期,用 1 0 − 3 10^{-3} 103的学习率训练30个迭代周期,最后用 1 0 − 4 10^{-4} 104的学习率训练30个迭代周期。
  • 避免过拟合策略。使用dropout和数据增强来避免过拟合。

3.1.4 优缺点

(1)优点

  • YOLO检测物体速度较快,其增强版GPU中能跑45fpsframe per second),简化版155fps
  • YOLO在训练和测试时都能看到一整张图的信息(而不像其它算法看到局部图片信息),因此YOLO在检测物体是能很好利用上下文信息,从而不容易在背景上预测出错误的物体信息。
  • YOLO可以学到物体泛化特征

(2)缺点

  • 精度低于其它state-of-the-art的目标检测网络。
  • 对小物体检测效果不好,尤其是密集的小物体,因为一个栅格只能检测2个物体,限制检测效率。
  • 容易产生定位错误

3.2 YOLO v2

3.2.1 基本介绍

YOLO v2相对v1版本,在继续保持处理速度的基础上,从预测更准确(Better),速度更快(Faster),识别对象更多(Stronger)这三个方面进行了改进。在精度上利用一些列训练技巧,在速度上应用了新的网络模型DarkNet19,在分类任务上采用联合训练方法,结合wordtree等方法,使YOLO v2的检测种类扩充到了上千种,作者在论文中称可以检测超过9000个目标类别,所以也称YOLO 9000YOLO v2模型可以以不同的尺寸运行,从而在速度和准确性之间提供了一个简单的折衷,在67fps时,YOLO v2VOC 2007上获得了mAP=76.8 %;在40fps时,YOLO v2获得了mAP=78.6%,比使用ResNetFaster R-CNNSSD等先进方法表现更出色,同时仍然运行速度显著更快。

3.2.2 改进之处

YOLO v2相对YOLO v1采取了很多改进措施,以提高模型mAP,如下图所示:

目标检测——YOLO系列(一网打尽)_第11张图片
(1)批量归一化(Batch Normalization)

批归一化有助于解决反向传播过程中的梯度消失和梯度爆炸问题,降低对一些超参数(比如学习率、网络参数的大小范围、激活函数的选择)的敏感性,并且每个batch分别进行归一化的时候,起到了一定的正则化效果(YOLO v2不再使用dropout),从而能够获得更好的收敛速度和收敛效果,mAP提升2.4%

通常,一次训练会输入一批样本(batch)进入神经网络。批规一化在神经网络的每一层,在网络(线性变换)输出后和激活函数(非线性变换)之前增加一个批归一化层(BN),BN层进行如下变换:① 对该批样本的各特征量(对于中间层来说,就是每一个神经元)分别进行归一化处理,分别使每个特征的数据分布变换为均值0,方差1。从而使得每一批训练样本在每一层都有类似的分布,这一变换不需要引入额外的参数。② 对上一步的输出再做一次线性变换,假设上一步的输出为Z,则Z1=γZ + β。这里γβ是可以训练的参数。增加这一变换是因为上一步骤中强制改变了特征数据的分布,可能影响了原有数据的信息表达能力。增加的线性变换使其有机会恢复其原本的信息。

(2)高分辨率图像分类器(High resolution classifier)

YOLO v1在预训练的时候采用的是224×224的输入(这是因为一般预训练的分类模型都是在ImageNet数据集上进行的),然后在detection的时候采用448×448的输入,这会导致从分类模型切换到检测模型的时候,模型还要适应图像分辨率的改变。而YOLO v2则将预训练分成两步:先用224×224的输入从头开始训练网络,大概160个epoch(表示将所有训练数据循环跑160次),然后再将输入调整到448×448,再训练10个epoch。注意这两步都是在ImageNet数据集上操作。最后再在检测的数据集上微调(fine-tuning),也就是detection的时候用448×448的图像作为输入就可以顺利过渡了。作者的实验表明这样可以提高mAP 3.7%

(3)带Anchor Boxes的卷积(Convolutional With Anchor Boxes)

YOLO v1利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLO v2去掉了YOLO v1中的全连接层,使用Anchor Boxes预测边界框,同时为了得到更高分辨率的特征图,YOLO v2还去掉了一个池化层。由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,若特征图恰好有一个中心位置,利用这个中心位置预测中心点落入该位置的物体,对这些物体的检测会更容易。所以总希望得到的特征图的宽高都为奇数。YOLO v2通过缩减网络,使用416×416的输入,模型下采样的总步长为32,最后得到13×13的特征图,然后对13×13的特征图的每个cell预测5个anchor boxes,对每个anchor box预测边界框的位置信息、置信度和一套分类概率值。使用anchor boxes之后,YOLO v2可以预测13×13×5=845个边界框,模型的召回率由原来的81%提升到88%mAP由原来的69.5%降低到69.2%,召回率提升了7%,准确率下降了0.3%

(4)维度聚类(Dimension Clusters)

Faster R-CNN和SSD中,先验框都是手动设定的,带有一定的主观性。YOLO v2采用k-means聚类算法对训练集中的边界框做了聚类分析,选用boxes之间的IOU值作为聚类指标。综合考虑模型复杂度和召回率,最终选择5个聚类中心,得到5个先验框,发现其中中扁长的框较少,而瘦高的框更多,更符合行人特征。通过对比实验,发现用聚类分析得到的先验框比手动选择的先验框有更高的平均IOU值,这使得模型更容易训练学习。

目标检测——YOLO系列(一网打尽)_第12张图片

(5)直接定位预测(Direct location Prediction)

Faster R-CNN使用anchor boxes预测边界框相对先验框的偏移量,由于没有对偏移量进行约束,每个位置预测的边界框可以落在图片任何位置,会导致模型不稳定,加长训练时间。YOLO v2沿用YOLO v1的方法,根据所在网格单元的位置来预测坐标,则Ground Truth的值介于0到1之间。网络中将得到的网络预测结果再输入sigmoid函数中,让输出结果介于0到1之间。设一个网格相对于图片左上角的偏移量是 c x c_x cx c y c_y cy,先验框的宽度和高度分别是 p w p_w pw p h p_h ph,则预测的边界框相对于特征图的中心坐标 ( b x , b y ) (b_x, b_y) (bx,by)和宽度 b w b_w bw b h b_h bh的计算公式如下图所示。其中,σ为sigmoid函数, t x t_x tx t y t_y ty是预测的坐标偏移值(中心点坐标), t w t_w tw t h t_h th是尺度缩放,分别经过sigmoid,输出0-1之间的偏移量,与 c x c_x cx c y c_y cy相加后得到bounding box中心点的位置。

目标检测——YOLO系列(一网打尽)_第13张图片

(6)细粒度特征(Fine-Grained Features)

YOLO v2借鉴SSD使用多尺度的特征图做检测,提出pass through层将高分辨率的特征图与低分辨率的特征图联系在一起,从而实现多尺度检测。YOLO v2提取Darknet-19最后一个max pool层的输入,得到26×26×512的特征图。经过1×1×64的卷积以降低特征图的维度,得到26×26×64的特征图,然后经过pass through层的处理变成13×13×256的特征图(抽取原特征图每个2×2的局部区域组成新的channel,即原特征图大小降低4倍,channel增加4倍),再与13×13×1024大小的特征图连接,变成13×13×1280的特征图,最后在这些特征图上做预测。使用细粒度特征(Fine-Grained Features),YOLO v2的性能提升了1%

(7)多尺度训练(Multi-Scale Training)

YOLO v2中使用的Darknet-19网络结构中只有卷积层和池化层,所以其对输入图片的大小没有限制。YOLO v2采用多尺度输入的方式训练,在训练过程中每隔10个batches,重新随机选择输入图片的尺寸,由于Darknet-19下采样总步长为32,输入图片的尺寸一般选择32的倍数{320,352,…,608}(最小的选项是320×320,最大的是608×608。我们调整网络的尺寸并继续训练)。采用多尺度训练(Multi-Scale Training), 可以适应不同大小的图片输入,当采用低分辨率的图片输入时,mAP值略有下降,但速度更快,当采用高分辨率的图片输入时,能得到较高mAP值,但速度有所下降。

3.2.3 训练过程

  • 第一阶段:先在ImageNet分类数据集上训练Darknet-19,此时模型输入为224×224,共训练160轮。
  • 第二阶段:将网络输入调整为448×448,继续在ImageNet分类数据集上训练细调模型,共10轮,此时分类模型top-1准确率为76.5%,而top-5准确度为93.3%
  • 第三阶段:修改Darknet-19分类模型为检测模型,并在检测数据集上继续细调网络。

3.2.4 优缺点

(1)优点

  • YOLO v2使用了一个新的分类器作为特征提取部分,较多使用了3×3卷积核,在每次池化后操作后把通道数翻倍。网络使用了全局平均池化,把1×1卷积核置于3×3卷积核之间,用来压缩特征。也用了batch normalization稳定模型训练。
  • 最终得出的基础模型就是Darknet-19,包含19个卷积层,5个最大池化层,- 运算次数55.8亿次,top-1图片分类准确率72.9%top-5准确率91.2%
  • YOLO v2VGG16更快,精度略低于VGG16

(2)缺点

  • YOLO v2检测准确率不够,比SSD稍差。
  • 不擅长检测小物体。
  • 对近距离物体准确率较低。

3.3 YOLO v3

3.3.1 基本介绍

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

3.3.2 改进之处

(1)引入FPN(特征金字塔网络),实现多尺度预测 。
(2)使用新网络结构darknet-53(类似于ResNet引入残差结构)。
(3)分类器不在使用Softmax分类损失采用二分类交叉损失熵binary cross-entropy loss)。主要考虑因素有两个:

  • Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。
  • Softmax可被独立的多个logistic分类器替代,且准确率不会下降。

3.3.3 多尺度预测

YOLO v3在基本特征提取器上添加几个卷积层,其中最后一个卷积层预测了一个三维张量——边界框,目标和类别预测。 在COCO实验中,为每个尺度预测3个框,4个边界框偏移量,1个目标预测和80个类别预测,张量的大小为 N × N × [ 3 × ( 4 + 1 + 80 ) ] N×N×[3 ×(4 + 1 + 80)] N×N×[3×(4+1+80)]

YOLO v3还从主干网络层中获取特征图,并使用按元素相加的方式将其与上采样特征图进行合并。这种方法能够从上采样的特征图中获得更有意义的语义信息,同时可以从更前的层中获取更细粒度的信息。然后,再添加几个卷积层来处理这个组合的特征图,并最终预测出一个类似的张量。

每种尺度预测3个boxanchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3个尺度。

  • 尺度1: 在基础网络之后经过卷积输出13×13特征层信息。
  • 尺度2: 从尺度1中倒数第二13×13卷积层上采样(x2)后与主干网络26x26大小的特征图相堆叠,再通过卷积后输出26×26特征层信息。
  • 尺度3: 与尺度2类似卷积后输出52×52特征层信息。

3.3.4 基础网络 Darknet-53

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

目标检测——YOLO系列(一网打尽)_第14张图片

YOLO v1YOLO v2再到YOLO9000YOLO v3YOLO经历三代变革,在保持速度优势的同时,不断改进网络结构,同时汲取其它优秀的目标检测算法的各种trick,先后引入anchor box机制、引入FPN实现多尺度检测等。

目标检测——YOLO系列(一网打尽)_第15张图片
每个网络都使用相同的设置进行训练,并在256×256的图像上进行单精度测试。 运行时间是在Titan X上用256×256图像进行测量的。因此,Darknet-53可与最先进的分类器相媲美,浮点运算更少,速度更快。 Darknet-53ResNet-101更好,且速度快1.5倍。 Darknet-53ResNet-152具有相似的性能,但速度快2倍。

Darknet-53也实现了最高的每秒浮点运算测量。 这意味着网络结构可以更好地利用GPU,使它的评测更加高效,更快, 这主要是因为ResNet的层数太多,效率不高。

3.3.5 主干架构的性能对比

(1)兼顾速度与准确率。在COCO数据集上,mAP指标与SSD模型相当,但速度提高了3倍;mAP指标比RetinaNet模型差些,但速度要高3.8倍。

目标检测——YOLO系列(一网打尽)_第16张图片

(2)小目标检测有所提升,但中等和更大尺寸的物体上的表现相对较差。

目标检测——YOLO系列(一网打尽)_第17张图片

3.4 YOLO v4

3.4.1 基本介绍

YOLO v4的特点是集大成者,类似综述,但有实验的过程。YOLO v4COCO数据集上,可达 AP 43.5%,速度高达65fps,最终达到这么高的性能,一定是不断尝试、不断总结、不断调参的结果。主要包括以下方面:

  • Weighted-Residual-Connections (WRC)
  • Cross-Stage-Partial-connections (CSP)
  • Cross mini-Batch Normalization (CmBN)
  • Self-adversarial-training (SAT)
  • Mish-activation
  • Mosaic data augmentation
  • CmBN
  • DropBlock regularization
  • CIoU loss

3.4.2 贡献之处

(1)提出了一种高效而强大的目标检测模型。可以使用1080 Ti2080 Ti GPU 训练超快速和准确的目标检测器。

(2)在检测器训练期间,验证了SOTABag-of FreebiesBag-of-Specials方法的影响。

(3)改进了SOTA的方法,使它们更有效,更适合单GPU训练,包括CBN [89],PAN [49],SAM [85]等。文章将目前主流的目标检测器框架进行拆分:input、backbone、neck 和 head,如下图所示。

目标检测——YOLO系列(一网打尽)_第18张图片

(4)对于GPU,作者在卷积层中使用:CSPResNeXt50 / CSPDarknet53
(5)对于VPU,作者使用分组卷积,但避免使用(SE)块-具体来说,它包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3
作者的目标是在输入网络分辨率,卷积层数,参数数量和层输出(filters)的数量之间找到最佳平衡。

YOLO v4框架:

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLO v3

其中YOLO v4用到相当多的技巧:

  • 用于backboneBoFCutMixMosaic数据增强,DropBlock正则化,Class label smoothing
  • 用于backboneBoSMish激活函数,CSPMiWRC
  • 用于检测器的BoFCIoU-lossCmBNDropBlock正则化,Mosaic数据增强,Self-Adversarial 训练,消除网格敏感性,对单个ground-truth使用多个anchorCosine annealing scheduler,最佳超参数,Random training shapes
  • 用于检测器的BosMish激活函数,SPPSAMPANDIoU-NMS

YOLO v4部分组件:
目标检测——YOLO系列(一网打尽)_第19张图片

3.4.3 实验

YOLO v4实验的充分性:

目标检测——YOLO系列(一网打尽)_第20张图片

目标检测——YOLO系列(一网打尽)_第21张图片
YOLO v4实验结果:

目标检测——YOLO系列(一网打尽)_第22张图片
目标检测——YOLO系列(一网打尽)_第23张图片
目标检测——YOLO系列(一网打尽)_第24张图片

具体试验结果数据详见论文原文。

3.5 YOLO v5

3.5.1 基本介绍

2020年2月YOLO之父Joseph Redmon宣布退出计算机视觉研究领域,2020 年 4 月 23 日YOLO v4 发布,YOLO V4YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%12%,并得到了Joseph Redmon的官方认可,被认为是当前最强的实时对象检测模型之一。正当计算机视觉的从业者们正在努力研究YOLO V4的时候,6月25日,Ultralytics发布了YOLO V5 的第一个正式版本,其性能与YOLO V4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强。

3.5.2 模型效果

YOLO v5按从小到大分为四个模型YOLO v5sYOLO v5mYOLO v5lYOLO v5x,这四个模型的表现见下图(v4.0版):

目标检测——YOLO系列(一网打尽)_第25张图片

YOLO v5 v5.0版本新增四个模型,加入了P6层,因此模型名后面加了个6,四个模型效果分别为:

目标检测——YOLO系列(一网打尽)_第26张图片

大家对YOLO v5命名是争议很大,因为YOLO v5相对于YOLO v4来说创新性的地方很少。不过它的性能应该还是有的,现在kaggle上active检测的比赛小麦检测前面的选手大部分用的都是YOLO v5的框架。

4. 结尾

YOLO系列目标检测目前已有5个版本,其核心思想大同小异,由于时间仓促,加之小编水平有限,文中难免疏漏及不足之处,敬请广大读者批评指正,不吝赐教,谢谢!

参考文献

  1. You Only Look Once:Unified, Real-Time Object Detection
  2. YOLO9000: Better, Faster, Stronger
  3. YOLOv3: An Incremental Improvement
  4. YOLOv4: Optimal Speed and Accuracy of Object Detection
  5. YOLO v1代码
  6. YOLO v4,3,2代码
  7. YOLO v5代码
  8. 目标检测(Object Detection)
  9. YOLO系列:YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5简介
  10. 目标检测综述
  11. YOLO 9000 中的WordTree细节问题
  12. GitHub wudashuo/yolov5: YOLOv5 汉化版,保持同步更新
如果文章对你有帮助,请记得点赞与关注,谢谢!

在这里插入图片描述

你可能感兴趣的:(目标检测系列,深度学习,目标检测,YOLO系列)