2017-03-05 57 views
2

我试图在Caffe上训练我自己的网络,类似于Imagenet模型。但是我对作物层感到困惑。直到我了解Imagenet模型中的作物层,在培训期间,它将随机抽取227x227图像作物并训练网络。但是在测试期间,它将采用中心227x227图像裁剪,当我们从256x256图像裁剪中心227x27图像时,我们是不是放松了图像的信息?第二个问题是,我们如何确定在培训期间需要的作物数量?Caffe |通过随机裁剪来增加数据

此外,我还训练了同样的网络(层数相同,FC神经元的卷积大小明显不同),首先从256x256图像获取227x227的作物,然后从256x256图像获取255x255作物。根据我的直觉,255x255作物的模型应该给我最好的结果。但是我用227x227图像获得更高的准确性,任何人都可以向我解释背后的直觉,还是我做错了什么?

+0

我认为这个问题应该得到一个更广泛的答案,描述caffe如何处理“实时”数据增强。非常希望看到这个答案。 – Shai

+0

@Shai Ya thats fine。 – Dharma

回答

0

您的观察结果不是特定于Caffe。

由于上游网络层(卷积等)需要图像为相同尺寸,训练和测试期间裁剪图像的尺寸需要相同(您的情况为227x227)。随机作物在培训期间完成,因为您需要数据增强。但是,在测试期间,您想要针对标准数据集进行测试。否则,在测试期间报告的准确性也将取决于移动测试数据库。

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

你的直觉并不完整:对于更大的作物(227x227),你有更多的数据增加。数据增强从本质上创造了“新”训练样本。这对防止训练时过度配合至关重要。对于较小的作物(255x255),您应该期望更好的培训准确度,但测试准确度更低,因为数据更可能过度配备。

当然,裁剪可能过度。太多的裁剪,你从图像中失去了太多的信息。对于图像分类,理想的裁剪尺寸是不会改变图像类别的尺寸(即只裁剪掉背景)。