YOLOV2学习与总结

前言:《YOLOV1学习与总结》上篇文章学习了yolov1,还是很有收获的,知道了yolov1为什么召回率低,精度为什么低等等问题的原因。yolov2可以说是解决了精度和速度等yolov1中一些显而易见的问题。本文和大家一起解读大神的论文。


目录

1. 精度提升

1.1 BN(Batch Normalization)

1.2 高分辨率训练

1.3 引入Anchor机制

1.4 尺度聚类 

 1.5 位置预测

 1.6 多尺度训练

2. 速度提升

2.1 提出基于darknet19的基础网络提取特征


1. 精度提升

1.1 BN(Batch Normalization)

BN操作有如下优点,作者将BN操作添加到每一个卷积层中,在卷积操作前先进性BN操作,这个的操作使得YOLO的mAP提升了2%,并且还能防止训练的过拟合。

YOLOV2学习与总结_第1张图片

1.2 高分辨率训练

提高输入的分辨率固然可以提升检测的精度,但同时速度也下降了。

YOLOV2学习与总结_第2张图片

1.3 引入Anchor机制

YOLO中,所有的目标检测边界框(bounding box)都是在特征提取网络后使用全连层直接预测坐标,faster R-CNN是RPN网络来选取anchor boxes,YOLOV2中我们使用anchor boxes来替代全连层。

在1.2的高分辨率设置中,我们设置了网络输入图像的分辨率为448*448,为了获取奇数位置特征图,我们将输入了分辨率改为416*416,为什么416*416是这个数,因为我们通过特征提取网络中的池化层数目计算,从输入到输出额降采样数为32,即输入必须是32的整数倍,这是输出的特征图大小为13*13。

通过anchor机制,我们需要预测一千个以上的box,而YOLO中只需要预测98个box。这里怎么算的呢?上篇文章《YOLOV1学习与总结》中我们学习了每一个Grid cell需要预测两个box,将整张图像分为7*7的网格后,总的box就是7*7*2的box。通过anchor机制将召回率从81%提升到了88%,可以说是巨大的飞跃。

YOLOV2学习与总结_第3张图片

1.4 尺度聚类 

当我们要使用anchor机制时,必然面临两个问题,anchor怎么选?选几个?人工选择,这样就增加了模型训练的工作量。虽然通过大量迭代次数训练,默认的anchor值也能适应任务的需要,但如果我们选择合适的anchor值,提升训练的效率和提高精度是肯定可以的。为了能自动计算Anchor,我们使用聚类算法K-means,通过对多个K值的测试,发现当K等于5时,在计算复杂度和召回率之间能够取得一个比较好的平衡。

在anchor数量确定时,通过聚类算法也测试了几个数值,发现当anchor值为9时其平均IOU值比anchor=5时高很多,so将anchor的数量设置为9。

YOLOV2学习与总结_第4张图片

 1.5 位置预测

作者首先说明了RPN网络预测的box不稳定的原因,在RPN网络中,预测框的中心坐标计算公式如下:

YOLOV2学习与总结_第5张图片

(x,y)为预测的box中心坐标,tx,ty为水平和垂直的偏移参数,wa和ha为anchor的框和高,(xa,ya)为anchor的中心坐标。这里的tx和ty没有范围限制,当tx=-1时,预测框的中心坐标就变成了负值。因此如果使用这种机制可能会导致模型不稳定,这就需要对偏移值tx,ty加以限制。

YOLOV2中,我们使用激活函数来对偏移值进行限制,是的偏移值限制在0到1之间,这样就能确保模型的稳定。YOLOV2的目标检测边界框计算方式如下:、

YOLOV2学习与总结_第6张图片

其中,\sigma为激活函数,c_{x}c_{y}为grid cell相对整图像左上角坐标的偏移值,p_{w}p_{h}为anchor框的宽和高,b_{w}b_{h}为预测框的宽和高,b_{x}b_{y}为预测框的中心坐标,各参数的图解如下图所示:

YOLOV2学习与总结_第7张图片

 1.6 多尺度训练

多尺度训练机制,在训练过程中,经过一定迭代次数后改变输入的尺寸,每经过10次迭代随机选择一个输入的尺寸进行训练,由于输入必须为32的倍数,因此输入的尺寸在(320,352,384...608)这些数中选择。低分辨率的输入精度虽差,但有更快的训练和推理速度,高分辨率的输入有更好的精度,这样的机制使得YOLOV2在精度和速度之间更好的权衡。

2. 速度提升

2.1 提出基于darknet19的基础网络提取特征

使用了大多数3*3卷积核操作提取特征,网络架构如下:

YOLOV2学习与总结_第8张图片

该网络相比与VGG16,一次推理操作的计算量仅为50.58亿次浮点型,而VGG16的计算量为300亿次浮点型。

你可能感兴趣的:(#,Darknet与YOLO,学习,深度学习,计算机视觉,YOLOV2)