论文阅读及代码运行-PEPSI : Fast Image Inpainting with Parallel Decoding Network

论文:PEPSI
论文:PEPSI++
code:https://github.com/Forty-lock/PEPSI

以上两篇论文出自同一人,作者在2019年投了一篇PEPSI到CVPR(CCF A类),2020年投了一篇PEPSI++到TNNLS(CCF B类)。其中不同之处在于PEPSI++对扩张卷积进行了改进,提出了Deit-PEPSI-unit模块,该模块可以有效约减扩张卷积的参数量和计算量,同时不明显下降评估指标。此外,PEPSI++做了更多的对比实验和消融实验,期刊内容量更加充实。

1、摘要

最近,采用具有上下文关注模块(CAM)的由粗到细网络的基于生成对抗网络(GAN)的方法在图像修复中显示出突出的结果。然而,由于该方法的特征编码分为两阶段,需要大量的计算资源。为了解决这一问题,本文提出了一种新的网络结构PEPSI:具有并行解码结构的快速图像修复。PEPSI采用由一个共享编码网络和一个具有粗路径和修复路径的并行解码网络组成的结构,可以减少卷积操作的数量。粗路径产生一个初步的修复结果,利用该结果训练编码网络来预测上下文关注的特征。同时,该修复路径利用CAM重建的精细特征,创造了更高质量的修复结果。与传统的由粗到细的网络相比,PEPSI不仅减少了近一半的卷积运算,而且在测试时间和质量分数方面也优于其他模型。

2、引言

网络架构
如图1:PEPSI网络架构图

本文提出了一种新的并行网络PEPSI:语义修复的并行扩展解码器路径,采用单步的编解码器网络解决了这一问题。如图1所示,PEPSI通过单个编码网络提取特征,并通过单个解码网络生成高质量的修复结果。为了使一个单一的共享编码网络同时处理两个不同的任务,即粗略完成的结果和高质量的结果的特征生成,我们提出了一种使用具有粗路径和修复路径的并行解码网络的联合学习方法。粗路径产生一个粗略完成的结果,利用该结果训练编码网络来预测CBM的特征。同时,利用CAM重建的精细特征,使修复路径产生了更高质量的修复结果。我们还对CAM进行了改进,用欧式距离代替余弦相似度来更好地学习块之间的关系。我们进行了大量的实验,证明我们的方法在各种数据集上都优于传统方法,如Celeb-a[11,18]、place2[30]和Imagenet[14]。我们同时使用随机正方形掩码和自由形状的掩码来模仿人类的笔刷。实验结果表明,与传统方法相比,该方法不仅具有更好的性能,而且大大缩短了计算时间。
综上所述,本文提出:

  • 提出了一种新的生成网络,通过将粗到细网络的级联网络统一起来,并对CAM进行修改,在提高绘制性能的同时,减少了计算资源。
  • 一种新颖的图像区域分离识别器,更适合于实际应用。

3、Preliminaries

3.1、Coarse-to-fine network

在这里插入图片描述
图2:CAM

论文:

1. DeepFill v2: Free-form image inpainting with gated convolution
2. DeepFill v1: Generative image inpainting with contextual attention
备注:deepfill v1提出了上下文注意力机制,具体实现可以参考论文以及代码,目前pytorch以及tensorflow代码已经开源。

Yu等人提出了粗细网络,将修复任务分成两阶段来完成,分别已经在上述两篇论文得到验证。首先,使用粗网络产生一个粗略的预测结果,然后,使用细网络从粗略填充的结果中提取特征,以此来增强结果。为了产生一个高质量的结果,网络需要知道背景和缺失区域之间的关系。细网络使用CAM来学习区域间的关系,并计算区域之间的余弦相似度。如图2所示,CAM首先将特征图分成目标前景和周围背景,并提取3x3的块。CAM利用公式2作为权重,通过对背景块的加权和来重建前景区域的特征,从而了解它们之间的关系。
在这里插入图片描述

4、Proposed Method

作者证明完整的粗细网络比没有粗网络的结果好。这也意味着,如果缺失区域的粗特征编码不够好,CAM会使用不相关的特征块产生缺失的特征,从而产生污染结果,如图3中d图所示。
在这里插入图片描述

4.1、Architecture of PEPSI

编码网络,从含有缺失区域的输入图像中提取特征,并在不产生粗糙结果的情况下补全确实的特征。首先,在第一层卷积层,使用5x5的卷积核来充分利用输入图像中的潜在特征。然后,是一系列的3x3卷积,通道数在不断增加。最后,使用4层扩张卷积,rate=2,通道数为356。
在这里插入图片描述
解码网络,由并行的粗路径和修复路径构成。通过两个路径分享权重,来规范化修复路径。两条路径采用了相同的编码网络的特征,于是,强迫编码网络生成合理的内容。注意的是,在测试时,只采用了修复路径,来减少计算资源。粗路径使用L1损失来训练,而修复路径使用L1损失和GAN损失。
在这里插入图片描述
在实现时,对所有的卷积层使用了细小的padding,此外,除了最后一层,其它层采用激活函数ELU,并对图像进行归一化到[-1,1]。

4.2、 Modified CAM

CAM通过使用余弦相似性来测量相似分数。但是,对式(2)中的特征块向量进行归一化会使语义特征表示失真。欧式距离不仅考虑了两个特征块向量之间的夹角,而且考虑了特征块的大小,因此更适合于重建。由于距离相似度得分难以应用于输出范围为[0,∞]的softmax,我们定义截断距离相似度得分de。
在这里插入图片描述
在(4)中,截断距离相似度评分在[1,1]内取值有限。它的作用类似于一个阈值,该阈值将距离得分小于平均值进行排序,因为tanh函数在0处变化很快。这意味着截断距离相似度评分有助于将背景块分成与前景块相关和不相关的两组。我们用小例子来比较余弦相似度和截距相似度。通过对已有的图像块进行加权和重构,利用余弦相似度和截断距离相似度进行加权。从图4可以看出,利用截断距离相似度进行重构,比余弦相似度能够收集到更多的相似块。此外,我们评估了PEPSI与传统和修改CAM的结果,以确定修改后的CAM的改进。如表4所示,与传统CAM相比,改进后的CAM性能有所提高,这意味着改进后的CAM更适合表达背景与孔区之间的关系。

4.3、RED

由于RED试图对每个具有不同接受域的特征块分别进行分类,因此它假设不同的图像区域分别是真实的或虚假的。与局部鉴别器相比,RED可以处理任何大小的图像中可能出现的各种空穴区域。

参考文献:RENet,手势姿态估计

备注:个人认为RED参考了SN-PatchGAN的结构,最大不同在于最后两层的实现上。SN-PatchGAN最后两层分别采用256的通道数以及flatten结构,而RED最后两层分别采用了512通道数以及区域整合。RED最后一层是针对像素级处理,首先采用xavier_initializer初始化权重,其维度为[hw,1,c,1],该维度和常规卷积的权重不同;然后针对每个像素使用谱规范化,遍历hw次;随后改变权重的维度,reshape、transopse;最后sum计算。
在这里插入图片描述
在这里插入图片描述

4.4、Loss function

生成对抗损失和铰链损失。P_x为修复结果,P_y为输入图像。
在这里插入图片描述
由于图像修复的目标不仅是生成自然的补孔,而且还要精确地恢复原始图像缺失的部分,因此我们使用L1个范数对(6)增加了一个强约束,如下所示:
N:batch size
X_n和Y_n分别为小批量修复路径生成的图像及其对应的原始输入图像的第n对图像。
在这里插入图片描述
粗路径损失的作用是对CAM进行适当的补全。
在这里插入图片描述
总的损失函数:
k: 迭代数
k_max: 最大迭代数
在这里插入图片描述

5、Experiments

在这里插入图片描述

5、代码复现

作者在github上已经开源,核心代码都没有任何问题,但存在一些细节问题,需要熟悉代码后才能调试运行。个人修改的部分包括以下几点:

  1. 采用的mask只有不规则缺失mask
  2. 添加tensorboard相关代码,以便可视化
  3. 针对不同版本的tensorflow,有些api进行了调整

5.1 环境:

GPU 2080ti(大概占7G),tensorflow-gpu 1.2(由于是低版本,有些api进行了调整,或者添加了函数),迭代次数为554000,作者设定的迭代次数为100万

5.2 指标结果:

目前最好结果为PSNR_f = 31.2511 ssim = 0.9061,由于服务器突然暂停了,加上运行较慢,没有运行完全。

5.3 可视化训练结果:

Mask_imgCoarseRefineGtComplete_img

iter 5595
在这里插入图片描述
在这里插入图片描述
iter 15750
在这里插入图片描述
在这里插入图片描述

iter 21524在这里插入图片描述

iter 28406在这里插入图片描述
在这里插入图片描述

iter 34516在这里插入图片描述

iter 37214在这里插入图片描述

iter 63588在这里插入图片描述

iter 121982在这里插入图片描述
iter 554000
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

由于作者水平有限,文中若有不正确的地方,欢迎大家指出,若有任何问题,请在下方讨论。

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值