(CVPR2020)Bringing Old Photos Back to Life 论文笔记

website:http://raywzy.com/Old_Photo/

GitHub:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life

一、简介

目的:老照片的退化太复杂,合成数据跟真实老照片间的domain gap使得只在合成数据上训练的网络很难去很好的泛化,为此,希望通过域转换对齐分布。

二、主要内容

1、定义:设真实老照片域为R,合成数据域为X,合成数据对应的真值数据域为Y。

2、主要框架:

首先,通过VAE将三个域的图像分别映射至对应的隐空间:R->Z_R,X->Z_X,Y->Z_y。这里,为了对齐分布,尽可能的对齐合成数据和真实老照片数据的隐空间:Z_R~Z_X。然后,通过合成数据对{x, y},学习退化图像的隐空间到真值图像的隐空间的转换,从而实现老照片复原:

2.1、在VAE的隐空间进行域对齐:该方法的一个关键就是把真实老照片域R和合成数据域X编码到同一个隐空间。为此,作者采用VAE来实现,使用VAE的关键一点就是,VAE包含隐空间的KL正则项,该项可以帮助对齐老照片的隐空间和合成数据的隐空间,从而减小域间隔。这里,该框架总共有两个VAE,真实老照片数据R和合成数据X共享同一个VAE_1,真值图像用第二个VAE_2进行编解码。VAE假设隐编码服从高斯先验,这样,新的图像可以从高斯分布采样进行重建。对于,真实老照片数据的优化目标是:

其中,第一项是KL散度,惩罚隐编码服从高斯先验;第二项是重建项,隐式约束隐编码捕获图像的主要信息;第三项是LSGAN loss约束VAE生成视觉质量高的图像。训练时,交替输入合成数据和真实老照片数据,优化VAE1,为了进一步减小域间隔,额外用对抗损失进一步判别老照片的隐编码和合成数据的隐编码:

2.2、通过隐编码映射进行复原:

由于老照片和合成数据已经在隐空间进行了很好的域对齐,因此,通过成对数据{x, y}学到的从隐编码Z_X到隐编码Z_Y的映射,也能够很好的泛化到老照片上。在这一阶段,那就是固定两个VAE,然后学两个隐空间的映射网络T,损失函数为:

第一项惩罚成对数据{x, y}的隐编码一致:

第二项鼓励最终的转换输出图像的视觉质量高。第三项是特征匹配损失,用来稳定GAN的训练,具体包括判别器的特征损失和VGG的特征损失:

2.3、多退化重建:

为了复原划痕这种大的结构性退化,需要利用图像的大范围全局特征,因此,在编码映射网络T中,加入非局部模块(non-local attention),该非局部模块同时利用了表示划痕的mask。该模块结构如下:

非局部操作可公式化为:

其中:

这里的非局部分支利用了表示划痕的mask,该mask是通过一个预训练好的mask预测网络得到的。这个mask预测网络采用Unet结构,训练时利用了采样和focal loss来解决样本不平衡问题。

非局部分支和局部分支的融合如下:

三、实验

1、数据:合成数据采用高斯噪声,高斯模糊,JPEG压缩以及box 模糊来模拟。按照随机的顺序组合这些退化,并以30%的概率丢弃退化。

2、网络结构

3、结果