YOLO9000: Better, Faster, Stronger
论文:https://arxiv.org/abs/1612.08242
代码:https://pjreddie.com/darknet/yolo/
mAP | recall | |
---|---|---|
批归一化 BN | 超 +2% | |
分辨率提高到 448×448 | 近 +4% | |
使用锚框 | -0.3% | +7% |
使用锚框问题1:框的尺寸
当在YOLO中使用锚框时,作者遇到两个问题。第一个是框的尺寸是手工挑选的。网络可以学习适当地调整框,但如果为网络选择更好的先验(锚框),可以使网络更容易学习预测好的检测。
Dimension Clusters
作者不再手工选择先验值(锚框),而是在训练集边界框上运行 k-means聚类 来自动找到好的先验。如果使用带有欧氏距离的标准k-均值较大的框比较小的框产生更多的误差。然而,真正想要的是能够获得良好IOU分数的优先权,这与框的大小无关。因此,对于距离度量,使用:
d(box,centroid) = 1 − IOU(box,centroid) \text{d(box,centroid) = 1 − IOU(box,centroid)} d(box,centroid) = 1 − IOU(box,centroid)
作者对 k 的各个值运行 k-均值,并以最接近的中心绘制平均IOU,见下图。选择 k = 5 (5个相邻)作为模型复杂性和高召回率之间的一个很好的权衡。聚类中心与人工选择的锚框有显著不同。短而宽的框更少,高而薄的框更多。
使用锚框问题2:模型不稳定
在使用YOLO锚框时,作者遇到了第二个问题:模型不稳定,特别是在前期迭代期间。大多数不稳定性来自于预测盒子的(x, y)位置。在区域提议网络中,网络预测值 t x t_x tx 和 t y t_y ty, (x, y)中心坐标计算如下:
x = ( t x ∗ w a ) + x a y = ( t y ∗ h a ) + y a x = (t_x ∗ w_a) + x_a\\ y = (t_y ∗ h_a) + y_a x=(tx∗wa)+x