我正在尝试使用Keras库(TensorFlow后端)建立一个完全卷积的神经网络模型。
我面临的问题是,批量输入不同尺寸的图像,以实现model.fit()
功能。训练集由不同尺寸的图像组成,从768x501到1024x760不等。
不超过5个图像具有相同的尺寸,因此将它们分组成批似乎没有帮助。
numpy允许以列表形式将数据存储在单个变量中。但是kerasmodel.fit()
函数在接收列表类型的训练数组时抛出了一个错误。
我不希望调整数据大小并丢失数据,因为我已经有一个非常小的数据集。
我该如何训练这个网络?
最佳答案
我认为空间金字塔池(spp)可能会有所帮助。签出此paper。
我们注意到,SPP对于深层CNN有几个显著的特性:
1)无论输入大小,SPP都能产生固定长度的输出,而以前的深网中使用的滑动窗口池则不能;
2)SPP使用多级空间容器,而滑动窗口池仅使用单个窗口大小。多级池对对象变形具有鲁棒性;
3)由于输入尺度的灵活性,SPP可以汇集在不同尺度上提取的特征。实验表明,这些因素都提高了深网络的识别精度。yhenon
已经实现了SPP for Keras on Github。
关于python - 完全卷积网络 - 训练数据中不同大小的图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45236071/