我想知道多尺度训练如何YOLOv2 https://arxiv.org/pdf/1612.08242.pdf works.
论文中指出:
原始YOLO使用的输入分辨率为448×448。通过添加锚框,我们将分辨率更改为416×416。然而,由于我们的模型仅使用卷积层和池化层,因此可以动态调整大小。我们希望 YOLOv2 能够在不同大小的图像上运行,因此我们将其训练到模型中。我们不是固定输入图像的大小,而是每隔几次迭代就改变网络。每 10 个批次,我们的网络都会随机选择一个新的图像尺寸。 “由于我们的模型按 32 倍下采样,因此我们从以下 32 的倍数中提取:{320, 352, ..., 608}。因此,最小的选项是 320 × 320,最大的选项是 608 × 608。我们调整大小将网络提升到该维度并继续训练。”
不明白网络如何仅包含卷积层和池化层允许输入不同的分辨率。根据我构建神经网络的经验,如果将输入的分辨率改变为不同的尺度,这个网络的参数数量就会改变,也就是这个网络的结构会改变。
那么,YOLOv2 如何改变这一点在飞行中?
我读了yolov2的配置文件,但我得到的只是一个random=1
陈述...
如果只有卷积层,则权重的数量不会随着层的 2D 部分的大小而变化(但如果您调整通道数的大小,权重的数量也会改变)。
例如(想象的网络),如果你有 224x224x3 输入图像和 3x3x64 卷积层,你将有 64 个不同的 3*3*3 卷积滤波器内核 = 1728 个权重。这个值根本不依赖于图像的大小,因为内核独立地应用于图像的每个位置,这是卷积和卷积层最重要的事情,也是 CNN 可以走得这么深的原因,并且为什么在更快的 R-CNN 中,您可以从特征图中裁剪出区域。
如果有任何完全连接的层或其他东西,它就不会以这种方式工作,因为在那里,更大的 2D 层尺寸会导致更多的连接和更多的权重。
在 yolo v2 中,有一件事可能看起来仍然不合适。例如,如果将每个维度的图像大小加倍,则最终的 1x1xN 过滤器之前,每个维度的特征数量将增加 2 倍,就像原始网络大小的网格为 7x7 一样,调整大小的网络可能有 14x14。但这样你就会得到 14x14 * B*(5+C) 回归结果,就很好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)