原因:在上采样使用反卷积的时候,卷积核的大小不能被步长整除导致的。
方法 | 优点 | 缺点 |
多层反卷积 | 可能消除棋盘效应 | 通常会复合,从而在各种尺度上产生棋盘效应 |
反卷积后面接个步长为1的卷积 | 效果有限 | |
调整卷积核的权重,适当加大重叠部分少的权重 | 理论有效 | 不仅有困难也会减弱模型的表达力。 |
使得卷积核大小不能被步长整除 | 卷积核权重的学习不均匀也会导致棋盘效应现象 | |
调整图像大小(使用最近邻插值或双线性插值),然后执行卷积操作。 | 大致相似的方法在图像超分辨率方面表现良好。 |
当我们在用反卷积(转置卷积)做图像生成或者上采样的时候或许我们会观察到我们生成的图片会出现一些奇怪的棋盘图案或者说你感觉到你生成的图片有颗粒感。如下图所示
这种现象之所以会发生是因为在上采样使用反卷积的时候,卷积核的大小不能被步长整除导致的。先看一下没有棋盘效应的情况:
再看一下出现棋盘效应的情况:
并且在二维图片上棋盘效应会更加严重。因此为了避免棋盘效应的发生,一般有一下几种解决方案:
方法1:现在,神经网络在创建图像时通常使用多层反卷积,从一系列较低分辨率的描述中迭代地构建较大的图像。虽然这些堆叠的反卷积可能会消除棋盘效应,但它们通常会复合,从而在各种尺度上产生棋盘效应。
方法2:在反卷积后面,再接一个步长为1的卷积,效果有限。
方法3:调整卷积核的权重,适当加大重叠部分少的权重,虽然理论有效,但在实际操作中,不仅有困难也会减弱模型的表达力。
方法4:使得卷积核大小不能被步长整除,但卷积核权重的学习不均匀也会导致棋盘效应现象(下图为步长为2,核大小为4所产生的棋盘效应现象)
方法5:调整图像大小(使用最近邻插值或双线性插值),然后执行卷积操作。这似乎是一种自然的方法,大致相似的方法在图像超分辨率方面表现良好。
总结:从原始英文博客上的实验结论来看,使用上采样+卷积层的图像放大方法有效的改善了棋盘效应,所以要是图像生成的时候遇到了棋盘效应你知道怎么做了吗?Upsamping+Convolution来帮你。