论文【YOLO9000: Better, Faster, Stronger】
YOLO9000是YOLO系列的第二代模型,它改进了YOLOv1的一些如定位错误高、召回率低等缺点,并将模型扩展到可以定位9000+物体上,并与此同时依然保持预测的高速度。
新应用的几点方法:
1、每个卷积层后增加BN层,提高2%左右的mAP,同时可以移除dropout层而没有过拟合。
2、高分辨率的分类器。v1利用的预训练分类器输入224x224训练卷积网络,检测时用高分辨率448x448输入影响了检测性能。
YOLO9000分类模型224*224训练完成以后再用高分辨率的448x448样本对模型进行10个epochs的fine tune,使其更适应高分辨率输入,性能提升了大约4% mAP。
3、使用anchor boxes。YOLOv1使用全连接层进行bounding box预测,这会丢失较多的空间信息,导致定位不准。YOLOv2借鉴了Faster R-CNN的anchor思想:简单理解为卷积特征图上进行滑窗采样,每个中心预测9中不同大小和比例的anchor。总的来说移除全连接层使用anchor boxes预测boounding boxes。并且YOLOv2用anchor box同时预测类别和坐标。
4、Dimension Clusters(维度聚类)。使用anchor时,Faster-RCNN中anchor boxes的个数和宽高维度往往是手动精选的先验框。YOLOv2中则是利用K-means聚类方法,通过对数据集中ground truth box做聚类,以聚类个数K为anchor boxes个数,以K个聚类中心box的宽和高维anchor box的宽高。
距离度量为了避免boxes尺度问题,采用如下度量:
作者通过对比实验平衡了复杂度和IOU之后,最终确定K值为5。
5、Direct location prediction(直接位置预测)。使用anchor boxes的另一个问题是模型不稳定,尤其是早期迭代时。大部分不稳定线性出现在预测box的(x, y)坐标时。YOLOv2位置预测tx,ty就是预测边界框中心点相对于对应cell左上角的位置偏移,为了将边界框中心约束在当前cell中,使用sigmoid函数处理偏移值到(0,1)内。
作者通过4和5两种anchor boxes改进方法将mAP提高约5%。
6、Fine-Grained Features(细粒度特征)。通过添加passthrough layer,处理前面的特征图使之与后面的特征图连接在一起形成更大通道的特征图,再继续卷积预测。这种做法可以使用细粒度特征,使模型性能获得1%左右的提升。
7、Multi-Scale Training(多尺度训练)。为了增加YOLOv2对不同尺寸图片鲁棒性,每经过10个batches就会随机选择新的图片尺寸。由于网络的降采样参数为32,于是选择32的倍数作为不同的尺寸选择:{320,352,…,608}。
这些新方法对YOLO的性能影响如下表:
YOLOv2与其他方法的比较:
mAP计算方法:
AP的计算方式参考2010年后的Pascal VOC Challenge的计算方法,对于N个样本中的M个正例,我们会得到M个recall值(1/M, 2/M…),分别对着M个recall值计算大于该recall值的所有recall对应的的最大precision,将这M个precision值平均即为AP值。
mAP就是多个类别的AP均值,值在[0, 1]。