题目:Image Super-Resolution by Neural Texture Transfer
代码:https://github.com/ZZUTK/SRNTT
会议:CVPR 2019
本文是Adobe发表在CVPR2019的基于参考图像的图像超分辨率重建论文,本文借鉴图像风格化 (image stylization)中神经纹理迁移(Neural Texture Transfer)思想,利用参考图像中的纹理,弥补低分辨率图像的细节信息。本文方法主要包括两步:1)特征空间的纹理匹配
,2)移匹配的纹理
。另外,本文提出一个CUFFED5数据集,这个数据集包含不同相似级别的参考图像。
对于传统的SISR问题,虽然使用感知相关的约束,比如感知损失(perceptual loss)和对抗损失(adversarial loss)能提升图像质量,使图像看起来更清晰,但是会生假的纹理(hallucinate fake textures)和人工的特征(artifacts)。也就是说,使用感知损失常常得不到真实的纹理细节信息
。
基于参考(reference-based)的方法, 即RefSR,通过利用高分辨率(HR)参考图像的丰富纹理来补偿低分辨率(LR)图像丢失的细节。但是之前的方法需要参考图像与LR包含相似的内容,并且需要图像对齐,否则的话,这些方法效果会很差。RefSR理想上应该可以有效利用参考图像,如果参考图像与LR不同,也不应该损害LR的复原效果,即RefSR应不差于SISR
。
为了解决传统RefSR的缺点,本文不需要图像对齐,而是通过在特征空间上匹配的方法,将语义相关的特征进行迁移·
。
SRNTT整体框架,主要包含局部纹理特征匹配(交换)和纹理迁移两部分
特征的匹配是在 I L R ↑ I^{LR\uparrow} ILR↑和 I R e f & I R e f ↑ ↓ I^{Ref} ~\& I^{Ref\uparrow\downarrow} IRef &IRef↑↓的特征空间中进行的,因为LR图像比较模糊,所以将参考图像进行下采用&上采样的模糊化,。
如何计算两个局部特征纹理相似性呢?对于两个特征patch,使用内积
计算相似性。
上式,计算了LR的 i-th patch和模糊化参考图像 的 j-th patch的相似性。注意,对参考patch进行了归一化。可以通过卷积
或者互相
关来加速以上计算过程:
S j S_j Sj即表示 s-th patch 相对 LR的相似性。相当于一个卷积核对LR进行卷积,计算结果即为Similarity map
。因为在LR和Ref的特征空间中密集采样,所以每个LR位置都对应多个不同的卷积核的卷积结果,对应多个不同相似性的纹理特征。基于Similarity map,选择LR每个位置的相似性最高的Ref patch,构成交换特征图M (swapped feature map)
:
即M在(x,y)位置对应的Ref patch是similairty score最大的Ref patch。由于每一个位置对应一个Ref patch,所以这些patch是重叠的,在重叠位置,取平均。另外,注意计算相似性是使用 I R e f ↑ ↓ I^{Ref\uparrow\downarrow} IRef↑↓,纹理迁移则是利用 I R e f I^{Ref} IRef。
在实现上,利用VGG-19提取特征,relu1_1, relu2_1,relu3_1用于多个尺度上纹理编码,但是为了加快匹配,只在relu3_1层进行匹配,将匹配结果对应到relu1_1和relu2_1。
有了多尺度的swapped feature map,如何进行纹理迁移呢?采用residual blocks和跳跃连接方式,融合LR的特征和swap特征,并通过sub-pixel conv上采样。
目标:1)保留LR的空间结构,2)提升SR的视觉质量,3)充分利用Ref的丰富纹理。提出四个loss function:
其中, G r G_r Gr计算 Gram matrix。
本文基于CUFED构建了一个数据集,数据集包含不同相似度的LR-HR-Ref 图像对。共有4个相似度级别,不同的相似度是基于SIFT特征匹配计算的
。测试数据集包含Sun80和Urban100。
定量来看,如果只考虑PSNR, SRNTT-L2也是优于SISR方法的。
使用其他loss,虽然降低PSNR,但是获得更精细的纹理。下图明显看出,SRNTT相比SRNTT-L2细节更真实,更清晰。
通过与CrossNet对比,可以看出,当Ref与LR差别很大,CrossNet复原结果包含Ref不相关的纹理,而SRNTT可以有效抑制不相关纹理的影响。后面两张说明好的Ref可以显著提高SR效果。