原作者:Lahiri等人 笔记整理:ganyd 2020.9.15
如有错误或者不清楚之处,欢迎讨论,如需转载请注明出处
摘要
-
(1)当前基于深度学习的语义修复可以分两个方向
- 通过对抗训练,在masked pixels上训练离线深度回归网络并进行细化改进。
这种方法用的较多,推理时需要单个前馈过程来修复图像。 - 先训练一个生成模型,将潜在的先验分布映射到自然图像的流形,推理时搜索最匹配的先验来重构这个信号,完成修复。
这种方法有希望成功,但是还没探索出方法。该方法一直难以实现是因为它推理时迭代优化时间长和难以缩放到更高的分辨率。扩展:manifold(流形)是数学中的概念,是一个空间,观点认为我们所能观察到的数据是由低维流形映射到高维空间中的。https://www.cnblogs.com/icmzn/p/11082509.html。二维图像也可以认为是流形下的数据。
- 通过对抗训练,在masked pixels上训练离线深度回归网络并进行细化改进。
-
(2)文章的主要内容
- 采用第二种方式,解决提到的这两个问题。
- 学习到一个数据驱动参数网络,可以直接预测给定的masked image。
- 该网络将一个迭代范式转换为单前馈推理pipline,能够提速800倍。
- 使用结构先验来正则化该网络,正则化惩罚生成的修复区域和未遮掩区域的不匹配。
- 提出一种基于分组潜在先验的循环网络。
- 利用高分辨率GAN训练将修复网络放大到256*256。
1.介绍
(1)语义修复的概念
用合理的像素值填充图像种的holes或者masked regions
(2)传统方法和当前最先进的生成模型
- 传统方法是通过匹配和复制背景来修复图像缺失的背景和重复的纹理。缺点是缺失独特的和非重复的图案时会修复失败。
- 当前最先进的生成模型是利用深度生成模型比如变分自编码器(VAE)或者生成对抗网络(GAN)的进展。主要分两种方法:single-pass-inference(单过程推理)和iterative inference(迭代推理),single-pass-inference方法推理速度块,在高分辨率下性能好,更受关注。
(3)本文的做法
- 第一阶段:训练一个神经网络将噪声分布映射到自然图像的流形;
- 第二阶段:固定这个预训练的GAN网络,并且训练另一个深度神经网络来从masked image预测噪声先验。
- 推理时,给定masked image,经过单前馈过程输出一个噪声先验,然后使用预训练好的GAN生成模型来重构得到修复后的图像。
(4)文章的主要贡献
- 将迭代推理pipeline转换成单过程前馈框架,这一改进提速800倍;
- 用噪声先验来增强结构先验来改进GAN样本,改进修复重建,使得GAN训练更符合被修复区域的姿态和大小;
- 提出递归神经网络的分组噪声先验预测方法,由于单幅图像的修复有多模态完成的可能性,比如被遮掩的嘴唇可以被修复为微笑的,生气的,平常的等多种状态。在单幅独立的图像中修复只要符合我们认知都是可以,但是扩展到连续视频帧修复中,前后修复不同会带来明显的抖动。文章推荐采用基于递归神经网络的分组噪声先验预测方法来抑制这种不一致性。噪声先验分组能进行联合预测,保持视频中前后时间中预测的姿态和尺寸一致。
- 利用最近GAN网络新进展,提升修复分辨率到256x256。而当前迭代推理基准下,视觉上合理的能用的最大分辨率是64x64
2.相关工作
- 传统方法用masked image中缺失区域周围的背景或者重复纹理来修复,无法应用于复杂对象,因此用最近深层神经网络的分层特征学习能力来学习场景的高阶语义。
- 单过程推理模型:初始框架用的是常用的重构损失训练深度回归网络,随着GANs出现,常见流派的做法是用变种的损失训练一个回归网络来修复图像的masked regions。
- 省略接下里的部分...
3.背景
(1)GANs
genreator:
discriminator:
生成图像:
输入潜在的噪声向量: ,是从已知的分布采样得到
generator和discriminator的目标分别是让获得最小和最大值:
(2)迭代推理
给定masked或者damaged image:
对应的原始图像
预训练GAN模型
迭代找到最匹配的向量使得重建的图像语义最像
这个最优的在下面损失最小处取得:
其中是mask的二值图像,mask区域为1,其他为0
上式表达生成的图像和原图区域最匹配的时候,损失最小,此时为最优
收敛后,修复的图像:
其中
扩展:Hadamard product(哈达玛积)是矩阵对应元素的乘积得到的矩阵
4.采用的方法
(1)数据驱动的噪声先验学习
迭代推理存在迭代优化难和难以缩放到更高的分辨率问题,文章采用替代方案来找到最优的噪声先验,每次测试新图片只要经过离线的参数模型就能从masked image的中直接预测得到向量,求得参数矩阵的需要最小化如下损失。
(2)Spatially Adaptive Contextual Loss(空间自适应背景损失)
正则化惩罚生成的修复区域和未遮掩区域的不匹配情况,常用或者损失。
假设是定义的masked pixels集合,定义空间自适应权重W:
这里是让masked区域权重为0,超出masked区域的部分,按照距离最小值计算权重。那些距离hole附近的边界区域的不匹配会引起更大的失真,因此因该被给予更大的惩罚
定义:
(3)照片真实损失
预训练的discriminator能够将修复后的图像鉴别为真实图像的对数似然作为照片真实损失:
(4)梯度差损失
这里用非masked区域的x和y方向梯度与生成图的对应区域的x和y方向梯度表示:
(5)综上,联合损失
求得参数集最优值时,应该最小化如下联合损失:
网络框架
(6)具有结构先验的正则化
- 结构先验是将要修复对象的姿态和大小的任何表示
- 结构先验能够迫使网络输出尊重该结构,噪声先验预测网络在优化的时候也必须尊重该结构先验。
(7)估计masked image上的结构先验
masked image:j
个初始检测关键点表示成:,和表示水平和垂直的关键点坐标以目标框为基准归一化到0-1之间;每个有一个对应的开关向量,当关键点在masked区域之外,对应,其他时候。
将关键点编码成矩阵,然后学习一个参数函数映射:来预测空洞部分的关键点,这里用三个神经网络的全连接层实现。
训练
其中,表示第j张图片的第i个真实目标关键点;表示调整得到的关键点,N是训练数据总数。
(8)用于视频帧的分组噪声先验学习
Long Short Term Memory (LSTM) network
扩展:LSTM是一种特殊的RNN网络。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题,主要思想是通过门控状态控制传输状态,记住需要长时间记忆的,忘记不重要的信息。
文章使用LSTM网络,对连续时间的一组W帧图片,增加一个向量。LSTM网络有一个隐藏状态,表征当前时刻前t步的状态,这个状态不断更新,使得前后帧有了状态上的联系。
表示连续时间内一组W个损坏的帧图像,开始时,每帧通过共享的CNN模块来获得一个中间的表达。而作为t时刻LSTM模型的输入,得到LSTM模型的输出值通过一个前馈网络得到潜在的先验,然后用这个先验通过预训练好的Generator前馈过程将图像重构得到。
为了优化LSTM和共享CNN模块的参数,定义分组先验损失:
注意:优化LSTM和共享CNN参数的时候,Generator和Discriminator是固定的
5.提升分辨率
为了在大尺寸上进行图像修复,文章采用最近的PG_GAN和BigGAN。
6.实验
所有损失函数都是使用Adam优化器和随机梯度下降法优化的。
数据集:LS3D-W dataset
单图像修复
(1)数据集设置1
cropped SVHN, Standford Cars 和 CelebA.
(2)评估指标1
PSNR,而最近的研究工作指出,PSNR使用模型修复后的结果与真实结果距离度量,然而修复存在多态性(可能有多种形态修复都是可以的),这种评价指标有点片面。推荐使用最近研究工作提到的FID,FID距离越低越好。
扩展:PSNR是“Peak Signal to Noise Ratio”的缩写,即峰值信噪比。
假设原图I,修复图K,则,其中均方误差
(3)实验结果1
图像序列修复
(1)数据集设置2
FaceForensics
(2)对比方法
单图像修复;CombCN;3DGated;LGTSM
(3)评价指标
FID
(4) 实验结果
7.总结
文章先讨论了迭代推理的过程,存在迭代优化难和推理慢的问题,提出数据驱动噪声先验学习(把迭代推理过程简化成单过程的前馈网络),将速度提升800倍;
将模型扩展到视频图像修复,注重前后帧修复的一致性,减小抖动问题,提出结构先验(任何能表示masked区域的位置和大小信息的都可以作为结构先验)和LSTM驱动的分组学习(LSTM增加了t步之内的状态,使计算噪声先验的时候考虑到前后之间的状态关系);
文章还一个创新点就是,不采用常规的编码器-解码器结构进行图像修复,而是采用由masked image搜索匹配到最佳的潜在先验再用GAN生成一个修复图像。这种方法缺少人尝试。
缺点是不适用于修复户外场景。