【发布时间】:2020-06-12 07:34:37
【问题描述】:
我正在使用 GAN 解决 4 倍缩放的单图像超分辨率 (SISR) 问题。我正在使用残差学习技术,所以我从经过训练的网络得到的是一个张量,其中包含放大后的输入图像和目标图像之间的估计残差图像。我向网络提供代表图像的标准化 numpy 数组 (np.asarray(image) / 255)。
为了得到最终的估计图像,我必须将放大后的输入图像与残差图像相加。这是我使用的代码(输入图像的大小为64x64,而输出的大小为256x256):
net.eval()
img = Image.open(image_folder + 'lr/' + image_name)
tens = transforms.ToTensor()
toimg = transforms.ToPILImage()
input = tens(img)
bicub_res = tens(img.resize((img.size[0] * 4, img.size[1] * 4), Image.BICUBIC))
input = input.view((1, 3, 64, 64))
output = net(input)
output = torch.add(bicub_res, output).clamp(0, 255)
output = output.view((3, 256, 256))
output = toimg(output)
现在,将这些图像作为低分辨率、高分辨率和残差(网络输出):
如果我将低分辨率图像与残差图像相加,如代码所示,我得到的是:
这似乎有点太暗了。现在,鉴于数据结构是 numpy 数组,我尝试将数组的值拉伸回范围 (0, 255),然后将其转换回图像。在这种情况下,我得到了这个:
比以前亮了一点,但仍然很暗。我究竟做错了什么?如何恢复我的图像?
编辑:我会回答我的问题:问题是我忘记添加的每一层的常数因素。
不过,我还有一个问题要问:在恢复正确的图像后,我注意到每张图像上都有某种噪点:
看着其他图像,比如婴儿,我注意到它是某种“水印自我图像”的重复 9 次(在 3x3 网格上)。无论我做什么或如何训练网络,这种模式对于每张图片都是相同的。 为什么我会看到这个工件?
【问题讨论】:
标签: python python-3.x numpy python-imaging-library