我们应该如何填充要输入 CNN 的图像?

人工智能 深度学习 卷积神经网络 计算机视觉 图像处理
2021-11-12 20:10:07

每个有深度学习经验的人都可能知道,在图像分类问题中,我们通常为图像添加边框,然后将其调整为 CNN 网络的输入大小。这样做的原因是为了保持原始图像的纵横比并保留它的信息。

我见过人们填充黑色(每个通道 0 像素值)、灰色(每个通道 127 像素值)或从高斯分布生成的随机值到边界。

我的问题是,是否有任何证据证明其中哪一个是正确的?

2个回答

如果通过网络的前向馈电的计算分量没有曲率,这通常是乘积之和的情况,那么可以证明任何恒定像素值在对收敛结果的影响方面是等效的。我们不希望有证据证明这一点,因为花时间为出版而写作太微不足道了。通常,功能正常的视觉系统具有曲率前馈计算组件,因此填充可能很重要。

正如Gauge Equivariant Convolutional Networks 和二十面体 CNN (Taco S. Cohen, Maurice Weiler, Berkay Kicanaoglu, Max Welling, 2019) 中所述,即使是卷积层也可能具有激活函数或更复杂的东西。

如果使用具有像未填充坐标那样的值分布的纯随机值,则可能证明获得了一些收益,但在刚刚进行的一些学术文章搜索中没有出现。毫不奇怪,关于密码学的各种消息填充策略的属性有很多证据。

如果没有在 VLSI 电路中包含热噪声或量子噪声采集设备以及将这些设备暴露在软件中,则无法生成纯粹的随机值。这留下了预期从用于填充的伪随机噪声发生器的帧学习特征中提取特征的学习方法的风险。

答案是没有一个是普遍正确的,而且在尽可能多的情况下证明不同技术之间的优势似乎还有很多工作要做。

老实说,我经常看到图像调整大小而不是填充,并且倾向于调整图像大小。也许是因为我使用的数据集的图像具有几乎相等的纵横比。

一个主要的例外是当我使用 MR 图像时。这些是正交的,弄乱纵横比是错误的。然而,在这个域中,图像到处都有黑色边框,所以零填充很容易应用。

我见过的填充最常见的用途是数据增强(填充由于平移、旋转、移位等而消失的值)。在这方面,我使用了许多类型的填充(常量值、随机值、“相同”填充、镜像填充等)。我发现经验上最好的填充是零填充,但我不认为你永远都会找到证明这一点的。我喜欢把它想象成一个超参数不同的填充策略可能更适合不同的任务。虽然我认为零填充是最安全的(搞砸的可能性很小)。