How to solve checkerboard problem caused by input patches in deep learning based super resolution?












1















I am studying a DBPN model, which is deep-learning model for the super resolution, with the tensorflow framework. I am suffered from "checkerboard problem" at scale x4 restoration. I know that the cause is using input patches (32x32 size) due to computing powers so that there is problem every 32 stride..



could anyone give me the solutions to cope with this problem ? Thanks!!



I already checked that kernel size should be multiple of the stride size



enter image description here










share|improve this question





























    1















    I am studying a DBPN model, which is deep-learning model for the super resolution, with the tensorflow framework. I am suffered from "checkerboard problem" at scale x4 restoration. I know that the cause is using input patches (32x32 size) due to computing powers so that there is problem every 32 stride..



    could anyone give me the solutions to cope with this problem ? Thanks!!



    I already checked that kernel size should be multiple of the stride size



    enter image description here










    share|improve this question



























      1












      1








      1








      I am studying a DBPN model, which is deep-learning model for the super resolution, with the tensorflow framework. I am suffered from "checkerboard problem" at scale x4 restoration. I know that the cause is using input patches (32x32 size) due to computing powers so that there is problem every 32 stride..



      could anyone give me the solutions to cope with this problem ? Thanks!!



      I already checked that kernel size should be multiple of the stride size



      enter image description here










      share|improve this question
















      I am studying a DBPN model, which is deep-learning model for the super resolution, with the tensorflow framework. I am suffered from "checkerboard problem" at scale x4 restoration. I know that the cause is using input patches (32x32 size) due to computing powers so that there is problem every 32 stride..



      could anyone give me the solutions to cope with this problem ? Thanks!!



      I already checked that kernel size should be multiple of the stride size



      enter image description here







      python conv-neural-network






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Dec 29 '18 at 8:54









      Richard

      26.6k19108166




      26.6k19108166










      asked Dec 29 '18 at 8:45









      YeopYeop

      61




      61
























          1 Answer
          1






          active

          oldest

          votes


















          0














          There's an excellent article about this on Distill. They state there:




          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.



          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]).




          A quick Google search also reveals a number of papers and source code dealing with this issue.






          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53968062%2fhow-to-solve-checkerboard-problem-caused-by-input-patches-in-deep-learning-based%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            There's an excellent article about this on Distill. They state there:




            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.



            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]).




            A quick Google search also reveals a number of papers and source code dealing with this issue.






            share|improve this answer




























              0














              There's an excellent article about this on Distill. They state there:




              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.



              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]).




              A quick Google search also reveals a number of papers and source code dealing with this issue.






              share|improve this answer


























                0












                0








                0







                There's an excellent article about this on Distill. They state there:




                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.



                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]).




                A quick Google search also reveals a number of papers and source code dealing with this issue.






                share|improve this answer













                There's an excellent article about this on Distill. They state there:




                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.



                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]).




                A quick Google search also reveals a number of papers and source code dealing with this issue.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 29 '18 at 8:53









                RichardRichard

                26.6k19108166




                26.6k19108166






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53968062%2fhow-to-solve-checkerboard-problem-caused-by-input-patches-in-deep-learning-based%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Monofisismo

                    Angular Downloading a file using contenturl with Basic Authentication

                    Olmecas