介绍
从采样噪声生成照片般逼真的图像或在其他输入(例如图像,文本或标签)上进行调节的问题已经得到了大量的研究。但是现在生成高分辨率图像仍然是一项艰巨的任务。这主要是因为对像素的分布进行建模是困难的,并且当维度变高的时,训练的模型容易引入模糊的分量和伪像。已经有几个方法,通常是通过利用多规模训练或者包含先验信息。
图像修复的任务可以概括为:给定一个不完整的图像作为输入,我们如何用语义和视觉上的合理的内容填充缺失的部分。Context-encoder是最早提出来应用于深度学习进行图像修复的,虽然它使用重建损失和对抗性损失将不完整的图像映射到完整的图像,尽管对抗性损失显著提高了修复质量,但是结构依然很模糊。并且它无法输入512X512的,也就是无法推广到高分辨率。
作者的方法类似于{9},将修复过程分为两个阶段:推理和翻译。在推理阶段,我们训练一个image2feature网络,用粗略预测初始化洞并提取它的特征。预测是模糊的,但在洞中包含高级结构信息。在翻译阶段,我们训练了Feature2image网络,将该特征转换回完整的图像。它可以细化孔中的内容并输出具有清晰逼真纹理的完整图像。这个结构和{9}不一样的地方在于,它不依赖于优化,而是将纹理细化建模为学习问题。两个网络都可以进行端到端的训练,并且经过训练模型,推理可以在单个正向传递中完成,这比迭代优化快的多。
为了减轻Feature2image网络的难度,我们设计了一个“补丁交换”层,用于将高频纹理细节从边界传播到孔。补丁交换层将特征映射作为输入,并将孔内的每个神经补丁替换为边界上最相似的补丁。然后,我们使用新的要素作为Feature2image网络的输入,通过在边界上重新使用神经贴片,特征贴图包含足够的细节,使得高分辨率图像重建成为可能。最高的分辨率是512X512,暂时没有到1024X1024。。。
所以贡献有三个:
1)设计了一种基于学习的修复戏台,能够在高分辨率图像中合成具有高质量内容和纹理的缺失部分。
2)提出了一种新颖强大的训练方案,解决了特征操纵问题并避免了不何止。
3)训练好的模型可以达到与现有技术相媲美的性能,并可以推广到其他任务,如风格转移。
## 方法
一. 问题描述
我们将图像修复的任务形式化如下:假设给出一个不完整的输入图像Io,其中分别代表缺失区域(孔)和已知区域(边界)。我们想填补R具有合理的内容IR并将其与I0作为新的完整图像I。
二. 系统总览
分为三个步骤
1)推断:使用image2feature网络以粗略内容填充不完整图像作为推断,并从修复图像中提取特征图。
2)匹配:我们在特征图上使用补丁交换来匹配从高分辨率边界到具有粗略推理的孔的神经补丁。
3)翻译:我们使用Faeture2image网络转换成完整的图像。
训练
一.推理
mage2Feature的目标网络是用粗略预测来填补空洞。在训练期间Image2Feature翻译网络的输入是256x256x3不完整图像I0,输出是大小为64x64x256的特征映射F1。该网络由一个基于FCN的模块G1,由下采样前端,中间残差块和上采样后端组成。 G1之后是19层VGG网络的初始层[34]。这里我们使用过滤金字塔VGG网络作为类似于[28]的图像的更高级别表示。首先,给出I0作为G1的输入,其产生大小的粗略预测I1R为128×128。然后将I1R嵌入R中,形成完整的图像I1,再次通过VGG19网络将relu3_1激活作为F1。 F 1大小为64x64x256。我们还使用额外的PatchGAN鉴别器D 1来实现促进对抗性训练,将一对图像作为输入和输出真/假概率的向量。
对于G 1,下采样前端由三个卷积层组成,并且每个层具有步幅2.中间部分具有堆叠的9个残差块一起。上采样后端与前端相反,由后端组成
用步幅2进行三次转置卷积。遵循每个卷积层通过批量标准化[?]和ReLu激活,除了最后一层输出图像。我们还在所有残余块中使用扩张卷积。类似
在[35]中用于图像合成和[1]用于修复,与[35]不同,我们使用扩张层来增加感受野的大小,与[1]相比,我们的感受野也更大,因为我们有更多的下采样块和残差块中更多的扩张层。
在训练期间,整体损失函数定义为:
第一个损失是感知损失:
其中的MF是加权掩膜,产生仅在特征图的孔上计算的损耗。我们还为孔和边界之间的重叠像素分配更高的权重,来确保复合是连贯的,VGG19网络的权重从ImageNet预训练模型加载,并且在训练期间固定。
对抗损失为:
我们使用一堆图像作为鉴别器的输入,在对抗训练的设定下,真实对是不完整图像I0和原始图像Igt,而假设对是I0和I1,为了对齐每个损失的绝对值,我们分别设置权重和使用Adam优化器进行训练。生成器和判别器的学习率分别设置为2e-3,2e-4,动量??设置为0.5,此处不知道什么是动量。。。
二.匹配
补丁交换是一种转换的操作,将F1转换成新的特征映射F1’。 这个想法是预测I1R模糊,缺乏 许多高频细节。 直观地说,我们想衍生从I1R̄~到I1R的纹理,但仍然保留了高级信息。 我们不是直接在II1上操作,而是使用F1作为纹理衍生的替代传播。 类似地,我们使用r和r̄~来表示F 1上的区域对应
I 1上的R和R̄~ 对于F 1重叠的每个3×3神经贴片p i(i = 1,2,…N)
使用r,我们在r̄中找到最接近匹配的神经补丁,基于以下内容
互相关指标:
假设pi的最接近匹配的贴片是qi,然后我们用qi代替pi。在r中的每个补丁与其中最相似的补丁交换之后,重叠补丁被平均并且输出是新的特征映射F1’,图三说明了过程:
三.翻译
Feature2Image网络的目标是学习从交换的特征映射到完整和清晰图像的映射。除了隐藏层的数量不同之外,它具有类似的U-Net的生成器G2类似于G1。 G 2的输入是大小为64x64x256的特征映射。该发生器具有七个卷积块和八个反卷积块,并且前六个反卷积层使用跳过连接与卷积层连接。输出是完整的256x256x3图像。它还包括基于Patch-GAN的鉴别器D2。然而,与将一对图像作为输入的Image2Feature网络不同,D2的输入是一对图像和特征图。
一个简单的训练范例是使用Image2Feature网络F1的输出作为补丁交换层的输入,然后使用交换的特征F1‘ 来训练Feature2Image模型。以这种方式,特征图从粗略预测I1导出,并且整个系统可以端对端地训练。然而,在实践中,我们发现这导致质量差的重建I,具有显着的噪声和伪影(第4节)。我们进一步观察到,使用基础事实作为训练输入可以显着提高视觉质量。也就是说,我们使用特征映射F gt = vgg(I gt)作为补丁层的输入,
然后使用交换特征F’gt = patch_swap(Fgt)来训练Feature2Image模型。由于I gt在测试时无法访问,我们仍然使用F’1 = patch_swap(F1)作为推断的输入。请注意,现在功能2图像模型使用不同类型的输入进行训练和测试,这不是训练机器学习模型的常规做法。在这里,我们为这种现象提供了一些直觉。基本上通过训练Feature2Image网络,我们正在学习从特征空间到图像空间的映射。由于F1是Image2Feature网络的输出,因此它固有地包含大量噪声和模糊性。因此
由F1 ‘组成的特征空间具有比特征F’gt组成高的特征空间维数高的多。
结果是该模型很容易低于F1’,因此很难学习良好的映射。或者,通过使用F‘gt,我们选择a
干净,紧凑的特征子集,使得映射空间小得多,使其更容易学习。我们的实验也表明该模型训练在测试时,地面实况很好地推广到噪声输入F1’ 。与[40]相似,我们
通过从基础事实和实证中抽样,可以进一步提高稳健性
Image2特征预测。
feature2image的转换网络的总体损失定义为:
多尺度推理: