我正在尝试在Caffe上训练自己的网络,类似于Imagenet模型。但我对作物层感到困惑。直到我理解Imagenet模型中的裁剪层,在训练期间,它将随机拍摄227x227图像并训练网络。但是在测试过程中,我们会拍摄中心227x227的图像,当我们从256x256图像裁剪中心227x27图像时,我们不会从图像中丢失信息吗?第二个问题,我们如何定义培训期间要采取的作物数量?
而且,我训练相同的网络(相同数量的层,相同的卷积大小FC神经元将明显不同),首先从256x256图像拍摄227x227裁剪,第二次从256x256图像拍摄255x255裁剪。根据我的直觉,255x255作物的模型应该给我最好的结果。但是我用227x227图像获得更高的准确度,有人能解释我背后的直觉,还是我做错了什么?
答案 0 :(得分:0)
您的观察结果并非针对Caffe。
训练和测试期间裁剪图像的大小需要相同(在您的情况下为227x227),因为上游网络层(卷积等)需要图像相同大小 。在训练期间完成随机作物是因为您想要数据增加。但是,在测试期间,您希望针对标准数据集进行测试。否则,测试期间报告的准确度也将取决于转移测试数据库。
每次迭代都会动态生成作物。训练批次中的所有图像都是随机裁剪的。我希望这能回答你的第二个问题。
你的直觉不完整:使用更大的作物(227x227),你有更多的数据增加。数据增强实质上创造了“新的”训练样本。这对于防止训练期间过度拟合至关重要。对于较小的裁剪(255x255),您应该期望更好的训练准确性但更低的测试精度,因为数据更有可能被过度拟合。
当然,种植可能过头了。裁剪太多而您从图像中丢失了太多信息。对于图像分类,理想的裁剪尺寸是不改变图像类别的尺寸(即,仅裁剪背景)。