Checkboard问题。16年就有人对这一问题进行了研究$^{[1]}。

简单地说就是我们用的转置卷积(transposed convolution)操作(注意本质上不是deconvolution,反卷积)会产生这种现象;

解决的方案就是避免使用这种卷积,文章中作者使用的是resize-conv;

具体操作很简单:

对于输入,我们想要得到,经典的转置卷积通过使用stride为2的操作得到;

对于resize-conv,我们首先对输入作上采样,比如最近邻,双线性等插值,使其shape成为,再对其使用stride为1的普通卷积操作即可。

另外多说一点,对于TF框架,其相关的resize API有问题(至少我当时用的时候社区普遍反映过这一问题,1.x版本),这里特指tf.image.resize_images那一系列的API,若用,推荐令其第四个参数align_corners为True,原因以及该API现状具体可见相关社区讨论

最后多说一句,搞淦搞算法,不保证就业,且爱且珍惜。

祝好:)

Reference:
[1] Deconvolution and Checkboard Artifacts

[2] Github issues on TF's resize API

[3] how-tensorflows-tf-image-resize-stole-60-days-of-my-life