gpt4 book ai didi

神经网络预处理时的图像缩放方法

转载 作者:行者123 更新时间:2023-11-30 08:30:45 26 4
gpt4 key购买 nike

我是机器学习新手。我正在尝试从一组图像(包含 120 个品种的斯坦福狗)创建一个输入矩阵 (X) 来训练卷积神经网络。我的目标是调整图像大小,并通过将每个像素设为单独的列,将每个图像变成一行。

如果我直接将图像大小调整为固定大小,图像会因挤压或拉伸(stretch)而失去其原创性,这不好(第一个解决方案)。

我可以通过固定宽度或高度来调整大小,然后裁剪它(所有生成的图像的大小都与 100x100 相同),但可以裁剪图像的关键部分(第二种解决方案)。

我正在考虑另一种方法,但我确信。假设我想要每个图像 10000 列。我不会将图像大小调整为 100x100,而是调整图像大小,使总像素数约为 10000 像素。因此,尺寸为 50x200、100x100 和 250x40 的图像都将转换为 10000 列。对于 52x198 等其他尺寸,将考虑 10296 中的前 10000 个像素(第三种解决方案)。

我上面提到的第三种解决方案似乎保留了图像的原始形状。然而,在转换为行时,它可能会失去所有这些原创性,因为并非所有图像都具有相同的大小。我想知道您对这个问题的评论。如果您能指导我找到可以了解该主题的资源,那就太好了。

最佳答案

解决方案 1(简单地调整输入图像的大小)是一种常见方法。除非您的纵横比与预期的输入形状有很大不同(或者您的目标类具有严格的几何约束),否则通常仍然可以获得良好的性能。

正如您所提到的,解决方案 2(裁剪图像)的缺点是可能会排除图像的关键部分。您可以通过在原始图像的多个子窗口上运行分类来解决这个问题(即,通过以适当的步幅水平和/或垂直地跨过输入图像来对多个 100 x 100 子图像进行分类)。然后,您需要决定如何组合多个分类结果。

解决方案 3 不起作用,因为卷积网络需要知道图像尺寸(否则,它不会知道哪些像素水平和垂直相邻)。因此,您需要传递具有明确尺寸(例如 100 x 100)的图像,除非网络需要一个从假定尺寸展平的数组。但是,如果您只是传递 10000 个像素值的数组,并且网络不知道(或无法假设)图像是 100 x 100、50 x 200 还是 250 x 40,则网络无法应用正确地使用卷积滤波器。

解决方案 1 显然是最容易实现的,但您需要平衡更改图像长宽比可能产生的影响与为每个图像运行和组合多个分类所需的工作量。

关于神经网络预处理时的图像缩放方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102410/

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