结构感知图像修复:ICCV2019论文解析

StructureFlow: Image Inpainting via Structure-aware Appearance Flow

论文链接:

http://openaccess.thecvf.com/content_ICCV_2019/papers/Ren_StructureFlow_Image_Inpainting_via_Structure-Aware_Appearance_Flow_ICCV_2019_paper.pdf

Source code is available at: https://github.com/RenYurui/ StructureFlow.

摘要

近年来,利用深层神经网络的图像修复技术已经显示出显著的改进。然而,他们中的大多数可能无法重建合理的结构或恢复细粒度的纹理。为了解决这一问题,本文提出了一个两阶段模型,将修复任务分为结构重建和纹理生成两部分。在第一阶段,使用边缘保留平滑图像来训练结构重建器,以完成输入的缺失结构。在第二阶段中,基于重建的结构,设计了一个使用外观流的纹理生成器来产生图像细节。在多个公开数据集上的实验表明,该网络具有优越的性能。

1 . Introduction

图像修复是指为损坏的输入图像的缺失区域生成替代结构和纹理,并获得视觉逼真的结果。它有着广泛的应用。例如,用户可以使用修复技术移除不需要的对象或编辑图像内容。图像修复任务的一个主要挑战是生成正确的结构和真实的纹理。一些早期的基于补丁的工作试图用现有区域的图像补丁来填补缺失的孔[1,8]。这些方法通过最近邻搜索和复制相关的面片,可以合成逼真的纹理用于背景修补任务。然而,由于这些方法无法捕获高层语义,因此很难为具有非重复模式(如人脸)的图像生成真实的结构。随着深度神经网络技术的出现,一些新的工作将修复任务建模为一个条件生成问题,它学习输入破坏图像和地面真实图像之间的映射函数。这些方法能够学习有意义的语义,因此可以为缺失的孔洞生成连贯的结构。然而,由于这些方法不能有效地分离结构和纹理信息,因此它们常常会受到过度平滑边界或纹理伪影的影响。

为了解决这个问题,本文提出了一些两级网络[33,26,21]。这些方法在第一阶段恢复缺失的结构,并在第二阶段利用重建的信息生成最终结果。文[33]中提出的方法使用地面真实图像作为结构恢复的标记。然而,地面真实感图像包含高频纹理。这些无关的细节可能会误导结构重建。Spg网[26]将缺失区域的语义分割标签作为结构信息进行预测。然而,具有相似语义标签的区域可能具有不同的纹理(例如,同一建筑的窗户和墙壁),这给最终恢复带来困难。EdgeConnect[21]使用边缘图像作为结构引导,即使对于一些高度结构化的场景,也能获得良好的效果。然而,边缘图像的分布与目标图像的分布有很大的不同。换言之,边缘提取器丢弃了太多有用的信息,如图像颜色,使得难以生成生动的纹理。

本文提出了一种新的两级网络结构的图像修复流程。本文的网络由一个结构重建器和一个纹理生成器组成。为了恢复有意义的结构,本文使用保留边缘的平滑图像来表示图像场景的全局结构。边缘保持平滑方法[30,31]旨在去除高频纹理,同时保留锐边和低频结构。利用这些图像作为结构重建的指导,网络能够在不受无关纹理信息干扰的情况下,集中精力恢复全局结构。在重建缺失结构后,利用纹理产生器合成高频细节。由于具有相似结构的图像邻域是高度相关的,因此可以使用未损坏的区域为丢失的区域生成纹理。然而,卷积神经网络很难建立长期相关性模型[33]。

为了在不同区域之间建立清晰的关系,本文建议使用外观流[35]从具有相似结构的区域中采样特征,如图1所示。由于表面流很容易卡在修补任务[33]中不好的局部极小值内,在这项工作中,本文做了两个修改以确保训练过程的收敛性。首先,采用高斯采样代替双线性采样来扩展采样操作的接收范围。其次,本文引入了一个新的损失函数,称为采样正确性损失,来确定是否对正确的区域进行了采样。通过对几种最新方法的主客观对比实验,证明了该方法能够取得很好的效果。此外,本文进行融合研究,以验证本文的假设和修正。

本文的主要贡献可以概括为:

•本文提出一种结构重建器,以生成边缘保留的平滑图像作为全局结构信息。              、

•本文引入外观设计,以建立长期修正缺失区域和现有区域之间的纹理生成。

•为了简化外观流量的优化,本文建议使用高斯采样代替双线性采样,并引入新的采样正确性损失。

•在多个公共数据集上的实验表明,本文的方法能够获得具有竞争力的结果。

2 . Related Work

2 .1. Image Inpainting

现有的图像修复工作大致可以分为两类:一类是基于扩散或面片的方法,另一类是基于深层神经网络的方法。基于扩散的方法[2,6]通过将邻域外观传播到目标孔洞来合成纹理。然而,这些方法只能处理背景修补任务中的小孔。它们可能无法生成有意义的结构。与仅使用缺失孔洞邻域像素的基于扩散的方法不同,基于补丁的方法可以利用远程信息来恢复缺失区域。基于补丁的方法[1,8,3]通过从源图像的未损坏区域搜索和复制相似的图像补丁来填充目标区域。这些方法可以为较大的漏孔生成真实感纹理。为了找到合适的图像块,提出了双向相似度[24]的概念,以在计算块相似度时获取更多的视觉信息,并引入较少的视觉伪影。为了降低计算量,PatchMatch[1]设计了一种基于图像自然相干度作为先验信息的快速近邻搜索算法。然而,这些基于补丁的方法假设非空洞区域与缺失区域具有相似的语义内容,这在人脸图像修复等任务中可能不成立。因此,对于一些具有重复结构的图像,它们可以很好地工作,但是对于具有独特结构的图像,它们不能产生合理的结果。近年来,人们提出了许多基于深度学习的方法来将修复任务建模为条件生成问题。这些方法的一个显著优点是,它们能够从损坏的图像中提取有意义的语义,并为图像生成新的内容。上下文编码器[22]是早期的尝试之一。它使用编码器-解码器架构首先提取特征,然后重建输出。然而,这个网络很难保持全局一致性,并且经常使用可视化工件生成结果。Iizuka等人[12] 通过使用局部和全局判别器来解决这个问题,这些判别器分别负责为缺失的图像生成真实的备选内容并保持竞争图像的一致性。Yu等人[33]发现卷积神经网络在建立长期相关性方面是无效的。为了解决这个问题,他们提出了从边远地区借用特征的语境注意。Liu等人[16] 相信输入的屏蔽孔中的替代像素会给最终结果带来伪影。因此,他们提出部分卷积以强制网络仅使用有效像素(未损坏的像素)。门控卷积[32]进一步推广了这一思想,将特征选择机制扩展到所有层上的每个位置都是可学习的。文[21]中提出的EdgeConnect具有与本文相似的动机:利用额外的先验信息生成合理的结构。EdgeConnect首先恢复边缘地图,然后在详细信息中填充缺失的区域。但是,由于边缘映射的表示能力有限,这种方法可能会在对象的边界上产生错误的细节。

2 .2. Optical Flow and Appearance Flow

光流用于描述连续视频帧之间对象、表面和边缘的运动。它在视频帧合成[37,29]、动作识别[25,28]等领域有着广泛的应用,光流估计是计算机视觉中的一项重要任务。许多方法[11,27]已经被提出来精确估计连续帧之间的光流。最近,一些方法[5,13]通过训练深层神经网络来解决这个问题。然而,这些技术需要足够的地面真实光场,这是非常难以获得的。因此,创建了一些合成光流数据集[5]用于训练。

其他一些方法[18,19]通过以无监督的方式训练网络来解决这个问题。然而,许多现有的无监督光流估计方法难以捕捉大运动。一些文献[18,23]设法使用多尺度方法来改进结果。本文认为这是由于双线性采样。在本文中,本文使用高斯采样作为改进。[35]提出的外观流是利用基于外观流的方法从源场景(对象)生成目标场景(对象)。它计算源和目标之间的相关性,以预测二维坐标矢量(即外观流场)。这个想法可以用于图像修复任务。要为缺失的孔生成真实的替代内容,可以合理地将像素(特征)从源区域“流动”到缺失的区域。在本文中,本文改进了[35]中的外观流,使其适合于图像修复任务。

3 . Our Approach

结构流修复网络的框架如图2所示。本文的模型由两部分组成:结构重构器Gs和纹理生成器Gt。

3 .1. Structure Reconstructor

图像修复任务的一个主要挑战是为缺失区域生成有意义的结构。因此,本文首先设计了一个结构重构器Gs来恢复输入图像的全局结构。边缘保持平滑方法[30,31]旨在去除高频纹理,同时保留锐利的边缘和低频结构。它们的结果可以很好地代表全球结构。

3 .2. Texture Generator

卷积神经网络不能有效地捕获长期依赖性[33]。为了在不同区域之间建立清晰的关系,本文将外观设计引入Gt。如图2所示,外观流用于扭曲输入的提取特征。

建议的采样正确性损失用于限制外观流场。它确定当前采样区域是否是“好”选择。本文用预先训练的VGG19来计算这个损失。

4 . Experiments

4 .1. Implementation Details

基本上,本文的发电机Gs和Gt是采用自动编码器结构设计的。添加了几个剩余块[9]以进一步处理特征。对于外观流,本文将扭曲特征与卷积块获得的特征连接起来。本文的鉴别器的结构类似于Bicycleegan的结构[36]。本文使用两个不同尺度的PatchGANs[14]来预测不同尺度重叠图像的真假。为了解决生成性对抗网络的不稳定性训练这一臭名昭著的问题,在本文的网络中使用了谱归一化[20]。

本文在三个公共数据集上训练模型,包括place2[34]、Celeba[17]和Paris StreetView[4]。最具挑战性的数据集place2包含超过1000万张图像,其中包含400多个独特的场景类别。Celeba和Paris StreetView分别包含高度结构化的人脸和建筑图像。本文使用[16]提供的不规则掩模数据集。掩模图像根据其相对于整个图像的孔大小(例如0-20%等)进行分类。本文采用保留边缘的平滑方法RTV[31]来获得结构重构器Gt的训练标签。在RTV平滑方法中,参数σ用于控制平滑窗口的空间尺度,从而控制纹理元素的最大大小。在第4.3节中,本文探讨了σ对最终结果的影响。当本文设定σ≈3时,本文根据经验得出了最佳结果。

4 .2. Comparisons

本文主观和客观地将本文的方法与几种最新的方法进行比较,这些方法包括语境注意(CA)[33]、部分卷积(PConv)[16]和EdgeConnect[21]。

客观比较

图像修复任务缺乏专门的定量评估指标。为了尽可能准确地比较结果,本文采用了两种度量:失真度量和感知质量度量。结构相似性指数(SSIM)和峰值信噪比(PSNR)假设理想恢复结果与目标图像完全相同。它们用于测量结果的失真。Frechet初始距离(FID)[10]计算两个分布之间的Wasserstein-2距离。

因此,它可以指示结果的感知质量。在计算FID分数时,本文使用预先训练的Inception-V3模型来提取真实图像和修复图像的特征。最终评估结果见表1。本文计算了测试集中10k个随机图像的统计数据。可以看出,与其他模型相比,本文的模型取得了竞争性的结果。              主观比较

本文对亚马逊机械土耳其人(MTurk)进行了人的主观研究。本文要求志愿者从真实和生成的图像对中选择更真实的图像。对于每个数据集,本文随机选择600个图像,并将其随机遮罩比从0%—60%分配给评估。每个图片由不同的志愿者进行5次比较。评价结果见表2。在人脸数据集Celeba和街景数据集Paris等高度结构化场景中,本文的模型取得了比竞争对手更好的效果。这表明本文的模型可以为缺失区域生成有意义的结构。本文在数据集位置2上也取得了竞争性的结果。

图3显示了不同模型的一些示例结果。可以看出,CA的结果受到伪影的影响,这意味着这种方法可能难以平衡纹理和结构的生成。EdgeConnect能够恢复正确的全局结构。但是,它可能在对象的边缘生成错误的细节。本文的方法可以生成有意义的结构和生动的纹理。本文还提供了EdgeConnect的重构结构和图4中的模型。本文发现边缘映射在恢复全局结构时丢失了很多有用的信息,如图像颜色。因此,EdgeConnect可能会为某些缺失区域提供不正确的详细信息。同时,不同物体的边缘可能在边缘地图中混合在一起,这使得很难生成纹理。相比之下,本文保留边缘的平滑图像能够很好地表示图像的结构。因此,本文的模型可以很好的平衡结构重建和纹理生成。即使对于一些具有大孔比的高结构图像,也可以获得真实感的结果。

4 .3. Ablation Studies

在本节中,本文将从结构和外观两个角度分析结构流的每个组成部分对最终性能的贡献。在本文中,本文假设结构信息对于图像修复任务是重要的。因此,本文首先重建结构并将其作为先验信息来生成最终结果。为了验证这一假设,本文移除结构重建器,训练一个只使用纹理生成器的修补模型。损坏的图像及其遮罩直接输入到模型中。请注意,为了公平比较,本文还保留了网络中的外观流量。结果见表3。

可见,本文的结构重构器可以为模型带来稳定的性能增益。然后本文将注意力转向边缘保持平滑的图像。本文相信保留边缘的平滑图像能够代表结构,因为平滑操作会去除高频纹理。为了验证这一点,本文训练了一个模型,使用地面真实图像Igt作为结构重建的标签。结果见表3。与StructureFlow相比,使用包含高频纹理的图像作为结构会导致性能下降。

然而,很难准确区分图像的纹理和结构。手术的顺利程度如何?本文发现在结构重建器和纹理生成器之间存在一种折衷。如果很少的纹理被删除,结构重建将更加困难,因为它需要恢复更多的信息。但是,纹理生成会更容易。因此,本文需要平衡这两项任务的难度,以获得更好的结果。利用RTV[31]光滑方法中的σ来控制Sgt中纹理元素的最大尺寸,得到了更大σ值的光滑结果。本文使用从σ=0,1,3,6,9生成的平滑图像来训练结构流。数据集Paris上的评估结果如表4所示。可以看出,当σ=3时,得到的结果最好。太小和太大的σ值都会导致模型性能下降。一个例子可以在图5中找到。当σ=0时,结构重构器受到无关纹理信息的干扰,无法生成合理的结构。当使用σ=9进行训练时,由于删除了一些有用的结构信息,纹理生成器无法生成真实的图像。

流动融合在这项融合研究中,本文首先评估通过本文的表面流动所获得的性能增益。然后,本文说明了高斯抽样的有效性和抽样正确性损失。为了验证本文的外观流的有效性,本文训练了一个模型,而没有使用纹理生成器中的外观流块。评价结果见表3。可以看出,本文的StructureFlow比不使用外观流操作训练的模型具有更好的性能,这意味着本文的外观流可以帮助生成纹理并提高模型性能。接下来,本文测试本文的高斯采样和采样正确性损失。

本次融合研究训练了两个模型:一个是在表面流动的扭曲操作中使用双线性采样训练的模型,另一个是在不使用采样正确性损失的情况下训练的模型。图6显示了这些模型获得的外观流场。由此可见,不使用样本正确性损失训练的模型无法对大缺失区域进行样本正确性特征提取。双线性抽样也无法捕获长期相关性。本文的StructureFlow获得合理的视野,并为缺失的区域生成逼真的纹理。

4 .4. User case

本文的方法可以用于一些图像编辑应用。图7提供了一些使用示例。用户可以通过在输入中交互绘制遮罩来移除不需要的对象。本文的模型能够为缺失的区域生成真实的替代内容。此外,通过直接编辑结构图像,用户可以将新对象和内容复制或添加到图像中。

5 . Conclusion

本文提出了一种有效的结构感知框架,用于恢复具有有意义结构和生动纹理的图像。本文的方法将修复任务分为两个子任务:结构重建和纹理生成。实验结果表明,边缘保持的光滑图像能够很好地反映全局结构信息,在修复中起着重要作用。对于纹理生成,本文使用外观流从相关区域采样特征。本文验证了本文的流量操作可以为最终结果带来稳定的性能增益。与几种最新的方法相比,本文的方法可以获得有竞争力的结果。

结构感知图像修复:ICCV2019论文解析的更多相关文章

  1. 大型图像数据聚类匹配:ICCV2019论文解析

    大型图像数据聚类匹配:ICCV2019论文解析 Jointly Aligning Millions of Images with Deep Penalised Reconstruction Conge ...

  2. 细粒度语义分割:ICCV2019论文解析

    细粒度语义分割:ICCV2019论文解析 Fine-Grained Segmentation Networks: Self-Supervised Segmentation for Improved L ...

  3. 目标形体形状轮廓重建:ICCV2019论文解析

    目标形体形状轮廓重建:ICCV2019论文解析 Shape Reconstruction using Differentiable Projections and Deep Priors 论文链接: ...

  4. 人脸标记检测:ICCV2019论文解析

    人脸标记检测:ICCV2019论文解析 Learning Robust Facial Landmark Detection via Hierarchical Structured Ensemble 论 ...

  5. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  6. 视频动作定位的分层自关注网络:ICCV2019论文解析

    视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...

  7. 摄像头定位:ICCV2019论文解析

    摄像头定位:ICCV2019论文解析 SANet: Scene Agnostic Network for Camera Localization 论文链接: http://openaccess.the ...

  8. 面部表情视频中进行远程心率测量:ICCV2019论文解析

    面部表情视频中进行远程心率测量:ICCV2019论文解析 Remote Heart Rate Measurement from Highly Compressed Facial Videos: an ...

  9. 对抗性鲁棒性与模型压缩:ICCV2019论文解析

    对抗性鲁棒性与模型压缩:ICCV2019论文解析 Adversarial Robustness vs. Model Compression, or Both? 论文链接: http://openacc ...

随机推荐

  1. 【ShardingSphere】ShardingSphere学习(一)

    参考官方文档:http://shardingsphere.apache.org/ ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sha ...

  2. Typora+PicGo+cos图床打造开发者文档神器

    一.Typora简介 markdown简单.高效的语法,被每一个开发者所喜爱.Typora又是一款简约.强悍的实时渲染markdown编辑器.本文将介绍Typora搭配PicGo与腾讯cos对象存储( ...

  3. 从Android设备中提取内核和逆向分析

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57074695 一.手机设备环境 Model number: Nexus 5 OS ...

  4. Android平台下Dalvik层hook框架ddi的研究

    通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...

  5. Win64 驱动内核编程-1.环境搭建

    驱动开发环境及其双机调试环境搭建 开发环境搭建 使用工具:vs2015,Windows 10 SDK_10.0.14393,WDK10.0.14393.0 (1)安装VS2015  随便一个版本吧,我 ...

  6. Andrew Ng机器学习算法入门(十):过拟合问题解决方法

    在使用机器学习对训练数据进行学习和分类的时候,会出现欠拟合和过拟合的问题.那么什么是欠拟合和过拟合问题呢?

  7. 【dependencyManagement版本管理】dependencies.dependency.version is missing

    maven 的gav的v(版本问题) 报错dependencies.dependency.version is missing 出现的场景 一个项目中有多个模块 父模块中出现dependencies. ...

  8. lombok,Invalid byte tag in constant pool: 19

    今天偶到一个奇怪的问题: 三台生产服务器部署同样的代码,同样的tomcat ,jdk等环境. 其中有一台服务器启动时报lombok-1.18.6.jar!   Invalid byte tag in ...

  9. Postman中如何实现接口之间的关联?

    Postman中如何实现接口之间的关联? 不单单说Postman中,我为什么拿Postman举例,因为它比较简单一点. 那如果我只问你如何实现接口之间的关联,那肯定有很多的方式,Postman只是其中 ...

  10. C++ primer plus读书笔记——第1章 预备知识

    第1章 预备知识 1. Ritchie希望有一种语言能将低级语言的效率.硬件访问能力和高级语言的通用性.可移植性融合在一起,于是他在旧语言的基础上开发了C语言. 2. 在C++获得一定程度的成功后,S ...