使用上采样加卷积的方法代替反卷积

探讨了神经网络生成图像时出现的棋盘状伪影问题,分析了反卷积层如何产生不均匀覆盖,并提出使用上采样方法作为解决方案。

URL: https://distill.pub/2016/deconv-checkerboard/

PAPER: Deconvolution and Checkerboard Artifacts

Overlap&Learning

神经网络生成的图像,普遍存在checkerboard pattern of artifacts的现象(高频),尤其在色彩比较强烈的图像中。(棋盘状)。因为神经网络有一个bias偏好,更容易生成average color,越偏离平均值,生成越困难。


反卷积产生uneven overlap,尤其是卷积核大小kernel size不可被步长stride除尽的时候。

二维情况下,不同轴的uneven overlap相叠加,产生不同强度的棋盘状的特征。

现在,一般使用多层反卷积来生成图像,尽管理论上可以消除假象的影响,实际上反卷积层层叠加,产生不同尺度上的假象。

理论上,模型可以学会处理uneven overlapping positions,所以输出仍是均衡的,实际上很难处理好。

限制filters,来避免严重的假象,同时会导致模型capacity的降低。

事实上,不仅是uneven overlap存在以上问题,even overlap的模型也会学习到导致相似假象的核。由于uneven overlap的默认行为,所以即便是even overlap的模型,也很容易在反卷积时产生假象。

大量的因素导致这个现象。产生假象是反卷积的默认行为,即便精心挑选size,反卷积也很容易产生假象。

Better Upsampling

从卷积中分理出上采样部分。使用差值方法来resize图像,然后进行卷积处理。

相较于反卷积每个输出窗口只有一个值,resize-convolution隐含地加权处理,抑制了高频假象的产生。

--->nearest-neighbor interpolation


--->bilinear interpolation


Artifacts in Gradients

不论何时,我们使用卷积层,都会在反向传播时做反卷积处理,这就在卷积中产生了棋盘特征。

max pooling导致一定程度的高频假象。[Geodesics of learned representations]

梯度假象会影响GANs。不清楚梯度假象的广在的含义,也许是一些神经元多次获得neighbors的梯度,也许是输入中的某些像素影响过大。

使用TensorFlow进行深度学习模型构建时,上采样(upsampling)是一个常见的需求,尤其是在图像分割、生成对抗网络(GANs)等任务中。传统的上采样方法之一是转置卷(transposed convolution),也称为反卷积(deconvolution),但是这种操作可能会导致棋盘效应(checkerboard artifacts)等问题。双线性插值(bilinear interpolation)是另一种常用的上采样技术,它通过计算输入图像中相邻像素点的线性组合来计算输出图像的新像素值,可以有效地缓解棋盘效应。 双线性插值的原理是在输出图像的每个像素位置上,根据该位置在输入图像中的映射坐标,找到输入图像中最接近的四个像素点,然后根据这四个点的位置和像素值,通过线性插值计算出输出像素的值。这种方法不涉及权重参数的学习,因而计算简单,速度快,并且可以产生相对平滑的输出图像。 在TensorFlow中,你可以使用`tf.image.resize`函数来实现双线性插值。以下是一个使用该函数进行上采样的简单示例: ```python import tensorflow as tf # 假设input_tensor是一个已经存在的Tensor对象,其尺寸需要被上采样 input_tensor = ... # 使用双线性插值进行上采样 upsampled_tensor = tf.image.resize(input_tensor, [new_height, new_width], method=tf.image.ResizeMethod.BILINEAR) # 接下来可以将upsampled_tensor用于后续的网络层或任务中 ``` 在这个例子中,`new_height`和`new_width`表示你希望输出张量的高和宽,`method=tf.image.ResizeMethod.BILINEAR`参数指定了使用双线性插值作为上采样方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值