Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CNN使用具有显著尺寸差异的图像_Python_Tensorflow_Keras_Neural Network_Computer Vision - Fatal编程技术网

Python CNN使用具有显著尺寸差异的图像

Python CNN使用具有显著尺寸差异的图像,python,tensorflow,keras,neural-network,computer-vision,Python,Tensorflow,Keras,Neural Network,Computer Vision,我开发了一个用于图像分类的卷积神经网络CNN 我可用的数据集对于列车和测试集来说都是相对较小的35k图像。数据集中的每个图像大小不同。最小的图像为30 x 77,最大的图像为1575 x 5959 我看到了关于如何处理大小不同的图像的内容。这篇文章介绍了以下处理不同大小图像的方法 挤压图像意味着它们将调整大小以适应特定尺寸,而不保持纵横比 将图像居中裁剪到特定大小 用纯色将图像填充到正方形大小,然后调整大小。 综合以上几点 这些似乎是合理的建议,但我不确定哪种方法与我的情况最相关,因为图像的大小

我开发了一个用于图像分类的卷积神经网络CNN

我可用的数据集对于列车和测试集来说都是相对较小的35k图像。数据集中的每个图像大小不同。最小的图像为30 x 77,最大的图像为1575 x 5959

我看到了关于如何处理大小不同的图像的内容。这篇文章介绍了以下处理不同大小图像的方法

挤压图像意味着它们将调整大小以适应特定尺寸,而不保持纵横比

将图像居中裁剪到特定大小

用纯色将图像填充到正方形大小,然后调整大小。 综合以上几点 这些似乎是合理的建议,但我不确定哪种方法与我的情况最相关,因为图像的大小存在显著差异。我想对我来说调整图像大小是有意义的,但是保持相同的纵横比,每个图像都有相同的高度,然后对这些图像进行中心裁剪


其他人有什么想法吗?

第一件重要的事情是:调整大小会使图像恶化吗

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

如果是,则不应调整大小,而是应使用具有可变输入大小的模型,尽管有最小值。 如果否,调整大小是否会使所需元素达到相似的比例? 如果是:调整大小! 如果没有:最好考虑其他解决方案 当然,你可以用模型来识别不同大小的元素,但是差异越大,模型的功能就越强大,我相信这种说法是合理的

Keras为您提供了使用不同图像大小的可能性,您并不需要它们具有相同的大小

为此,您只需要指定input_shape=None,None,input_通道。 请注意,如果要创建和合并分支,则需要考虑兼容性

但是,对于不同的形状,您将无法使用展平层。您将需要GlobalExpooling2D或GlobalAveragePoolig2D。其他一些层也被限制为固定大小,但卷积层、池层和上采样层是可以的

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

调整到相同大小的组,而不会有很大的变化,以使培训更容易。 只需不逐个调整图像大小和训练图像即可 保持纵横比,并垫在侧面
但是最好的答案取决于你的测试

第一件重要的事情是:调整大小会恶化图像吗

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

如果是,则不应调整大小,而是应使用具有可变输入大小的模型,尽管有最小值。 如果否,调整大小是否会使所需元素达到相似的比例? 如果是:调整大小! 如果没有:最好考虑其他解决方案 当然,你可以用模型来识别不同大小的元素,但是差异越大,模型的功能就越强大,我相信这种说法是合理的

Keras为您提供了使用不同图像大小的可能性,您并不需要它们具有相同的大小

为此,您只需要指定input_shape=None,None,input_通道。 请注意,如果要创建和合并分支,则需要考虑兼容性

但是,对于不同的形状,您将无法使用展平层。您将需要GlobalExpooling2D或GlobalAveragePoolig2D。其他一些层也被限制为固定大小,但卷积层、池层和上采样层是可以的

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

调整到相同大小的组,而不会有很大的变化,以使培训更容易。 只需不逐个调整图像大小和训练图像即可 保持纵横比,并垫在侧面
但是最好的答案取决于你的测试

这是你需要通过实验来回答的问题,而不是我们能回答的问题。我不知道为什么这个评论是合适的。我不希望有人为我做这项工作,只是希望了解人们过去考虑过做什么,或者我是否错过了任何可以尝试的东西。请查看此网站的主题,您将看到您的问题与堆栈溢出无关。最后,我说的是,你想知道哪种方法是相关的,你只能通过实验来获得。这是你需要通过实验来回答的问题,而不是我们可以回答的问题。我不确定为什么这个评论是合适的。我并不期待有人为我做这项工作,我只是希望了解人们过去考虑过做什么,或者我是否错过了什么
ng尝试。请检查此站点的主题,您将看到您的问题与堆栈溢出无关。最后,我说的是,你想知道哪种方法是相关的,你只能通过实验才能得到。