yolo V2相比v1的改进:

YOLO V2,V3,V4的主要改进:

YOLOV2较V1的改进

YOLO V2的改进效果非常符合原论文的题目:YOLO9000 Better,Faster,Stronger。

在这里插入图片描述
V2网络结构

**1.Batch Normalization(批归一化)😗*YOLO v2中在每个卷积层后加Batch Normalization(BN)层,去掉了dropout层,Batch Normalization层可以起到一定的正则化效果,能提升模型收敛速度,防止模型过拟合。YOLO v2通过使用BN层使得mAP提高了2%,并且有助于解决反向传播过程中的梯度消失和梯度爆炸问题。

在这里插入图片描述

**2.High Resolution Classifier(高分辨率预训练分类网络)😗*此前的大部分检测模型都会使用主流分类网络(如vgg、resnet)在ImageNet上的预训练模型作为特征提取器,而这些分类网络大部分都是以小于256 × 256 的图片作为输入进行训练的,低分辨率会影响模型检测能力。 YOLO v2将输入图片的分辨率提升448 × 448 ,为了使网络适应新的分辨率,YOLO v2先在ImageNet上以448 × 448的分辨率对网络进行10个epoch的微调,让网络适应高分辨率的输入。通过使用高分辨率的输入,YOLO v2的mAP提升了约4%。

3.Convolutional With Anchor Boxes(带Anchor Box的卷积):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预测边界框的位置信息、置信度和一套分类概率值。使用anchorboxes之后, YOLO v2可以预测13 × 13 × 5 = 845 个边界框,模型的召回率由原来的81%提升到88%,mAP由原来的69.5%降低到69.2%.召回率提升了7%,准确率下降了0.3%。

YOLO v2的论文中提出使用anchor box预测框会带来两个问题,一个是预测框的选择,一个是模型的稳定性,作者给出的解决方案如下:

**3.1.Dimension Clusters(维度聚类):**在Faster R-CNN和SSD中,先验框都是手动设定的,带有一定的主观性。 YOLO v2采用k-means聚类算法对训练集中的边界框做了聚类分析,并对度量距离租了改进,选用boxes之间的IOU值作为聚类指标。综合考虑模型复杂度和召回率,最终选择5 个聚类中心,得到5 个先验框,发现其中中扁长的框较少,而瘦高的框更多,更符合行人特征。通过对比实验,发现用聚类分析得到的先验框比手动选择的先验框有更高的平均IOU值,这使得模型更容易训练学习。YOLO V2聚类使用的度量距离公式:
d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d ) ​ d( box , centroid )=1−IOU( box , centroid ) ​ d(box,centroid)=1IOU(box,centroid)
3.2Direct location prediction(绝对位置预测)

Faster R-CNN使用anchor boxes预测边界框相对先验框的偏移量,由于没有对偏移量进行约束,每个位置预测的边界框可以落在图片任何位置,会导致模型不稳定,加长训练时间。 YOLO v2沿用 YOLO v1的方法,根据所在网格单元的位置来预测坐标,则Ground Truth的值介于0到1之间。网络中将得到的网络预测结果再输入sigmoid函数中,让输出结果介于0到1之间。设一个网格相对于图片左上角的偏移量是c x , c y cx,cycx,cy。先验框的宽度和高度分别是p w 和 p h pw和phpw和ph,则预测的边界框相对于特征图的中心坐标( b x , b y ) (bx,by)(bx,by)和宽高b w 、 b h bw、bhbw、bh的计算公式如下图所示。
在这里插入图片描述

YOLO v2结合Dimention Clusters, 通过对边界框的位置预测进行约束,使模型更容易稳定训练,这种方式使得模型的mAP值提升了约5%。

4.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层的处理变成13x13x256的特征图(抽取原特征图每个2x2的局部区域组成新的channel,即原特征图大小降低4倍,channel增加4倍),再与13 × 13 × 1024 大小的特征图连接,变成13 × 13 × 1280 的特征图,最后在这些特征图上做预测。使用Fine-Grained Features, YOLO v2的性能提升了1%.

在这里插入图片描述

passthroug具体是怎么1拆4的呢?并不是简单的“两刀切4块”,而是在每个2 × 2 2×22×2的小区域上都选择左上角块,具体看下图。

在这里插入图片描述

5.Multi-Scale Training(多尺寸训练)

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

YOLO v2借鉴了很多其它目标检测方法的一些技巧,如Faster R-CNN的anchor boxes, SSD中的多尺度检测。除此之外, YOLO v2在网络设计上做了很多tricks,使它能在保证速度的同时提高检测准确率,Multi-Scale Training更使得同一个模型适应不同大小的输入,从而可以在速度和精度上进行自由权衡

初次之外V2提出一种新的训练方法–联合训练算法,这种算法可以混合两个数据集,用数据量巨大的目标识别数据集扩充数据量相对较少的目标检测数据集。使用一种分层的观点对物体进行分类,同时在检测数据集和分类数据集上训练物体检测器(Object Detectors ),用检测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升健壮性。

YOLO V3的改进

在这里插入图片描述
V3整体网络结构

● DBL:代表卷积、BN及Leaky ReLU三层的组合,在YOLOv3中卷积都是以这样的组合出现的,构成了DarkNet的基本单元。DBL后面的数字代表有几个DBL模块。对于v3来说,BN和leaky relu已经是和卷积层不可分离的部分了(最后一层卷积除外),共同构成了最小组件
● res:res代表残差模块,res后面的数字代表有几个串联的残差模块。
● 上采样:上采样使用的方式为上池化,即元素复制扩充的方法使得特征图尺寸扩大,没有学习参数。
● Concat:上采样后将深层与浅层的特征图进行Concat操作,即通道的拼接,类似于FPN,但FPN使用的是逐元素相加。张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。
● 残差思想:DarkNet-53借鉴了ResNet的残差思想,在基础网络中大量使用了残差连接,因此网络结构可以设计的很深,并且缓解了训练中梯度消失的问题,使得模型更容易收敛。
● 多层特征图:通过上采样与Concat操作,融合了深、浅层的特征,最终输出了3种尺寸的特征图,用于后续检测。多层特征图对于多尺度物体及小物体检测是有利的。
● 无池化层:之前的YOLO网络有5个最大池化层,用来缩小特征图的尺寸,下采样率为32,而DarkNet-53并没有采用池化的做法,而是通过步长为2的卷积核来达到缩小尺寸的效果,下采样次数同样是5次,总体下采样率为32。

在这里插入图片描述

​ V2整体网络

1.使用了FPN技术与多级检测方法,相较于YOLO的前两代,YOLOv3的小目标的检测能力提升显著。

V3在整体结构采用了特征金字塔模型(FPN)与多级检测技术,基于浅层网络负责检测较小的目标,深层网络负责检测较大的目标的思想以以及考虑识别物体的类别依赖于语义信息,因此将深层网络的语义信息融合到浅层网络中去是个很自然的想法,相比与之前单一特征图预测,V3分别在8倍下采样,16倍下采样,32倍下采样的时候输出特征图,

在这里插入图片描述

多尺度就是来自这3条预测之路,y1,y2和y3的深度都是255,边长的规律是13:26:52。YOLOv3设定的是每个网格单元预测3个box,所以每个box需要有(x, y, w, h, confidence)五个基本参数,然后还要有80个类别的概率。所以3×(5 + 80) = 255,这个255就是这么来的。

在这里插入图片描述

在这里插入图片描述

32倍降采样的感受野最大,适合检测大的目标,所以在输入为416×416时,每个cell的三个anchor box为(116 ,90); (156 ,198); (373 ,326)。
16倍适合一般大小的物体,anchor box为(30,61); (62,45); (59,119)。
8倍的感受野最小,适合检测小目标,因此anchor box为(10,13); (16,30); (33,23)。
所以当输入为416×416时,实际总共有(52×52+26×26+13×13)×3=10647个proposal box。

2.改进主干DarkNet-19网络为DarkNet-53

在V3中采用DarkNet-53网络代替DarkNet-19网络,并且使用残差网络Resnet中的残差连接结构。DarkNet53网络中的降采样操作没有使用Maxpooling层,而是由stride=2的卷积来实现。卷积层仍旧是线性卷积、BN层以及LeakyReLU激活函数的串联组合。
在这里插入图片描述

3.loss function

YOLO v3中主要包含三种损失,即坐标的损失,置信度的损失、分类的损失。
为了实现多标签分类,模型不再使用softmax函数作为最终的分类器,而是使用logistic作为分类器,使用 binary cross-entropy作为损失函数(使用sigmoid计算的xy, 物体置信度、类别置信度中均使用了交叉熵)

YOLO V4的改进:

在这里插入图片描述

YOLOV4 和V3的网络区别就是多了CSP和PAN结构,以及一个SSP。贴一下网络结构图。

首先介绍一下网络结构中出现的各种组件。
CBM:是由Conv+BN+Mish激活函数组成,和V3不同的是这里的激活函数由Leaky_relu换成了Mish。
CBL:这个组件就是YOLOV3中的最小组件,但是在这里V4 将CBL放在了Neck模块里,并没有放在Backbone。
Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
CSPX:借鉴CSPNet网络结构,由卷积层和X个Res unit模块Concate组成。
SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

在这里需要说的是还是需要将Concate和Add操作分开。

输入端:这里主要做了一些数据增强方式,比如Mosaic数据增强、cmBN、SAT自对抗训练。

Backbone:换成了CSPDarknet53、Mish激活函数、Dropblock。

Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构.

Head(Prediction):输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms。
yolov4不是yolo的原创作者所作,但是得到了原作者的认可,被拉入原作者的项目中,v4集百家之所长,融合了当时很多流行算法的长处,较前三个版本有较大改动,效果也有很大提升。

菜鸟一个初来乍到多多包涵!!

参考: 1.yolo v2详解https://blog.csdn.net/weixin_43694096/article/details/123523679

g.csdn.net/weixin_43694096/article/details/123523679

​ 2.《YOLO-YOLOV5算法原理及网络结构整理》https://blog.csdn.net/guanjing_dream/article/details/123705221

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值