- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发用于图像图像分类的卷积神经网络 (CNN)。
我可用的数据集相对较小(训练集和测试集均约有 35,000 张图像)。数据集中的每张图像大小各不相同。最小的图像为 30 x 77,最大的图像为 1575 x 5959。
我看到了这个post关于如何处理大小不同的图像。该帖子确定了以下处理不同尺寸图像的方法。
“挤压”图像意味着它们将在不保持纵横比的情况下调整大小以适应特定尺寸
将图像居中裁剪为特定尺寸。
这些似乎是合理的建议,但我不确定哪种方法最适合我的情况,因为图像在尺寸上有显着差异。我认为调整图像大小但保持相同的纵横比(每个图像具有相同的高度)对我来说是有意义的,然后对这些图像进行中心裁剪。
其他人有什么想法吗?
最佳答案
首先重要的是:调整大小会破坏图像吗?
无论图像大小如何,图像中您想要的元素是否都合理地处于相同的比例?
当然你可以拥有可以识别许多不同尺寸元素的模型,但是差异越大,模型越强大(我相信这个说法是非常有道理的)
Keras 为您提供了处理不同图像尺寸的可能性(您实际上并不需要它们具有相同的尺寸)。
为此,您只需指定 input_shape=(None,None,input_channels)
。
请注意,如果您要创建和合并分支,则需要注意兼容性。
但是对于不同的形状,您将无法使用Flatten
图层。您将需要 GlobalMaxPooling2D
或 GlobalAveragePooling2D
。其他一些层也限制为固定大小,但卷积层、池化层和上采样层都可以。
困难的部分是您不能在单个 numpy 数组中放置不同的大小。然后你可以:
但最佳答案取决于您的测试。
关于python - CNN 使用具有显着尺寸差异的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724668/
我是一名优秀的程序员,十分优秀!