我开发了一个用于图像图像分类的卷积神经网络 (CNN)。可供我使用的数据集相对较小(训练集和测试集均约 35k 个图像)。数据集中的每个图像的大小各不相同。最小图像为 30 x 77,最大图像为 1575 x 5959。我看到了这篇关于如何处理大小不一的图像的帖子。该帖子确定了以下处理不同尺寸图像的方法。“Squash”图像意味着它们将被调整大小以适应特定尺寸而不保持纵横比将图像居中裁剪为特定尺寸。用纯色填充图像到平方大小,然后调整大小。上面的东西的组合这些似乎是合理的建议,但我不确定哪种方法最适合我的情况,其中图像在尺寸上有显着差异。我认为调整图像大小但保持相同的纵横比(每个图像具有相同的高度),然后对这些图像进行中心裁剪是有意义的。有没有其他人有任何想法?
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
第一个重要的事情是:调整大小会破坏图像吗?
尽管图像大小不同,图像中所需的元素是否都以相同的比例合理地排列?
如果是,则不应调整大小,使用具有可变输入大小的模型(尽管有最小值)。
如果不是,调整大小会将您想要的元素带到类似的比例吗?
如果是:调整大小!
如果不是:最好考虑其他解决方案
当然,您可以拥有可以识别多种不同尺寸元素的模型,但是差异越大,模型就越强大(我相信这个说法非常合理)
Keras 为您提供了使用不同图像尺寸的可能性(您实际上并不需要它们都具有相同的尺寸)。
为此,您只需要指定input_shape=(None,None,input_channels)
.
请注意,如果您要创建和合并分支,则需要注意兼容性。
但是,对于不同的形状,您将无法使用Flatten
图层。您将需要GlobalMaxPooling2D
或GlobalAveragePooling2D
。其他一些层也仅限于固定大小,但卷积、池化和上采样层都可以。
困难的部分是你不能在一个 numpy 数组中放置不同的大小。然后你可以:
调整到相同大小的组,没有太大的变化,使训练更容易。
根本不一一调整图像大小和训练图像
保持纵横比并填充侧面
但最佳答案取决于您的测试。
添加回答
举报
0/150
提交
取消