改变训练好的卷积神经网络的输入形状是否合理

Is it reasonable to change the input shape for a trained convolutional neural network

我见过很多超分辨率网络,它们似乎暗示可以在 (x,y,d) 的输入上训练网络,然后将任意大小的图像传入模型进行预测,例如在 Keras 中用占位符值 (None,None,3) 指定,并且将接受任何大小。

例如 https://github.com/krasserm/super-resolution 在 24x24x3 的输入上训练,但接受任意大小的图像以调整大小,演示代码使用 124x118x3。

这是明智的做法吗?当给定较大的输入时,网络是否只是在其上滑动 window 并应用与在较小尺寸图像上学习的相同的权重?

卷积绝对没有问题,它们将完全按照预期工作,具有相同的权重、相同的内核大小等。

唯一可能的问题是:模型可能没有学习你图像的新比例(因为它以前从未见过这个比例)并且可能给你不好的结果。

另一方面,该模型可以用许多 sizes/scales 进行训练,变得对变化更稳健。


FlattenReshape等会有问题
只有 GlobalMaxPooling2DGlobalAveragePooling2D 支持不同的尺寸。

你猜对了。卷积层学习在内核的尺度上区分特征,而不是在整个图像的尺度上。具有 3x3 内核的层将学习识别最大 3x3 像素的特征,并且能够识别图像中的该特征,无论图像本身是 3x3、100x100 还是 1080x1920。