目标检测之YOLO V2 V3

YOLO V2在YOLO基础上改进,引入Anchor Boxes提高定位精度和召回率。采用多尺度训练、Fine-Grained Features和Passthrough Layer处理小目标。YOLO V3使用Darknet-53网络,加入FPN实现多尺度预测,进一步提升目标检测效果。
摘要由CSDN通过智能技术生成

YOLO V2

YOLO V2是在YOLO的基础上,融合了其他一些网络结构的特性(比如:Faster R-CNN的Anchor,GooLeNet的 1 × 1 1\times1 1×1卷积核等),进行的升级。其目的是弥补YOLO的两个缺陷:

  • YOLO中的大量的定位错误
  • 和基于区域推荐的目标检测算法相比,YOLO的召回率(Recall)较低。

YOLO V2的目标是:在保持YOLO分类精度的同时,提高目标定位的精度以及召回率。其论文地址:
YOLO 9000:Better,Faster,Stronger

YOLO论文的名称总是如此的直抒胸臆,

  • Better 指的是和YOLO相比,YOLO V2有更好的精度
  • Faster 指的是修改了网络结构,其检测更快
  • Stronger 指的就是YOLO 9000,使用联合训练的方法,同时使用目标检测和图像分类的数据集,训练YOLO V2,训练出来的模型能够实时的识别多达9000种目标,所以也称为YOLO9000。

Better

这部分主要是改进YOLO的两个缺点:

  • 定位不精确
  • 召回率较低(和基于候选区域的方法相比)

YOLO V2种并没有加深或者加宽网络结构,反而简化了网络(faster)。

  • Batch Normalization
    这个是CNN网络通用的方法了,不但能够改善网络的收敛性,而且能够抑制过拟合,有正则化的作用。

  • High Resolution Classifier
    相比图像的分类任务,目标检测需要更高的图像分辨率。而为了提取图像的特征,目标检测网络的提取特征部分,通常要在ImageNet数据集上进行预训练。从AlexNet结构开始,大多数分类的网络的输入图像都小于 256 × 256 256 \times 256 256×256,在YOLO中,使用 224 × 224 224 \times 224 224×224的图像进行预训练,但是在目标检测的网络中使用 448 × 448 448 \times 448 448×448的图像进行训练。这样就意味着,从用于分类的特征提取模型切换到目标检测网络,还需要适应这种图像分辨率的改变。
    在YOLO V2中对此进行了改变了,使用ImageNet数据集,首先使用 224 × 224 224 \times 224 224×224的分辨率训练160个epochs,然后调整为 448 × 448 448 \times 448 448×448在训练10个epochs。

Convolutional With Anchor Boxes

在YOLO中在最后网络的全连接层直接预测目标边框的坐标,在YOLO V2中借鉴 Fast R-CNN中的Anchor的思想。

  • 去掉了YOLO网络的全连接层和最后的池化层,使提取特征的网络能够得到更高分辨率的特征。
  • 使用 416 × 416 416 \times 416 416×416代替 448 × 448 448 \times 448 448×448作为网络的输入。这是因为希望得到的特征图的尺寸为奇数。奇数大小的宽和高会使得每个特征图在划分cell的时候就只有一个center cell(比如可以划分成77或99个cell,center cell只有一个,如果划分成88或1010的,center cell就有4个)。为什么希望只有一个center cell呢?因为大的object一般会占据图像的中心,所以希望用一个center cell去预测,而不是4个center cell去预测。网络最终将416416的输入变成1313大小的feature map输出,也就是缩小比例为32。(5个池化层,每个池化层将输入的尺寸缩小1/2)。
  • Anchor Boxes 在YOLO中,每个grid cell只预测两个bbox,最终只能预测98个bbox( 7 × 7 × 2 = 98 7\times 7\times 2=98 7×7×2=98),而在Faster RCNN在输入大小为 1000 × 600 1000\times 600 1000×600时的boxes数量大概是6000,在SSD300中boxes数量是8732。显然增加box数量是为了提高object的定位准确率。 过少的bbox显然影响了YOLO的定位的精度,在YOLO V2中引入了Anchor Boxes的思想,其预测的bbox则会超过千个(以输出的feature map为 13 × 13 13 \times 13 13×13为例,每个grid cell有9个anchor box的话,其预测的bbox数量为 13 × 13 × 9 = 1521 13 \times 13 \times 9 = 1521 13×13×9=1521个)。
Dimension Clusters

YOLO V2中引入了Faster R-CNN思想,但是让大佬单纯的使用别人的想法而不加以改进是不可能的。在Faster R-CNN中每个Anchor box的大小以及形状是预先设定好的,然后在网络种通过边框回归来调整每个Anchor Box的边框。但是,如果开始就选择好的边框(Faster R-CNN中的边框是手工设计的,3种大小,3种形状共9种),那么网络肯定能更好的预测。
YOLO 作者使用据类的思想,对训练集能够生成的所有Anchor box做聚类,以此来找到合适的预设的Anchor box.另外作者发现如果采用标准的k-means(即用欧式距离来衡量差异),在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。所以通过IOU定义了如下的距离函数,使得误差和box的大小无关,故使用如下的距离度量
d (  box, centroid  ) = 1 −  IOU  (  box, centroid  ) d ( \text { box, centroid } ) = 1 - \text { IOU } ( \text { box, centroid } ) d( box, centroid )=1 IOU ( box, centroid )
也就是针对同一个grid cell,其将IOU相近的聚到一起,如下图
在这里插入图片描述

左边表示选择不同聚类中心的 K K K和平均IOU的关系,不同曲线表示两种数据集:2007 VOC 和COCO。 YOLO V2选择了 K = 2 K=2 K=2,在模型的复杂度和召回率之间做个平衡。 右边5种紫框和黑色的边框表示两种数据集下,最终聚类选择的5中bbox的形状和大小,从图看出两种数据集的形状类似大小相近。图中也可以看出,一个的大的bbox差不多是正方形,另外3个是高瘦的形状,最后一个则是矮胖的形状,这和Faster R-CNN手动选择的9种形状还是有所不同的。

Direct location prediction

解决了每个Grid Cell生成的bounding box的个数问题,直接按照Faster R-CNN的方法,又遇到了第二个问题:模型不稳定,特别是在早期的迭代中,而这种不稳定是由于预测box的位置 ( x , y ) (x,y) (x,y)引起的。在区域推荐的方法中,其网络学习的结果 ( t x , t y ) (tx,ty) (tx,ty)bbox的中心位置相对于ground truth的中尉 ( x , y ) (x,y) (x,y)的平移量,如候选区域的bbox的中心为 ( x p , y p ) (x_p,y_p) (xp,yp),宽和高为 ( w p , h p ) (w_p,h_p) (wp,hp),则有如下的等式
x = x p + w p ∗ t x y = y p + h p ∗ t y x = x_p + w_p * tx \\ y = y_p + h_p * ty x=xp+wptxy=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值