gpt4 book ai didi

python - CNN 使用具有显着尺寸差异的图像

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:00 25 4
gpt4 key购买 nike

我正在开发用于图像图像分类的卷积神经网络 (CNN)。

我可用的数据集相对较小(训练集和测试集均约有 35,000 张图像)。数据集中的每张图像大小各不相同。最小的图像为 30 x 77,最大的图像为 1575 x 5959。

我看到了这个post关于如何处理大小不同的图像。该帖子确定了以下处理不同尺寸图像的方法。

  • “挤压”图像意味着它们将在不保持纵横比的情况下调整大小以适应特定尺寸

  • 将图像居中裁剪为特定尺寸。

  • 用纯色填充图片至正方形大小,然后调整大小。
  • 结合以上内容

这些似乎是合理的建议,但我不确定哪种方法最适合我的情况,因为图像在尺寸上有显着差异。我认为调整图像大小但保持相同的纵横比(每个图像具有相同的高度)对我来说是有意义的,然后对这些图像进行中心裁剪。

其他人有什么想法吗?

最佳答案

首先重要的是:调整大小会破坏图像吗?

无论图像大小如何,图像中您想要的元素是否都合理地处于相同的比例?

  • 如果是,则不应调整大小,使用具有可变输入大小的模型(尽管有最小值)。
  • 如果不是,调整大小是否会使您想要的元素达到相似的比例?
    • 如果是:调整大小!
    • 如果不是:最好考虑其他解决方案

当然你可以拥有可以识别许多不同尺寸元素的模型,但是差异越大,模型越强大(我相信这个说法是非常有道理的)

Keras 为您提供了处理不同图像尺寸的可能性(您实际上并不需要它们具有相同的尺寸)。

为此,您只需指定 input_shape=(None,None,input_channels)
请注意,如果您要创建和合并分支,则需要注意兼容性。

但是对于不同的形状,您将无法使用Flatten 图层。您将需要 GlobalMaxPooling2DGlobalAveragePooling2D。其他一些层也限制为固定大小,但卷积层、池化层和上采样层都可以。

困难的部分是您不能在单个 numpy 数组中放置不同的大小。然后你可以:

  • 将大小调整为相同大小的组,而不会出现巨大差异,从而使训练更容易。
  • 只是不要一张一张地调整大小和训练图像
  • 保持宽高比并填充两侧

但最佳答案取决于您的测试。

关于python - CNN 使用具有显着尺寸差异的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com