实验:生成图片反卷积与棋盘伪影
生成图片实验中总会出现各种各样的artifacts,这几天跑实验遇到了棋盘伪影,在前辈指导下了解了如何解决这个问题,记录一下
观察神经网络生成的图像时,经常会看到一些奇怪的棋盘格子状的伪影(artifact), 这些棋盘图案在颜色深的图像中最突出。
反卷积&重叠
使用神经网络生成图像时,经常使用反卷积操作从低分辨率与高阶描述构建图像。这会让网络先描绘粗糙的图像,再填充细节。
大致来说,反卷积层允许模型使用小图像中的每个点来“绘制”更大图像中的方块。但是反卷积很容易由于“不均匀重叠”,使图像中的某个部位的颜色比其他部位更深(Gauthier, 2015)。尤其是当核大小(输出窗口的大小)不能被步长(顶层点之间的空间)整除时,反卷积就会不均匀重叠。虽然原则上网络可以仔细地学习权重来避免这种情况,就像我们接下来会仔细探讨的那样,但在实践中神经网络很难完全避免不均匀重叠。
重叠图案也在二维中形成。两个轴上的不均匀重叠相乘,产生不同亮度的棋盘状图案。
事实上,不均匀重叠往往在二维上更极端!因为两个模式相乘,所以它的不均匀性是原来的平方。例如,在一个维度中,一个步长为2,大小为3的反卷积的输出是其输入的两倍,但在二维中,输出是输入的4倍。
神经网络通常使用多层反卷积,从一系列较低分辨率的描述中迭代建立更大的图像。虽然这些堆栈的反卷积可以消除棋盘效应,但它们经常混合,在更多尺度上产生棋盘效应。
步长为1的反卷积层——通常被认为是成功的模型中的最后一层(eg. Salimans et al., 2016)——在减轻棋盘效应方面非常有效。它们可以消除频率整除其大小的棋盘效应,也可以减少其他频率小于其大小的棋盘效应。但是,棋盘效应仍然会发生。
解决方法:
1)确保反卷积核的大小可以被步长整除,从而避免重叠问题。这等价于最近成功用于图像超分辨率解析的技术“子像素卷积”(sub-pixel convolution) (Shi, et al., 2016b)。但是,尽管这种方法有效,但反卷积仍然容易产生棋盘效应。
2)将上采样分离为较高分辨率的卷积到计算特征。例如,可以调整图像大小(使用最近邻居插值或双线性插值),然后进行卷积层。这似乎是一个自然的方法,大致类似的方法在图像超分辨率(例如,Dong,et al。,2015)中工作良好。
################################################################
【其实只用记住:】
【使用策略】如果使用反卷积生成图片中出现了棋盘伪影,则使用上采样+conv替换反卷积
详解参考:
翻译网址:https://www.jianshu.com/p/36ff39344de5
原网址: https://distill.pub/2016/deconv-checkerboard/