[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

题目:Image Super-Resolution by Neural Texture Transfer

代码:https://github.com/ZZUTK/SRNTT

会议:CVPR 2019

1. 简介

本文是Adobe发表在CVPR2019的基于参考图像的图像超分辨率重建论文,本文借鉴图像风格化 (image stylization)中神经纹理迁移(Neural Texture Transfer)思想,利用参考图像中的纹理,弥补低分辨率图像的细节信息。本文方法主要包括两步:1)特征空间的纹理匹配,2)移匹配的纹理。另外,本文提出一个CUFFED5数据集,这个数据集包含不同相似级别的参考图像。

2. 动机

对于传统的SISR问题,虽然使用感知相关的约束,比如感知损失(perceptual loss)和对抗损失(adversarial loss)能提升图像质量,使图像看起来更清晰,但是会生假的纹理(hallucinate fake textures)和人工的特征(artifacts)。也就是说,使用感知损失常常得不到真实的纹理细节信息

基于参考(reference-based)的方法, 即RefSR,通过利用高分辨率(HR)参考图像的丰富纹理来补偿低分辨率(LR)图像丢失的细节。但是之前的方法需要参考图像与LR包含相似的内容,并且需要图像对齐,否则的话,这些方法效果会很差。RefSR理想上应该可以有效利用参考图像,如果参考图像与LR不同,也不应该损害LR的复原效果,即RefSR应不差于SISR

为了解决传统RefSR的缺点,本文不需要图像对齐,而是通过在特征空间上匹配的方法,将语义相关的特征进行迁移·

3. 方法

SRNTT整体框架,主要包含局部纹理特征匹配(交换)和纹理迁移两部分


[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

3.1. Feature swaping(特征匹配/交换)

特征的匹配是在ILRI^{LR\uparrow}IRef &IRefI^{Ref} ~\& I^{Ref\uparrow\downarrow}的特征空间中进行的,因为LR图像比较模糊,所以将参考图像进行下采用&上采样的模糊化,。
如何计算两个局部特征纹理相似性呢?对于两个特征patch,使用内积计算相似性。

[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

上式,计算了LR的 i-th patch和模糊化参考图像 的 j-th patch的相似性。注意,对参考patch进行了归一化。可以通过卷积或者互相关来加速以上计算过程:


[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

SjS_j即表示 s-th patch 相对 LR的相似性。相当于一个卷积核对LR进行卷积,计算结果即为Similarity map。因为在LR和Ref的特征空间中密集采样,所以每个LR位置都对应多个不同的卷积核的卷积结果,对应多个不同相似性的纹理特征。基于Similarity map,选择LR每个位置的相似性最高的Ref patch,构成交换特征图M (swapped feature map)


[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

即M在(x,y)位置对应的Ref patch是similairty score最大的Ref patch。由于每一个位置对应一个Ref patch,所以这些patch是重叠的,在重叠位置,取平均。另外,注意计算相似性是使用IRefI^{Ref\uparrow\downarrow},纹理迁移则是利用IRefI^{Ref}

在实现上,利用VGG-19提取特征,relu1_1, relu2_1,relu3_1用于多个尺度上纹理编码,但是为了加快匹配,只在relu3_1层进行匹配,将匹配结果对应到relu1_1和relu2_1。

3.2. Neural Texture Transfer(神经纹理迁移)

有了多尺度的swapped feature map,如何进行纹理迁移呢?采用residual blocks和跳跃连接方式,融合LR的特征和swap特征,并通过sub-pixel conv上采样。

[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)
[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

3.3. 损失函数

目标:1)保留LR的空间结构,2)提升SR的视觉质量,3)充分利用Ref的丰富纹理。提出四个loss function:

  • Reconstruction loss: SR与HR的L1距离

    [论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)
  • Perceptual loss: 采用VGG-19的relu5_1层

    [论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)
  • Adversarial loss:利用 WGAN-GP
    [论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)
  • Texture loss:纹理损失是为了让SR的纹理与Ref纹理更接近,另外,通过使用similarity map作为权重,抑制不相似纹理的惩罚,放大相似纹理的惩罚,这样可以自适应地进行纹理迁移
    [论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

其中,GrG_r计算 Gram matrix。

3.4. 数据集

本文基于CUFED构建了一个数据集,数据集包含不同相似度的LR-HR-Ref 图像对。共有4个相似度级别,不同的相似度是基于SIFT特征匹配计算的。测试数据集包含Sun80和Urban100。

4. 实验结果

定量来看,如果只考虑PSNR, SRNTT-L2也是优于SISR方法的。


[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

使用其他loss,虽然降低PSNR,但是获得更精细的纹理。下图明显看出,SRNTT相比SRNTT-L2细节更真实,更清晰。

[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)

通过与CrossNet对比,可以看出,当Ref与LR差别很大,CrossNet复原结果包含Ref不相关的纹理,而SRNTT可以有效抑制不相关纹理的影响。后面两张说明好的Ref可以显著提高SR效果。
[论文笔记] Image Super-Resolution by Neural Texture Transfer (CVPR2019)