【发布时间】:2018-07-02 00:05:09
【问题描述】:
我读到深度学习算法在将过滤器应用于矩阵之前会应用零填充,但这不会扭曲图像的边缘,尤其是在过滤后的图像被重复使用的情况下?
不确定我是否错了,但我认为当过滤器应用于它的零填充部分时,图像边缘的值会不断下降,因此重复时会导致“零边框”增加尺寸。
【问题讨论】:
标签: machine-learning computer-vision
我读到深度学习算法在将过滤器应用于矩阵之前会应用零填充,但这不会扭曲图像的边缘,尤其是在过滤后的图像被重复使用的情况下?
不确定我是否错了,但我认为当过滤器应用于它的零填充部分时,图像边缘的值会不断下降,因此重复时会导致“零边框”增加尺寸。
【问题讨论】:
标签: machine-learning computer-vision
你说的这种情况在卷积神经网络领域很常见,层的应用核大于1x1。在这种情况下,边缘像素将被切断以生成结果特征图。这不一定是个问题。像U-Net 这样的一些架构通过仔细定义初始图像大小来解决这个问题,因此像 MaxPooling 这样的操作处理的是偶数输入尺寸。大多数情况下,填充都应用于卷积层,因为它可以更轻松地处理不同类型的分辨率。输入和输出将具有相同的空间分辨率。
正如您所指出的,这意味着对边缘进行一些额外的处理,以免伪造值。一种方法是使用零填充并除以调整后的相关像素数。例如,如果一个 3x3 内核计算特征图的角值,它将覆盖 5 个填充像素和实际图像的 4 个像素。
因此操作的最后一步不是像我们通常那样除以 9,而是除以 4,因为内核当前只覆盖了 4 个相关像素。
另一种方法是使用填充,将边缘像素值复制到新边框。这就是为什么在 Keras 中它被称为padding='same'。
【讨论】: