对于像yolo或R-CNN这样的算法,他们使用锚框的概念来预测对象。 https://pjreddie.com/darknet/yolo/
锚箱在特定数据集上进行训练,一个用于COCO数据集:
anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828
但是,我不明白如何解释这些锚箱?一对值(0.57273,0.677385)意味着什么?
答案 0 :(得分:3)
在原始YOLO或YOLOv1中,进行预测时无需假设目标物体的形状。假设网络尝试检测人类。我们知道,一般来说,人类适合放在一个垂直的矩形框中,而不是一个正方形。但是,最初的YOLO试图以相同的概率检测矩形框和方形框的人。
但这是无效的,可能会降低预测速度。 因此,在YOLOv2中,我们对对象的形状进行了一些假设。这些是锚框。通常,我们将锚定框作为一些数字的列表馈入网络,该列表是一系列宽度和高度对:
anchors = [0.57273,0.677385,1.87446,2.06253,3.33843,5.47434,7.88282,3.52778,9.77052,9.16828]
在上面的示例中,(0.57273,0.677385)表示单个锚框,其中两个元素分别是宽度和高度。也就是说,此列表定义了5个不同的锚框。请注意,这些值是相对于输出大小的。例如,YOLOv2输出13x13特征垫,您可以通过将13乘以锚点的值来获得绝对值。
使用锚点框可以使预测更快一些。但是准确性可能会降低。 The paper of YOLOv2说:
使用锚框,准确性会略有下降。仅YOLO 可以预测每个图像98个盒子,但是我们的模型可以预测锚框 一千多。没有锚框,我们的中间模型 69.5 mAP,召回率达81%。使用锚定盒,我们的模型获得69.2 mAP,召回率达到88%。即使mAP减少,增加 召回意味着我们的模型还有更多的改进空间
答案 1 :(得分:1)
这就是我的理解:YOLO将 416x416 图像划分为 13x13 网格。每个网格为 32 像素。锚箱大小相对于网格的大小。 因此,宽度和高度为0.57273,6.677385像素的锚箱实际上具有
的大小如果您转换所有这些值,则可以将它们绘制在416x416图像上以显示它们。