【问题标题】:How to interpret anchor boxes in Yolo or R-CNN?如何解释 Yolo 或 R-CNN 中的锚框?
【发布时间】:2019-01-09 23:59:15
【问题描述】:

对于 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) 是什么意思?

【问题讨论】:

    标签: computer-vision deep-learning


    【解决方案1】:

    在原始的 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) 表示单个anchor box,其中两个元素分别是width和height。也就是说,这个列表定义了 5 个不同的锚框。请注意,这些值与输出大小有关。例如,YOLOv2 输出 13x13 的特征矩阵,你可以通过将 13 乘以锚点的值来获得绝对值。

    使用锚框使预测速度更快一些。但准确度可能会降低。 The paper of YOLOv2 说:

    使用锚框,我们的准确度会略有下降。仅限YOLO 每个图像预测 98 个框,但我们的模型预测锚框 超过一千。没有锚框,我们的中间模型得到 69.5 mAP,召回率为 81%。使用锚框,我们的模型获得 69.2 mAP,召回率为 88%。尽管 mAP 减少,但增加 召回意味着我们的模型还有更大的改进空间

    【讨论】:

      【解决方案2】:

      这就是我的理解:YOLO 将 416x416 图像划分为 13x13 网格。每个网格为 32 像素。锚框的大小与网格的大小有关。 所以一个宽度和高度为 0.57273, 0.677385 像素的锚框实际上的大小为

      • w = 0.57273 * 32 = 18.3 像素
      • h = 0.677385 * 32 = 21.67 像素

      如果您转换所有这些值,则可以将它们绘制在 416x416 图像上以可视化它们。

      【讨论】:

      • 你的回答很有道理。我有一个疑问.. yolo 是否总是将图像划分为 13*13 或者它只是dareknet 的实现或者它只是你使用的一个例子?
      • Yolo 版本 2 始终将图像划分为 13x13 网格。你可以看看论文。暗网是这家伙写的框架。借助 Darknet,您可以使用许多不同的 CNN,例如 YOLO(就像 TensorFlow)。
      猜你喜欢
      • 2018-10-31
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      相关资源
      最近更新 更多