<p>There's an <a href="https://distill.pub/2016/deconv-checkerboard/" rel="nofollow noreferrer">excellent article</a> about this on Distill. They state there:</p>

<blockquote>
  <p>One approach is to make sure you use a kernel size that is divided by
  your stride, avoiding the overlap issue. This is equivalent to
  “sub-pixel convolution,” a technique which has recently had success in
  image super-resolution [8]. However, while this approach helps, it is
  still easy for deconvolution to fall into creating artifacts.</p>
  
  <p>Another approach is to separate out upsampling to a higher resolution
  from convolution to compute features. For example, you might resize
  the image (using nearest-neighbor interpolation or bilinear
  interpolation) and then do a convolutional layer. This seems like a
  natural approach, and roughly similar methods have worked well in
  image super-resolution (eg. [9]).</p>
</blockquote>

<p>A quick Google search also reveals <a href="https://arxiv.org/pdf/1806.02658.pdf" rel="nofollow noreferrer">a</a> <a href="https://arxiv.org/pdf/1707.02937.pdf" rel="nofollow noreferrer">number</a> of papers and <a href="https://github.com/prajjwal1/super_resolution" rel="nofollow noreferrer">source code</a> dealing with this issue.</p>
How to solve checkerboard problem caused by input patches in deep learning based super resolution?
<p>I am studying a DBPN model, which is deep-learning model for the super resolution, with the tensorflow framework. <strong>I am suffered from "checkerboard problem" at scale x4 restoration.</strong> I know that the cause is using input patches (32x32 size) due to computing powers so that there is problem every 32 stride..</p>

<p>could anyone give me the solutions to cope with this problem ? Thanks!!</p>

<p>I already checked that kernel size should be multiple of the stride size</p>

<p><img src="https://i.stack.imgur.com/P0I9J.png" alt="enter image description here"></p>