[基于GAN的语义修复] Prior Guided GAN Based Semantic Inpainting 笔记 [CVPR 2020]

原作者:Lahiri等人     笔记整理:ganyd 2020.9.15
如有错误或者不清楚之处,欢迎讨论,如需转载请注明出处

摘要

  • (1)当前基于深度学习的语义修复可以分两个方向

    1. 通过对抗训练,在masked pixels上训练离线深度回归网络并进行细化改进。
      这种方法用的较多,推理时需要单个前馈过程来修复图像。
    2. 先训练一个生成模型,将潜在的先验分布映射到自然图像的流形,推理时搜索最匹配的先验来重构这个信号,完成修复。
      这种方法有希望成功,但是还没探索出方法。该方法一直难以实现是因为它推理时迭代优化时间长难以缩放到更高的分辨率

      扩展:manifold(流形)是数学中的概念,是一个空间,观点认为我们所能观察到的数据是由低维流形映射到高维空间中的。https://www.cnblogs.com/icmzn/p/11082509.html。二维图像也可以认为是流形下的数据。

  • (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)本文的做法

  1. 第一阶段:训练一个神经网络将噪声分布映射到自然图像的流形;
  2. 第二阶段:固定这个预训练的GAN网络,并且训练另一个深度神经网络来从masked image预测噪声先验。
  3. 推理时,给定masked image,经过单前馈过程输出一个噪声先验,然后使用预训练好的GAN生成模型来重构得到修复后的图像。

(4)文章的主要贡献

  1. 将迭代推理pipeline转换成单过程前馈框架,这一改进提速800倍;
  2. 用噪声先验来增强结构先验来改进GAN样本,改进修复重建,使得GAN训练更符合被修复区域的姿态和大小;
  3. 提出递归神经网络的分组噪声先验预测方法,由于单幅图像的修复有多模态完成的可能性,比如被遮掩的嘴唇可以被修复为微笑的,生气的,平常的等多种状态。在单幅独立的图像中修复只要符合我们认知都是可以,但是扩展到连续视频帧修复中,前后修复不同会带来明显的抖动。文章推荐采用基于递归神经网络的分组噪声先验预测方法来抑制这种不一致性。噪声先验分组能进行联合预测,保持视频中前后时间中预测的姿态和尺寸一致。
  4. 利用最近GAN网络新进展,提升修复分辨率到256x256。而当前迭代推理基准下,视觉上合理的能用的最大分辨率是64x64

2.相关工作

  • 传统方法用masked image中缺失区域周围的背景或者重复纹理来修复,无法应用于复杂对象,因此用最近深层神经网络的分层特征学习能力来学习场景的高阶语义。
  • 单过程推理模型:初始框架用的是常用的l_2重构损失训练深度回归网络,随着GANs出现,常见流派的做法是用变种的l_1$$l_2损失训练一个回归网络来修复图像的masked regions。
  • 省略接下里的部分...

3.背景

(1)GANs

genreator: G_{\theta_G}
discriminator: D_{\theta_D}
生成图像: x\in R^{H\cdot W\cdot3}
输入潜在的噪声向量: z\in R^dz是从已知的分布P_z(z)采样得到
generator和discriminator的目标分别是让V(D_{\theta_D},G_{\theta_G})获得最小和最大值:
\min_{G_{\theta_G}}\max_{D_{\theta_G}}V(D_{\theta_D},G_{\theta_G})=E_{x\sim P_{data}}[\log{D_{\theta_D}(x)}]+E_{z\sim Z_{data}}[1-D_{\theta_D}(G_{\theta_G}(z))]

(2)迭代推理

给定masked或者damaged image:I_d
对应的原始图像I
预训练GAN模型
迭代找到最匹配的z向量使得重建的图像语义最像
这个最优的z在下面损失最小处取得:
\hat z=arg\min_zL(\overline M\bigodot G_{\theta_G}(z),\overline M\bigodot I)
其中M是mask的二值图像,mask区域为1,其他为0
上式表达生成的图像和原图区域最匹配的时候,损失最小,此时\hat z为最优z
收敛后,修复的图像\hat I:
\hat I=I_d+M\bigodot G_{\theta_G}(\hat z)
其中I_d=\overline M\bigodot I

扩展:Hadamard product(哈达玛积)是矩阵对应元素的乘积得到的矩阵

4.采用的方法I_d

(1)数据驱动的噪声先验学习

迭代推理存在迭代优化难和难以缩放到更高的分辨率问题,文章采用替代方案来找到最优的噪声先验z,每次测试新图片只要经过离线的参数模型P_{\theta_z}就能从masked image的I_d中直接预测得到z向量,求得参数矩阵\theta_z的需要最小化如下损失。

(2)Spatially Adaptive Contextual Loss(空间自适应背景损失)

正则化惩罚生成的修复区域G_{\theta_G}(P_{\theta_z}(I_d))和未遮掩区域I_d的不匹配情况,常用l_1或者l_2损失。

假设S_M是定义的masked pixels集合S_M={(x,y)|M(x,y)=1},定义空间自适应权重W:
当l=\min_{(x,y)\notin S_M}|i-x|+|j-y|时,W(i,j)=0.99^l
当\forall(i,j)\in S_M时,W(i,j)=0

这里是让masked区域权重为0,超出masked区域的部分,按照距离最小值计算权重。那些距离hole附近的边界区域的不匹配会引起更大的失真,因此因该被给予更大的惩罚

定义L_C:
L_C=W\bigodot |I-G_{\theta_G}(P_{\theta_z}(I_d))|_1

(3)照片真实损失

预训练的discriminator能够将修复后的图像鉴别为真实图像的对数似然作为照片真实损失:
L_r=\log(1-D_{\theta_D}(G_{\theta_G}(P_{\theta_z}(I_d))))

(4)梯度差损失

这里用非masked区域的x和y方向梯度与生成图的对应区域的x和y方向梯度表示:
L_g=\overline M\bigodot|\nabla_xI_d-\nabla_xG_{\theta_G}(P_{\theta_z}(I_d))|+|\overline M\bigodot|\nabla_yI_d-\nabla_yG_{\theta_G}(P_{\theta_z}(I_d))|

(5)综上,联合损失

求得参数集\theta_z最优值时,应该最小化如下联合损失:
L_z^{com}=L_c+\lambda_1\cdot L_r+\lambda_2\cdot L_g

网络框架

Prior Guided GAN Based Semantic Inpainting网络框架.png

(6)具有结构先验的正则化

  • 结构先验是将要修复对象的姿态和大小的任何表示
  • 结构先验能够迫使网络输出尊重该结构,噪声先验预测网络P_{\theta_z}在优化\theta_z的时候也必须尊重该结构先验。

(7)估计masked image上的结构先验

masked image:j
N_k个初始检测关键点表示成:K_i^j:=[x_i^j,y_i^j],i\in\{1,2,...,N_k\},x_i^jy_i^j表示水平和垂直的关键点坐标以目标框为基准归一化到0-1之间;每个k_i^j有一个对应的开关向量d_i^j,当关键点在masked区域之外,对应d_i^j=x_i^j=y_i^j=0,其他时候d_i^j=1
将关键点编码成矩阵K\in[0,1]^{N_K\times2},然后学习一个参数函数映射:f_{\theta_f}:R^{N_k\times2}\rightarrow R^{N_k\times2}来预测空洞部分的关键点,这里用三个神经网络的全连接层实现。
训练f_{\theta_f}(\cdot)
\theta_f=\min_{\theta_f}\frac{1}{N*N_K}\sum_{j=1}^N\sum_{i=1}^{N_K}||t_i^j-\hat k_i^j||_2^2
其中,t_i^j表示第j张图片的第i个真实目标关键点;\hat k_i^j表示调整得到的关键点,N是训练数据总数。

(8)用于视频帧的分组噪声先验学习

Long Short Term Memory (LSTM) network

扩展:LSTM是一种特殊的RNN网络。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题,主要思想是通过门控状态控制传输状态,记住需要长时间记忆的,忘记不重要的信息。

文章使用LSTM网络,对连续时间的一组W帧图片,增加一个z向量。LSTM网络有一个隐藏状态h^t,表征当前时刻前t步的状态,这个状态不断更新,使得前后帧有了状态上的联系。

联合LSTM学习分组噪声先验.png

V=\{I_d^1,I_d^2,...,I_d^W\}表示连续时间内一组W个损坏的帧图像,开始时,每帧I_d^t通过共享的CNN模块来获得一个中间的表达z_d^t。而z_d^t作为t时刻LSTM模型的输入,得到LSTM模型的输出值通过一个前馈网络得到潜在的先验z_p^t,然后用这个先验z_p^t通过预训练好的Generator前馈过程将图像I_p^t重构得到G_{\theta_G}

为了优化LSTM和共享CNN模块的参数,定义分组先验损失:
L_z^{gr}=\frac{1}{W}\sum_{i=1}^WL_z^{com}(I_d^i,I_P^i)

注意:优化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,则PSNR=10\cdot\log_{10}(\frac{MAX_I^2}{MSE}),其中均方误差MSE=\frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i,j)-K(i,j)]^2

(3)实验结果1

不同方法在几个数据集上的PSNR与FID指标对比.png

图像序列修复

(1)数据集设置2

FaceForensics

(2)对比方法

单图像修复;CombCN;3DGated;LGTSM

(3)评价指标

FID

(4) 实验结果

视频图像序列对比结果.png

7.总结

文章先讨论了迭代推理的过程,存在迭代优化难和推理慢的问题,提出数据驱动噪声先验学习(把迭代推理过程简化成单过程的前馈网络),将速度提升800倍;
将模型扩展到视频图像修复,注重前后帧修复的一致性,减小抖动问题,提出结构先验(任何能表示masked区域的位置和大小信息的都可以作为结构先验)和LSTM驱动的分组学习(LSTM增加了t步之内的状态,使计算噪声先验的时候考虑到前后之间的状态关系);
文章还一个创新点就是,不采用常规的编码器-解码器结构进行图像修复,而是采用由masked image搜索匹配到最佳的潜在先验再用GAN生成一个修复图像。这种方法缺少人尝试。
缺点是不适用于修复户外场景。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342