YOLO v_2
2. Better
Batch Normalization.
获得了mAP2%的提升,而且可以移除dropout。
High Resolution Classifier.
先用224224的输入从头开始训练网络,大概160个epoch(表示将所有训练数据循环跑160次),然后再将输入调整到448448,再训练10个epoch。这两步都是在ImageNet数据集上操作。最后再在检测的数据集上fine-tuning,也就是detection的时候用448*448的图像作为输入就可以顺利过渡了。作者的实验表明这样可以提高几乎4%的MAP。
Convolutional With Anchor Boxes.
YOLO利用卷积特征提取器和全连接层来预测bounding box的坐标。而Faster R CNN预测偏移和anchor boxes的置信度。预测偏移简化了问题,使网络更容易学习。
我们从YOLO中移除了全连接层,并使用anchor boxes来预测bounding box,首先我们移除了一个pool层,可以得到跟高的分辨率,然后缩小448的输入图像,变为416。因为我们希望我们的feature map为奇书,只有一个中心单元,Object往往占据图像的中心,所以最好在中心有一个位置来预测这些物体,而不是周围的四个位置。
YOLO以前只有98和box,引入anchor之后box数超过了一千。anchor的加入让mAP下降了0.3%,而召回率提高了7%。
Dimension Clusters.
盒子的尺寸是手工挑选的,网络适当的调整box,但是如果我们给网络选择更高的优先级,网络就可以更好的检测。
我们在训练集上运行k-means聚类算法寻找最好的anchor,如果采用标准的k-means(即用欧式距离来衡量差异),在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。因此我们采用以下距离度量:
使用k-means方法生成我们的边界框,以更好的表示方式启动模型,并使任务更容易学习。
Direct location prediction.
当anchor和YOLO一起使用时,模型会变得不稳定,不稳定来自预测box的(x, y)位置,简单的解释,如果训练的图片中的物体一张是在左面,下一张又在右面,就会产生这样的波动,显然的这个过程是不受控制的,毕竟图片中的物体位置他在哪里就在哪里。在RPN中网络预测的 tx 和 ty (x, y)的中心坐标计算为:
在随机初始化的情况下,模型需要很长时间才能稳定预测出合理的偏移量。
在这里作者并没有采用直接预测offset的方法,还是沿用了YOLO算法中直接预测相对于grid cell的坐标位置的方式。
前面提到网络在最后一个卷积层输出13*13大小的feature map,然后每个cell预测5个bounding box,然后每个bounding box预测5个值:tx,ty,tw,th和to(这里的to类似YOLOv1中的confidence)。看下图,tx和ty经过sigmoid函数处理后范围在0到1之间,这样的归一化处理也使得模型训练更加稳定;cx和cy表示一个cell和图像左上角的横纵距离;pw和ph表示bounding box的宽高,这样bx和by就是cx和cy这个cell附近的anchor来预测tx和ty得到的结果。
Fine-Grained Features.
The passthrough layer 将相邻特征叠加到不同的信道中,从而将分辨率较高的特征与低分辨率特征连接起来。这可以有效的预测小的object。
Multi-Scale Training.
我们希望YOLOv_2能够在不同大小的图像上运行,所以我们不是固定输入图像的大小,而是每隔几次迭代就改变网络,我们的网络随机的选择一个新的图像尺寸大小。
这个机制迫使网络学会在不同的输入维度上进行很好的预测,这意味着同一网络可以进行不同分辨率的检测。网络在更小的尺寸下运行的更快,可以在速度和准确性上折中。
3. Faster
Darknet-19.
我们最后的模型,Darknet-19,有19层卷积层和5层maxpooling layers。
Training for Detection
在前面第2步之后,就开始把网络移植到detection,并开始基于检测的数据再进行fine-tuning。首先把最后一个卷积层去掉,然后添加3个3x3 的卷积层,每个卷积层有1024个filter,而且每个后面都连接一个1x1的卷积层,1x1卷积的filter个数根据需要检测的类来定。比如对于VOC数据,由于每个grid cell我们需要预测5个box,每个box有5个坐标值和20个类别值,所以每个grid cell有125个filter(与YOLOv1不同,在YOLOv1中每个grid cell有30个filter,还记得那个7x7x30的矩阵吗,而且在YOLOv1中,类别概率是由grid cell来预测的,也就是说一个grid cell对应的两个box的类别概率是一样的,但是在YOLOv2中,类别概率是属于box的,每个box对应一个类别概率,而不是由grid cell决定,因此这边每个box对应25个预测值(5个坐标加20个类别值),而在YOLOv1中一个grid cell的两个box的20个类别值是一样的)。另外作者还提到将最后一个3x3x512的卷积层和倒数第二个卷积层相连。最后作者在检测数据集上fine tune这个预训练模型160个epoch,学习率采用0.001,并且在第60和90epoch的时候将学习率除以10,weight decay采用0.0005。
4. Stronger
在训练过程中,我们混合了来自检测和分类数据集的样本。当我们的网络看到标记用于检测的图像时,我们基于完全的YOLOv_2进行方向传播。当遇到分类图像时,我们只会从体系结构的分类特定部分反向传播。
参考:https://blog.csdn.net/u014380165/article/details/77961414