如何处理卷积神经网络中的矩形图像?

人工智能 神经网络 卷积神经网络 全卷积网络
2021-10-19 00:04:19

我遇到的几乎所有卷积神经网络架构都有一个正方形输入大小的图像,比如32×32,64×64或者128×128. 理想情况下,我们可能没有适用于所有场景的方形图像。例如,我们可以有一个大小为384×256

我的问题是我们如何处理这些图像

  1. 训练,
  2. 发展,和
  3. 测试

神经网络?

我们是强制图像调整为神经网络的输入,还是只是将图像裁剪为所需的输入大小?

2个回答

我认为平方图像更多是简单的选择。

卷积神经网络有两种类型

  • 传统 CNN:末端具有完全连接层的 CNN,以及
  • 全卷积网络(FCN):它们仅由卷积层(以及下采样和上采样层)组成,因此它们不包含全连接层

对于传统的 CNN,输入总是需要具有相同的形状,因为您将最后一个卷积层展平,并具有固定的大小。由于 flatten 层具有固定大小,因此之前层的特征图形状必须是相同的形状,因此输入(图像)也必须是相同的形状。

但是,在 FCN 中,您不会展平最后一个卷积层,因此您不需要固定的特征图形状,因此您不需要具有固定大小的输入。

在这两种情况下,您都不需要平方图像。在使用带有全连接层的 CNN 时,您只需要小心,以使扁平层具有正确的形状。

例如,如果您有一个输入大小320×160,并且你有 3 个池化层,所以你在最后一个卷积层的输出是40×20×c(和c过滤器/通道的数量),那么你只需要展平层4020c神经元。

如果您创建一个新网络,只需将其设计为处理矩形图像。

如果您想使用已经预训练的图像,我认为更好的选择是调整图像大小。

如果裁剪部分中的信息很重要,那么您的预测可能是错误的(这取决于感兴趣的对象是否在裁剪的图像部分中)。实际上,在 Yolo(一个对象识别网络)中,如果图像不符合输入要求,则会调整其大小。参见 YOLO 论文的图 1这是因为您不需要高分辨率来检测对象(例如,CIFAR 数据集具有形状图像32×32,但网络仍然可以预测正确的标签)。所以,我认为调整图像大小可能不会对预测产生太大影响(除非新尺寸与原始尺寸有很大不同)

如果您有一个矩形图像并且您正在使用现有模型(或现有代码),那么您必须添加一个输入预处理管道,将图像转换为标准尺寸。这在计算机视觉中很常见,PyTorch 和 Tensorflow 都支持轻松添加输入预处理输入管道以进行这种转换。

此外,如果您有固定大小的矩形图像数据,那么您可以设计自己的网络架构(或初始模块),通过使用非对称池化和卷积来考虑图像特征。