为什么 CNN 中使用的图像大小通常是特定数字?

Why are image sizes used in CNN usually certain numbers?

我对计算机视觉和深度学习还很陌生。我一直想知道为什么在 CNN 模型(或其他模型)中输入的图像尺寸通常是某些数字,如 28*28、512*512、256*256。有什么理由吗?如果我将图像调整为任意大小会怎样?性能会受影响吗?

这是网络设计时定义的输入节点大小。训练也是使用该尺寸的图像完成的。因此,如果您想要一致的结果,您应该将输入图像调整为相同大小,并遵循训练中考虑的相同规范化规则。

如果您使用不同大小的图像,根据网络中使用的层,您可能会引发大小不匹配的异常,或者您将得到不同的输出大小。

大多数 CNN 架构使用的图像大小包含 2 的倍数。这样您就可以使用 MaxPooling 多次对图像进行下采样,而无需将分辨率四舍五入到最接近的整数。

512 -maxpool-> 256 -maxpool-> 128 -maxpool-> 64 -maxpool-> 32 ...

有时您会遇到这样的解决方案不起作用。例如,U-Net 使用 572*572 的分辨率,您可以在其中应用 MaxPooling 两次,直到您必须对分辨率进行四舍五入。这是因为 U-Net 使用未填充的卷积,其中一些图像在应用 MaxPooling 之前的卷积层中被裁剪。

572 -conv-> 570 -conv-> 568 -maxpool-> 284 -conv-> 282 -conv-> 280 -maxpool-> 140 ...

我不知道有任何论文评估了 MaxPooling 期间舍入分辨率的影响,但我的直觉是它可能不会改善事情。就个人而言,我在给定输入分辨率的情况下使用了几次舍入,并且与最初裁剪图像部分相比没有注意到差异。