YOLOv2详解

YOLOv2论文名称: YOLO9000: Better, Faster, Stronger

YOLOv2论文下载地址:https://arxiv.org/pdf/1612.08242.pdf

YOLOv2:YOLO9000: Better, Faster, Stronger

YOLO9000的含义是YOLOv2网络可以识别9000个目标类别,这是因为YOLOv2利用了Imagenet数据集进行分类训练,所以可以识别超9000个目标类别。而YOLOv2的改进体现在Better、Faster和Stronger上。

YOLOv2在YOLOv1的基础上对检测方法和训练方法进行了改进,采用多尺度训练方法,在速度和准确率之间进行了权衡;使用联合训练方法,用ImageNet数据集训练分类,用COCO数据集训练检测,这种联合训练方式使得YOLOv2能预测9000多个不同目标类别的检测。

联合训练方式的提出主要是考虑到和检测数据集相比,分类数据集图像和目标类别更多,并且检测数据集的获取代价比较昂贵,分类数据集和检测数据集的规模注定不对等。为了更好地利用大量的分类数据集,YOLOv2改进了训练方式,利用标记的检测图像来学习精确定位目标,同时使用分类图像来增加其词汇量和鲁棒性。

Batter

YOLOv2主要针对于YOLOv1的定位错误和低召回率两个问题进行改进,在保持分类精度的同时,提高定位精度和召回率。YOLOv2希望保持网络实时性和精度的基础上优化网络,尝试很多想法,如下图所示:

在这里插入图片描述

1、batch norm:批归一化。BN层现在在网络中应该是必备的,可以改变数据分布,加快模型收敛,缓解深层网络中的梯度弥散问题。

2、hi-res classifier:高分辨率。YOLOv1训练分类时采用224 x 224的分辨率,训练检测时提高到448 x 448,这样直接从224到448的跳跃太过简单粗暴,YOLOv2在用448分辨率训练检测时先用448分辨率训练分类10个epoch,对分类网络微调,作为一个过度。

3、convolutional:全卷积。YOLOv1网络最后有两个全连接层,YOLOv2将它们去掉,整个网络都是卷积层组成的

4、anchor boxes:锚框。YOLOv2借鉴了Faster R-CNN的先验锚框思想,预测目标位置的偏移量,简化了问题,使网络更容易学习。并且YOLOv2将类别预测和网格分开,不再是一个网格一个类概率,而是一个锚框一个类概率,以锚框为单位预测类和目标。使用锚框mAP会小幅下降,但是增加了召回率,可以让模型有更大的改进空间。

5、new network:新网络。YOLOv2采用了Darknet-19这个新网络,如下图所示,网络相比于YOLOv1的主干网络更小了,只有19个卷积层,减少了计算量和参数。

在这里插入图片描述

Table 6: Darknet-19.

6、dimension priors:尺寸先验。YOLOv2借鉴了Faster R-CNN的先验框方法,但是不像Faster R-CNN手动设置先验框,YOLOv2使用K-means聚类,以确定先验框的宽和高

在这里插入图片描述

7、location prediction:位置预测。YOLOv2借鉴了Faster R-CNN中的方法,预测x、y均为偏移量,并且经过sigmoid处理,使其保持在0~1,不会在训练过程中因为超过界限使模型不稳定
b x = σ ( t x ) + c x b y = σ ( t y ) + c y b w = p w e t w b h = p h e t h Pr ⁡ (  object  ) ∗ IOU ⁡ ( b ,  object  ) = σ ( t o ) \begin{equation} \begin{aligned} b_{x} &=\sigma\left(t_{x}\right)+c_{x} \\ b_{y} &=\sigma\left(t_{y}\right)+c_{y} \\ b_{w} &=p_{w} e^{t_{w}} \\ b_{h} &=p_{h} e^{t_{h}} \\ \operatorname{Pr}(\text { object }) * \operatorname{IOU}(b, \text { object }) &=\sigma\left(t_{o}\right) \end{aligned} \end{equation} bxbybwbhPr( object )IOU(b, object )=σ(tx)+cx=σ(ty)+cy=pwetw=pheth=σ(to)
限制了位置预测值的范围后,参数化更容易学习,网络也更加稳定。

在这里插入图片描述

8、passthrough:直通。将26 x 26的特征图和13 x 13的特征图concat拼接,类似于特征金字塔融合,增加了检测的细粒度,具体就是26x26x512的tensor拆分为4个13x13x512的tensor,然后再通道维度上拼接得到13x13x2048的tensor,然后和最后输出的13x13x1024的tensor通道维度上拼接到一起,得到13x13x3072大小的tensor。

单纯13 x 13大小的特征图对大目标的预测没有问题,但是对于小目标可能就不够用了,加入26 x 26的特征图可以获取更细粒的特征,有助于小目标的定位。直通层通过将相邻的特征堆叠到不同的通道而不是空间位置上,将高分辨率的特征与低分辨率的特征串联起来,类似于ResNet中的恒等映射。

9、multi-scale:多尺度。多尺度体现在训练的输入图片上,YOLOv1使用448 x 448的分辨率检测图片,YOLOv2将输入分辨率改为416 x 416,这样最终得到的网格行和列都是奇数,对应于大多数图片的目标都位于图片正中间。多尺度训练是在训练时调整图片大小,YOLOv2的多尺度训练每隔10个epoch就会随机选择一个新的图像尺寸,从以下32的倍数中抽取:{320, 352, …, 608},最小的选项是320 × 320,最大的是608 × 608。

多尺度训练使得网络在各种输入维度上都有良好的预测结果,即网络可以预测不同分辨率下的结果,网络在较小尺寸下运行的更快,在某种程度上来说加快了预测速度。

10、hi-res detector:高分辨率检测器。由于训练时图像分辨率会不断改变,并且供选择的图片尺寸比较大,所以能够后对高分辨率图像有好的检测效果也就说的通了。

Faster

YOLOv2希望在改进YOLOv1缺点的同时,精度更好,速度更快。之前大多数框架都是基于VGG-16作为特征提取网络,YOLOv1借鉴GoogleLeNet网络,但他们都仍然十分复杂,YOLOv2提出了新模型Darknet-19,只有19个卷积层和5个最大池化层,网络模型大大简化。

Darknet-19分类训练使用了ImageNet数据集,最初使用224 x 224大小训练,在进行检测训练前使用448 x 448大小训练对网络进行微调,以便后面使用448 x 448大小的网络进行检测训练。检测部分网络zaiDarknet-19的最后一个最大池化层之后,检测结果中每个网格有5个锚框,每个锚框都会预测4个坐标,1个置信度,和C个类概率,对VOC数据集来说就是20个类概率,也就是每个网格会预测5x(4+1+20)=125个值

Stronger

YOLOv2提出了对分类和检测数据联合训练的机制训练时,混合分类和检测的数据集,当网络看到被标记为检测的图像时,网络根据完整的YOLOv2损失函数反向传播,但看到分类图像时,只从架构的分类特定部分反向传播损失。

将分类数据集合检测数据集混合有个问题就是类别之间会有交叉从属关系,针对此,YOLOv2给出了Hierarchical classification(分层分类)的方式,建立树形结构,具体的过程可以看原论文的说明。

联合分类合检测增强了模型分类和检测的能力,尤其是分类,可以对9000多个类别分类,还可以对一些检测数据集中没有的类别进行检测定位。

总结:

1、YOLOv2比YOLOv1检测性能更强,速度更快,并且可以在各种图像尺寸下运行,在速度和准确性之间提供了平稳的权衡(因为小尺寸图片检测的更快)

2、YOLOv2可以识别超过9000个类别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值