本文共 1421 字,大约阅读时间需要 4 分钟。
参考
论文链接:
checkboard 效应:
当我们利用网络生成图片的时候,一般是先低分辨率然后高分辨率的构建出来,这能够让网络先描述一个比较粗糙的图片,然后在里面填充细节。
为了低分辨率到高分辨率,我们需要一些方法。最常用的方法是使用deconvolution操作。大致上,反卷积层让模型使用小图像中的每个点在大图像中“绘制”一个正方形。反卷积在其他地方也叫做transposed convolution(转置卷积)。但是,反卷积很容易产生“不均匀/不规则的重叠”(uneven overlap),在某些地方比其他地方添加更多的隐喻性绘画,特别是再输出尺寸不能被stride整除的时候。在原则上,网络可以carefully学习权重以避免这种情况,在实践中,神经网络努力完全避免这种情况。In fact, not only do models with uneven overlap not learn to avoid this, but models with even overlap often learn kernels that cause similar artifacts!
因为:
At best, deconvolution is fragile because it very easily represents artifact creating functions, even when the size is carefully chosen. At worst, creating artifacts is the default behavior of deconvolution.
那么有什么上采样方法 is more resistant to artifacts?为了避免这些artifacts,上采样地方法shouldn’t have artifacts as its default behavior。一种方法是设计出kernel size能被stride整除,这个等同于亚像素卷积(sub-pixel convolution)----最近在图像超分辨方面取得成功地一种技术。但是,尽管该设计在一定程度上有帮助,但是依旧会让反卷积陷进去creating artifacts。
另外一种方法就是从卷积中分离出高分辨率的上采样来计算特征。例如resize图像(使用nearest-neighbor interpolation或者bilinear interpolation)然后做一个convolution layer。
deconvolution和resize-convolution这两种方法都是线性操作,都可以解释为矩阵。文中作者最好的结果是采用nearest-neighbor的插值方式后接convolution。
用upsample(最近邻插值方式)+convolution的方法代替deconvolution有很好的效果。
当进行backward的时候,如果使用反卷积,会将checkbord patterns 带进gradient,和使用反卷积forward生产图片一样。
pggan采用的小分辨率到大分辨率的过程,G就是upsample(最近邻插值)+convolution,而对应的D从大分辨率到小分辨率的过程是convolution+dowmsample(average pool)。
转载地址:http://mlwbf.baihongyu.com/