『目标检测』YOLO V2

一、联合训练算法

这种算法可以把这两种的数据集混合到一起。使用一种分层的观点对物体进行分类,用巨量的分类数据集数据来扩充检测数据集,从而把两种不同的数据集混合起来。

联合训练算法的基本思路:

同时在检测数据集和分类数据集上训练物体检测器(Object Detectors),用检测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升鲁棒性。

二、YOLO V2的架构

1. backbone

  1. 网络抛弃了全连接,采用全卷积 FCN 的架构,因此可以输入任意大小的图片。
  2. 在每个卷积层之后都使用了 BN。BN 的作用是为了是网络更容易收敛,除此之外还有正则化的作用,可以防止过拟合。
  3. 使用了跨层连接,这个借鉴了 ResNet 的 identity mapping 思想。跨层连接的一个大好处是使梯度更容易前传,也就是说可以让网络训练变得更容易。但是,这个跨层连接有点别致,一般的跨层连接,会通过求和或者通道连接进行特征融合,但是 yolov2 在融合之前还添加了一个 reorganization 的操作。经过这样的操作,实际上已经把 feature map 的排布重整了,直觉上觉得这么做不太好,但事实证明它是可行的。不过这么做的一个好处就是将所有的信息都传递到后面的层,并没有因为下采样等操作导致损失信息,因此获得了更多细粒度的特征。

2. reorganization

就是将大分辨率的 feature map 进行重新排布得到分辨率更小的 feature map,相应的通道数增加。举例来说,如果网络的输入维度是 3x416x416,那么 conv13_512 的维度则是512x26x26,将其进行重新排布之后则变成 2048x13x13。这个重新排布如图:
在这里插入图片描述
实际上就是将一个 feature map 变成了更小的 feature map,但是通道数变多了。

三、YOLO V2的改进措施

1. Batch Normalization

使用 Batch Normalization 对网络进行优化,让网络提高了收敛性,同时还消除了对其他形式的正则化的依赖。通过对 YOLO 的每一个卷积层增加 Batch Normalization,最终使得 mAP 提高了 2%,同时还使模型正则化。使用 Batch Normalization 可以从模型中去掉 Dropout,而不会产生过拟合。

2. High resolution classifier

目前业界标准的检测方法,都要先把分类器(classifier)放在 ImageNet 上进行预训练。从 Alexnet 开始,大多数的分类器都运行在小于 256*256 的图片上。而现在 YOLO 从 224*224 增加到了 448*448,这就意味着网络需要适应新的输入分辨率。为了适应新的分辨率,YOLO v2 的分类网络以 448*448 的分辨率先在 ImageNet 上进行微调,微调 10 个 epochs,让网络有时间调整滤波器(filters),好让其能更好的运行在新分辨率上,还需要调优用于检测的 Resulting Network。最终通过使用高分辨率,mAP 提升了 4%。

3. Convolution with anchor boxes

  • YOLO V1 包含有全连接层,从而能直接预测 Bounding Boxes 的坐标值。 Faster R-CNN 的方法只用卷积层与 Region Proposal Network 来预测 Anchor Box 偏移值与置信度,而不是直接预测坐标值。作者发现通过预测偏移量而不是坐标值能够简化问题,让神经网络学习起来更容易。
  • 所以最终 YOLO 去掉了全连接层,使用 Anchor Boxes 来预测 Bounding Boxes。作者去掉了网络中一个池化层,这让卷积层的输出能有更高的分辨率。收缩网络让其运行在 416*416 而不是 448*448。由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,所以有一个单独位于物体中心的位置用于预测这些物体。YOLO 的卷积层采用 32 这个值来下采样图片,所以通过选择 416*416 用作输入尺寸最终能输出一个 13*13 的特征图。 使用 Anchor Box 会让精确度稍微下降,但用了它能让 YOLO 能预测出大于一千个框,同时 recall 达到 88%,mAP 达到 69.2%。

4. Dimension clusters

  • 之前 Anchor Box 的尺寸是手动选择的,所以尺寸还有优化的余地。 为了优化,在训练集的 Bounding Boxes 上跑一下 k-means 聚类,来找到一个比较好的值。
  • 如果用标准的欧式距离的 k-means,尺寸大的框比小框产生更多的错误。目的是提高 IOU 分数,这依赖于 Box 的大小,所以距离度量的使用:
    在这里插入图片描述

5. Direct location prediction

  • 用 Anchor Box 的方法,会让 model 变得不稳定,尤其是在最开始的几次迭代的时候。大多数不稳定因素产生自预测 Box 的(x,y)位置的时候。按照之前 YOLO 的方法,网络不会预测偏移量,而是根据 YOLO 中的网格单元的位置来预测坐标,这就让 Ground Truth 的值介于 0 到 1 之间。而为了让网络的结果能落在这一范围内,网络使用一个 Logistic Activation 来对于网络预测结果进行限制,让结果介于 0 到 1 之间。
  • 网络在每一个网格单元中预测出 5 个 Bounding Boxes,每个 Bounding Boxes 有五个坐标值 tx,ty,tw,th,t0,他们的关系见下图。假设一个网格单元对于图片左上角的偏移量是 cx、cy,Bounding Boxes Prior 的宽度和高度是 pw、ph,那么预测的结果见下图右面的公式:

在这里插入图片描述
在这里插入图片描述

因为使用了限制让数值变得参数化,也让网络更容易学习、更稳定。Dimension clusters和Direct location prediction,使 YOLO 比其他使用 Anchor Box 的版本提高了近5%。

6. Fine-Grained Features

YOLO 修改后的特征图大小为 13*13,这个尺寸对检测图片中尺寸大物体来说足够了,同时使用这种细粒度的特征对定位小物体的位置可能也有好处。Faster-RCNN、SSD 都使用不同尺寸的特征图来取得不同范围的分辨率,而 YOLO 采取了不同的方法,YOLO 加上了一个 Passthrough Layer 来取得之前的某个 26*26 分辨率的层的特征。这个 Passthrough layer 能够把高分辨率特征与低分辨率特征联系在一起,联系起来的方法是把相邻的特征堆积在不同的 Channel 之中,这一方法类似与 Resnet 的 Identity Mapping,从而把 26*26*512 变成 13*13*2048。YOLO 中的检测器位于扩展后(expanded )的特征图的上方,所以能取得细粒度的特征信息,这提升了 YOLO 1% 的性能。

7. Multi-Scale Training

区别于之前的补全图片的尺寸的方法,YOLOv2 每迭代几次都会改变网络参数。每 10 个 Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是 32,所以不同的尺寸大小也选择为 32 的倍数 {320,352……608},最小 320*320,最大 608*608,网络会自动改变尺寸,并继续训练的过程。

这一策略让网络在不同的输入尺寸上都能达到一个很好的预测效果,同一网络能在不同分辨率上进行检测。当输入图片尺寸比较小的时候跑的比较快,输入图片尺寸比较大的时候精度高,所以可以在 YOLOv2 的速度和精度上进行权衡。

猜你喜欢

转载自blog.csdn.net/libo1004/article/details/111035958