如何解释 Yolo 或 R-CNN 中的锚框?

Tuy*_*ang 4 computer-vision deep-learning

对于像 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
Run Code Online (Sandbox Code Playgroud)

但是,我不明白如何解释这些锚框?一对值 (0.57273, 0.677385) 是什么意思?

Yos*_*KLE 5

在最初的 YOLO 或YOLOv1 中,预测是在没有对目标物体的形状做任何假设的情况下完成的。假设网络试图检测人类。我们知道,一般来说,人类适合放在一个垂直的矩形盒子里,而不是方形盒子里。然而,最初的 YOLO 试图以相等的概率检测矩形和方形框的人类。

但这效率不高,可能会降低预测速度。所以在YOLOv2,我们对物体的形状做了一些假设。这些是锚盒。通常我们将锚框作为一些数字的列表提供给网络,这是一系列宽度和高度对:

锚点 = [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 乘以锚点的值来获得绝对值。

使用锚框使预测更快一点。但准确率可能会降低。YOLOv2的论文说:

使用锚框,我们的准确率会略有下降。YOLO 只预测每张图像 98 个框,但我们的模型预测超过 1000 个锚框。在没有锚框的情况下,我们的中间模型获得了 69.5 mAP,召回率为 81%。使用锚框,我们的模型获得 69.2 mAP,召回率为 88%。即使 mAP 下降,召回率的增加也意味着我们的模型有更多的改进空间