1新智元编译
来源:arXiv、Github
编译:张易
【新智元导读】自动图像补全是计算机视觉和图形领域几十年来的研究热点和难点。在神经网络的帮助下,来自伯克利、Adobe 等研究人员利用组合优化和类似风格转移的方法,突破以往技术局限,成功实现了超逼真的“从0到1”图像生成。代码已在Github 开源。
点击播放 GIF/58K
完胜 PS!新方法实现完美“脑补”
在分享照片之前,你可能会想进行一些修改,例如擦除分散注意力的场景元素,调整图像中的物体位置以获得更好的组合效果,或者把被遮挡的部分恢复出来。
这些操作,以及其他许多编辑操作,需要进行自动的孔洞填充(图像补足),这是过去几十年间计算机视觉和图形领域的一个研究热点。因为自然图像固有的模糊性和复杂性,整体填充也是长期以来的难点。
但现在,这个问题终于得到了比较好的解决,证据就是下面这幅图。
这项全新研究的主要贡献是:
提出了一个联合优化框架,可以通过用卷积神经网络为全局内容约束和局部纹理约束建模,来虚构出缺失的图像区域。
进一步介绍了基于联合优化框架的用于高分辨率图像修复的多尺度神经补丁合成算法。
在两个公共数据集上评估了所提出的方法,并证明了其优于基线和现有技术的优势。
克服现有方法局限,用深度学习风格转移合成逼真细节
我们稍后会详细介绍这项研究成果。在此之前,有必要补充一下背景知识。
现有的解决孔洞填充问题的方法分为两组。第一组方法依赖于纹理合成技术,其通过扩展周围区域的纹理来填充空白。这些技术的共同点是使用相似纹理的补丁,以从粗到精的方式合成孔洞的内容。有时,会引入多个尺度和方向,以找到更好的匹配补丁。Barnes et al.(2009) 提出了 PatchMatch,这是一种快速近似最近邻补丁的搜索算法。
尽管这样的方法有益于传递高频纹理细节,但它们不抓取图像的语义或全局结构。第二组方法利用大型外部数据库,以数据驱动的方式虚构缺失的图像区域。这些方法假定被相似上下文包围的区域可能具有相似的内容。如果能找到和所查询图像具有足够视觉相似度的图像样本,这种方法会非常有效,但是当查询图像在数据库中没有被很好地表示时,该方法可能会失败。另外,这样的方法需要访问外部数据库,这极大地限制了可能的应用场景。
最近,深度神经网络被用于纹理合成和图像的风格化(stylization)。特别需要指出,Phatak et al(2016)训练了具有结合了和对抗性损失的编码器 - 解码器 CNN(Context Encoders)来直接预测丢失的图像区域。这项工作能够预测合理的图像结构,并且评估非常快,因为孔洞区域的预测是在a single forward pass中进行的。虽然结果令人鼓舞,但有时这种方法的修复结果缺乏精细的纹理细节,在空白区域的边界周围会产生可见的伪迹。 这种方法也不能处理高分辨率图像,因为当输入较大时,和对抗性损失相关的训练会有困难。
在最近的一项研究中,Li和Wand(2016)指出,通过对图像进行优化(该图像的中间层神经响应与内容图像相似,底层卷局部响应模仿style图像的局部响应),可以实现逼真的图像stylization结果。那些局部响应由小的(通常3×3)神经补丁表示。 该方法证明能够将高频率细节从style图像传输到内容图像,因此适合于实际的传递任务(例如,传递面部或汽车的外观)。尽管如此,通过使用神经响应的 gram matrices 能更好地进行更多艺术风格的传递。
好,是主角出场的时候了——
为了克服上述方法的局限性,来自伯克利、Adobe、Pinscreen 和 USC Institute for Creative Technologies 的研究人员提出了一种混合优化方法(joint optimization),利用编码器 - 解码器CNN的结构化预测和神经补丁的力量,成功合成了实际的高频细节。类似于风格转移,他们的方法将编码器 - 解码器预测作为全局内容约束,并且将孔洞和已知区域之间的局部神经补丁相似性作为风格(style)约束。
更具体地说,使用中间层的补丁响应(该中间层使用预训练分类网络),可以通过训练类似于 Context Encoder 的全局内容预测网络来构造内容约束,并且可以用环绕孔洞的图像内容来对纹理约束进行建模。可以使用具有有限存储的 BFGS 的反向传递算法来有效地优化这两个约束。
作者在论文中写道:“我们通过实验证明,新提出的多尺度神经补丁合成方法可以产生更多真实和连贯的结果,保留结构和纹理的细节。我们在两个公共数据集上定量和定性地评估了所提出的方法,并证明了其在各种基线和现有技术上的有效性,如图1 所示。”
图1:对于给定的一张带有孔洞(256×256)的图像(512×512),我们的算法可以合成出更清晰连贯的孔洞内容(d)。我们可以和用Context Encoders(b)、PatchMatch(c)这两种方法产生的结果进行比较。
具体方法
为了进一步处理带有大面积孔洞的高分辨率图像,作者提出了一种多尺度神经补丁合成方法。为了简化公式,假设测试图像始终裁剪为 512×512,中间有一个 256×256 的孔洞。然后,创建一个三级金字塔,步长为二,在每个级别将图像缩小一半。它呈现 128×128 的最低分辨率,带有 64×64 的孔洞。接下来,我们以从粗到精的方式执行孔洞填充任务。初始化最低级别的内容预测网络的输出,在每个尺度(1)执行联合优化以更新孔洞;(2)upsample 以初始化联合优化并为下一个尺度设置内容约束。最后,重复此步骤,直到联合优化以最高分辨率完成。
Framework 概述
我们寻求对损失函数进行了优化的修复图像,其被表示为三个项的组合:整体内容项,局部纹理项和tv-loss项。 内容项是捕获图像的语义和全局结构的全局结构约束,并且局部项通过使其与已知区域一致来重新定义局部纹理。 内容项和纹理项均使用具有固定参数的预训练网络来计算。