SRCNN是图像超分辨率中最著名的最新技术之一。作者提出了一种CNN分层结构,其中他们依次使用4个卷积层,滤波器大小分别为9、1、5、3。
根据我的理解,这意味着图像大小将逐渐减小(第二层除外)。即使使用填充来保持图像大小相同,第一个操作也将意味着沿每个边缘添加4个零。因此,大小为5的滤波器在一端基本上只能看到零,这将导致沿边缘的分辨率变差。
本文没有解释它们如何解决缩小图像尺寸的问题。任何帮助将不胜感激。 预先感谢。
答案 0 :(得分:0)
此github存储库显示了处理边缘问题的方法(或见解)。您可能需要对其进行一些修改以适合您的代码。
答案 1 :(得分:0)
抱歉回复晚了,
我一直在这个领域工作,我终于明白为什么即使在应用卷积运算时图像大小也没有减小。让我们以作者提到的架构为例,即( 9 - 3 - 5 )。
在代码实现中,图像被划分为 32x32 子图像,对于每个子图像,它的 hr 和 lr 版本通过缩小和放大来准备。所以我们准备了一个大小为 [20:20] 和 lr 补丁 [32:32] 的 hr 补丁。 (在将这些补丁作为第一个 conv 层的输入之前,我们移除了 6 个边界像素,因此 hr 补丁形状将为 32 - (6+6) = 20 x 20 这就是为什么我在上面提到 hr 补丁为 [20:20] )
整个技巧在于填充,我们提供 LR 补丁作为 CNN 的输入
First conv layer : filter size = 9, padding = Valid, 所以形状 output = n-f+1 ( 32 - 9 + 1 ) = 24, 所以第一层的输出是24x24的图像
第二个卷积层 : filter size = 3, padding = Same, 所以形状 output = 输入的形状,所以第二层的输出是 24x24 图像
第三个conv层:filter size = 5,padding = Valid,所以形状 output = n-f+1 ( 24 - 5 + 1 ) = 20,所以第三层的输出是20x20的图像。
所以最后我们有一个 20x20 的 LR 补丁和 20x20 的 HR 补丁,我们比较它,执行 mse 和反向传播错误。
所以这里我们实际上并没有增加图像的大小,我们保持图像的大小不变,并进行调整以使图像看起来更好。
干杯:)