Python 全卷积网络-训练数据中不同大小的图像

Python 全卷积网络-训练数据中不同大小的图像,python,keras,deep-learning,computer-vision,conv-neural-network,Python,Keras,Deep Learning,Computer Vision,Conv Neural Network,我正在尝试使用Keras库Tensorflow后端建立一个完全卷积的神经网络模型 我面临的问题是将]不同大小的图像分批提供给model.fit()函数。训练集由不同大小的图像组成,从768x501到1024x760不等 不超过5个图像具有相同的维度,因此将它们分组成批似乎没有任何帮助 Numpy允许以列表形式将数据存储在单个变量中。但是kerasmodel.fit()函数在接收列表类型的训练数组时抛出错误 我不希望调整大小和丢失数据,因为我已经有一个非常小的数据集 我如何着手培训这个网络?我认为

我正在尝试使用Keras库Tensorflow后端建立一个完全卷积的神经网络模型

我面临的问题是将]不同大小的图像分批提供给
model.fit()
函数。训练集由不同大小的图像组成,从768x501到1024x760不等

不超过5个图像具有相同的维度,因此将它们分组成批似乎没有任何帮助

Numpy允许以列表形式将数据存储在单个变量中。但是keras
model.fit()
函数在接收列表类型的训练数组时抛出错误

我不希望调整大小和丢失数据,因为我已经有一个非常小的数据集

我如何着手培训这个网络?

我认为空间金字塔池(SPP)可能会有所帮助。看看这个

我们注意到,SPP对于深CNN有几个显著的特性:

1) SPP能够生成固定长度的输出,而与输入大小无关,而以前的深度网络中使用的滑动窗口池无法生成固定长度的输出

2) SPP使用多级空间箱,而滑动窗口池仅使用单个窗口大小。多级池已被证明对对象变形具有鲁棒性

3) 由于输入尺度的灵活性,SPP可以汇集在不同尺度上提取的特征。实验表明,这些因素都提高了深度网络的识别精度



yhenon
已实现。

您可以尝试填充较小的图像,使其与最大的图像大小相同。如果这不是一个有效的解决方案,请尝试阅读。最后,有人提出了与您相同的问题。您为什么不想调整数据的大小?你有多少张图片?我只有大约1200张用于训练的图片。有些是1024x(~650),有些是768x(~520)。所以我所做的是将它们分成两个批次,并使用它们训练模型。我不想调整大小,因为我希望使用纯未更改的数据。但这似乎是唯一的方法,或者说是填充。所以,我正在训练一个完全卷积的网络。图像输入图像输出类型。因此,我的输出图像与输入图像的大小相同。我不明白的是,我已经将输入形状训练为(无,无,1)。使用两批训练图像-1024x680和760x520。但当我输入大小为1024x720的输入时,它会预测大小为1024x680的输出,这与我的一个训练批大小相对应。如何创建一个网络,该网络可以提供任意大小的输入图像,以产生所需的输出-与输入图像大小相同的图像。调整大小或裁剪是一种方法。