Deep Fusion Network for Image Completion用于图像修复的深度融合网络(2019)论文笔记

一、摘要

深度图像修复通常不能将恢复后的图像与现有内容和谐融合,特别是在边界区域,本文从创建平滑过渡的新角度处理了这个问题,并提出了一个简洁的深度融合网络(DFNet)。首先,引入融合块,生成一个灵活alpha的组合图,用于组合已知和未知区域。融合块不仅提供了恢复内容和现有内容之间的平滑融合,而且提供了一个注意力图,使网络更多地关注未知像素。这样,就为结构和纹理信息搭建了一座桥梁,使信息从已知区域自然传播到补全。融合块被嵌入到网络的几个解码器层中。在每一层的损失约束可调的情况下,可以获得更准确的结构信息。

二、介绍

基于深度学习的方法可以分为两组。一组作品侧重于构建上下文注意力结构或应用有效的损失函数在缺失区域生成更真实的内容,他们认为空白应该用类似的背景内容填充,比如用部分卷积集中在未知区域。另一组认为结构一致性更重要。背景先验如边缘是这些方法中最常用的,以确保结构的连续性。

本文设计了一个可学习的融合块来实现过渡区域的像素级融合,融合块可嵌入到编码器-解码器结构中,我们开发了一个额外的卷积块来生成alpha映射,该映射类似于孔洞掩码,但在边界区域具有更平滑的权值。在梯度下降优化过程中,alpha组合图调整恢复图像与真实值内容之间的平衡,使过渡更加平滑。

本文提出了一个深度融合网络(DFNet)。首先,采用融合块作为自适应模块,将图像恢复部分与原始图像进行融合。除了提供平滑过渡之外,融合块避免了学习未知区域像素的不必要的特性映射,并提供了一个注意力图,使网络更加关注缺失的像素。利用融合块,结构和纹理信息可以自然地从已知区域传播到未知区域。其次,将该模块嵌入到不同的解码器层中,通过考虑多尺度约束下不同融合块的预测,深度融合网络优于仅嵌入一个融合块的网络。此外,在不同的层提供不同的特征表现的情况下,我们有选择地打开和关闭结构和纹理损失,从低层恢复结构信息,并在高层细化纹理细节。

贡献

①从更好的过渡区域的角度研究了图像修复问题,并提出了融合块来预测alpha组合图以实现平滑过渡。

②融合块避免学习不必要的已知区域的特性映射,并提供一个注意力机制。这样,结构和纹理信息可以更自然地从已知区域传播到修复。

③提出深度融合网络,一个嵌入多个融合块的U-Net架构,以应用多尺度约束。

④引入了一种新的测量边界像素误差(Boundary Pixels Error, BPE)来测量缺失孔边界附近的过渡性能。

⑤Places2和CelebA的结果表明,我们的方法在定性和定量方面都优于最先进的方法。

三、相关的工作

上下文感知:基于上下文感知的图像修复方法设想可以根据整体场景填充语义内容,这些方法完全依赖于训练图像来生成语义相关的结构和纹理置信度。

纹理生成:在纹理生成方面,采用感知损失对缺失区域进行视觉真实感内容的填充。

结构约束:这个方法可以用自定义或给出额外的边缘信息来代替先验通过手动控制网络的修复结果。

四、方法

深度融合网络

在修复图像时,对于算法来说,在低分辨率下构造结构更容易,而在高分辨率下恢复纹理更可行。我们将融合块嵌入到U-Net的最后几层解码器中,得到了不同分辨率下的修复结果,然后我们可以应用结构和纹理约束到我们想要的不同分辨率。每个融合块输出一个修复结果,其分辨率与输入特征图Fi相同。根据他们的分辨率,我们可以在训练中提供我们想要的不同约束。在测试过程中,只需要最后一层的完成结果

融合块

目前基于深度学习的方法通常是预测整个图像,甚至包括已知区域,并利用它来计算训练过程中的损失。但是,他们采用Icomp (Icomp = M⊙Iin +(1−M)⊙Iout)而不是Iout进行测试。合成过程将Iout中的已知区域替换为Iin中的相应像素。只有少数方法同时使用Iout和Icomp来计算损失。这种训练策略存在问题:

①图像修复的任务是只修复未知区域。在保持已知区域严格的一致映射的情况下,实际上很难完成缺失的孔。

②在训练和测试过程中,Icomp和Iout的使用不一致,加上组合方法的严格性,通常会在缺失区域的边界周围产生可见的伪影。

为了去除边界周围的伪影,避免神经网络学习不必要的特性映射,提出了融合块,融合块反馈了两个元素,未知区域Iin的输入图像和来自K层特征映射Fk(第一层是U-Net的最后一层解码器)。最后的结果为:

M(Fk)将通道特征映射Fk变换为分辨率不变的3通道特征,用一个1*1卷积层和sigmoid函数来学习M。

αk在通道数量上有两种选择,要么是单通道用于图像方向的α合成,要么是3通道用于通道方向的α合成。我们发现通道的alpha组合性能更好。对于A,使用三个卷积层,它们的核大小分别为1,3,1。前两个卷积层之后是一个BN(批量归一化)层和一个leaky ReLU函数。我们将sigmoid函数应用于最后一个卷积层的输出。

融合块使网络在边界附近通过软过渡完成未知区域的同时,避免学习不必要的特性映射,同时可以在多尺度约束下进一步提高修复性能。

损失函数

重建损失通常用来保证修复结果中结构的准确性,重建损失是指预测结果与真实值之间每像素的平均绝对误差。然而,高分辨率纹理超出了重建损失的能力。GAN损失或感知损失和风格损失来获得生动的纹理。这两种损失都有同样的缺点,产生棋盘和鱼鳞伪影。总变差损失通常用来抵消这个缺点。

同时增加风格损失的权重可以更明显地减少这种伪影。

重建损失

感知损失和风格损失

感知损失和风格损失首先用于风格迁移,它们使用预训练的VGG网络来提取高级特征。误差是在这些特征之间而不是原始图像之间计算的。风格损失不考虑像素的位置,而是关心高级特征同时出现的程度,因此它更适合约束图像的整个风格。

风格损失为输出对应的Gram矩阵与目标图像之间的L1平均绝对误差:

J为选择的VGG层。Gram矩阵是一个Cj ×Cj矩阵

总变差损失

总变化损失Ltv是仅使用预测计算的误差。每个像素分别计算上像素和左像素的误差。通过使用具有固定核的卷积层可以更容易地实现这一点。

总损失

将损失函数分为结构损失和纹理损失。结构损失用加权重建损失表示:

纹理损失是三种损失的组合:

我们的最终损失是不同分辨率补全结果的结构损失和纹理损失的总和:

(p,q)代表U-Net的最后p层修复结果将用于计算结构损失,最后q层将用于计算纹理损失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值