2

我正在尝试在 Caffe 上训练我自己的网络,类似于 Imagenet 模型。但我对作物层感到困惑。直到我了解 Imagenet 模型中的裁剪层为止,在训练期间它将采用随机 227x227 图像裁剪并训练网络。但是在测试过程中,它将采用中心 227x227 图像裁剪,当我们从 256x256 图像中裁剪中心 227x27 图像时,我们不会丢失图像中的信息吗?第二个问题,我们如何定义训练期间要采取的作物数量?

而且,我训练了相同的网络(相同的层数,相同的卷积大小,FC 神经元会明显不同),第一次从 256x256 图像中裁剪 227x227,第二次从 256x256 图像中裁剪 255x255。根据我的直觉,裁剪为 255x255 的模型应该会给我最好的结果。但是我对 227x227 图像的精度越来越高,谁能解释一下它背后的直觉,还是我做错了什么?

4

1 回答 1

0

您的观察并非特定于 Caffe。

训练和测试期间裁剪图像的大小需要相同(在您的情况下为 227x227),因为上游网络层(卷积等)需要图像大小相同。在训练期间进行随机裁剪是因为您想要数据增强。但是,在测试期间,您希望针对标准数据集进行测试。否则,测试期间报告的准确性也将取决于不断变化的测试数据库。

作物在每次迭代时动态生成。训练批次中的所有图像都是随机裁剪的。我希望这能回答你的第二个问题。

你的直觉并不完整:作物越大 (227x227),你就有更多的数据增强。数据增强本质上是无中生有地创建“新”训练样本。这对于防止训练期间的过度拟合至关重要。对于较小的裁剪 (255x255),您应该期望更好的训练准确度但测试准确度较低,因为数据更有可能过度拟合。

当然,裁剪可能过度。裁剪过多,您会从图像中丢失太多信息。对于图像分类,理想的裁剪大小是不改变图像类别的裁剪大小(即,仅裁剪掉背景)。

于 2017-08-08T16:13:42.493 回答