【问题标题】:Perform multi-scale training (yolov2)执行多尺度训练 (yolov2)
【发布时间】:2018-10-04 23:04:13
【问题描述】:

我想知道YOLOv2 中的多尺度训练是如何工作的。

论文中指出:

原始 YOLO 使用 448 × 448 的输入分辨率。通过添加锚框,我们将分辨率更改为 416×416。但是,由于我们的模型仅使用卷积层和池化层,因此可以随时调整大小。我们希望 YOLOv2 能够在不同大小的图像上运行,因此我们将其训练到模型中。我们不是固定输入图像的大小,而是每隔几次迭代就改变网络。每 10 批我们的网络随机选择一个新的图像尺寸。 “由于我们的模型下采样了 32 倍,我们从以下 32 的倍数中提取:{320, 352, ..., 608}。因此最小的选项是 320 × 320,最大的是 608 × 608。我们调整大小网络到那个维度并继续训练。”

我不明白只有卷积层和池化层的网络如何允许不同分辨率的输入。从我搭建神经网络的经验来看,如果把输入的分辨率改成不同的尺度,这个网络的参数个数就会发生变化,也就是这个网络的结构会发生变化。

那么,YOLOv2 如何动态地改变这个

我阅读了yolov2的配置文件,但我得到的只是一个random=1声明......

【问题讨论】:

    标签: computer-vision object-detection convolutional-neural-network yolo


    【解决方案1】:

    在 YoLo 中,如果你只使用卷积层,输出网格的大小会发生变化。

    例如,如果您的尺寸为:

    1. 320x320,输出尺寸为10x10

    2. 608x608,输出尺寸为19x19

    然后,您可以计算这些 w.r.t 对经过类似调整的地面实况网格的损失。

    因此,您可以在不添加任何参数的情况下反向传播损失。

    损失函数参考yolov1论文:

    Loss Function from the paper

    因此,理论上您只能根据网格大小调整此功能,而无需模型参数,您应该一切顺利。

    论文链接:https://arxiv.org/pdf/1506.02640.pdf

    在作者的视频解释中也提到了。

    时间:14:53

    Video Link

    【讨论】:

      【解决方案2】:

      如果您只有卷积层,则权重的数量不会随着层的 2D 部分的大小而改变(但如果您调整通道的数量,它也会改变)。

      例如(想象的网络),如果您有 224x224x3 的输入图像和一个 3x3x64 的卷积层,您将有 64 个不同的 3*3*3 卷积滤波器内核 = 1728 个权重。这个值根本不依赖于图像的大小,因为内核被独立地应用于图像的每个位置,这是卷积和卷积层最重要的事情,也是为什么 CNN 可以走这么深的原因,以及为什么在更快的 R-CNN 中你可以从你的特征图中裁剪区域。

      如果有任何完全连接的层或其他东西,它就不会这样工作,因为在那里,更大的 2D 层维度会导致更多的连接和更多的权重。

      在 yolo v2 中,有一件事可能看起来仍然不合适。例如,如果您将每个维度中的图像大小加倍,您将在最终的 1x1xN 过滤器之前得到每个维度中的特征数量的 2 倍,就像原始网络大小的网格是 7x7 一样,调整大小的网络可能有 14x14。但是那样你只会得到 14x14 * B*(5+C) 的回归结果,就好了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        相关资源
        最近更新 更多