阅读: 2023/5/6 9:17:35
以下文章来源于深圳大学可视计算研究中心 ,作者肖荣钧
导读
本文是VCC肖荣钧同学对论文 Neural Texture Synthesis with Guided Correspondence 的解读,该工作由深圳大学可视计算研究中心独立完成,并已发表在计算机视觉顶级会议CVPR 2023上。
项目主页:
https://vcc.tech/research/2023/DeepTex
该工作针对基于样例的纹理合成任务,目标是在给定源纹理的情况下,合成新的任意分辨率、保留源纹理重复模式的纹理图像。为实现这一目标,本文提出了一种适用于深度网络的引导匹配损失,并应用到深度纹理优化方法中,通过简单的损失反向传播优化方式,即可实现高质量纹理扩展合成。如果引入额外的控制引导图,仅需在引导匹配损失中加入额外的距离度量,即可实现高质量的可控纹理合成。同时,该损失可作为通用纹理损失,用于训练前馈神经网络,实现实时纹理合成。
I 引言
基于样例的纹理合成方法一直是图像合成领域中活跃的研究方向,旨在基于给定的源纹理图像,合成保留源纹理重复模式、视觉上没有明显瑕疵且具备真实感的任意分辨率纹理图像。因为该方法简单直观,仅需以源纹理图像及少量参数为输入,即可进行纹理的自动分析及合成,对非专业使用者十分友好,可以方便快捷的应用于艺术创作、影视影像制作等领域。
现有的纹理合成主流方法大致可以分为两类:传统方法和基于深度学习的方法。传统方法将纹理合成建模为一个马尔可夫随机场(MRF)问题,并通过迭代优化输出图块以使其与输入中的最近邻相似来解决该问题。然而,传统基于样例的合成方法存在较大的性能问题, 其算法实现存在大量局部搜索及迭代优化过程,无法应用于实时编辑合成等效率要求高的应用场景中。近些年来,研究人员提出了许多基于深度学习的纹理合成方法,实现了纹理扩展合成、控制合成等纹理合成应用。但是,现有深度学习纹理合成方法的合成效果有限,其合成结果存在局部模糊、伪影及结构缺失等瑕疵。
为了解决以上问题,文本作者提出了一种适用于深度网络的引导匹配损失,该损失综合考虑了合成结果多样性及局部纹理细节的完整性,可借助深度纹理优化框架进行高质量的纹理扩展合成;此外,该损失可结合不同类别的额外引导通道,进行基于引导图的可控纹理合成。本文提出的引导匹配损失也可作为目标函数,训练用于纹理合成的深度前馈神经网络,从而实现实时的可控纹理合成。
II 技术贡献
本工作主要贡献如下:
提出了一种适用于深度网络的引导匹配损失,并且基于该损失进行深度纹理优化框架设计,实现高真实感的纹理扩展合成;
该损失能结合额外的引导通道实现对纹理合成的引导控制,进而实现可控纹理合成。本文在引导匹配损失的最近邻搜索过程中,额外增加引导图距离,约束源纹理及目标纹理具有相同引导值的区域具备相似的纹理;
该损失能作为通用纹理损失,结合GAN能训练生成网络完成高质量实时可控纹理合成,而现有其他纹理损失,如Sliced Wasserstein损失不能完成这一挑战性任务。
实验证明,基于引导匹配损失的纹理扩展合成结果局部清晰、结构完整、无重复感,效果超越现有纹理扩展合成方法。同时,在应对非均匀纹理合成或者基于标注图的纹理合成任务时,都可以合成符合引导控制、 局部纹理结构保留完整的目标纹理图像,体现出该方法本身较强的可拓展性。
如表1所示,相比其他方法,使用了引导匹配损失的纹理合成结果在平均颜色距离和用户调研上均处于领先水平。
表1 与其他几种最先进的方法进行定量比较
III 方法介绍
本方法在基于优化的纹理合成框架[1]上应用新提出的引导匹配损失进行高质量的纹理合成。在该合成框架中,输入的纹理样例被称为源纹理,合成结果被称为目标纹理。在优化的最开始,目标纹理被随机初始化为高斯噪声图像。在优化的每一次迭代中,计算目标纹理与源纹理之间的引导匹配损失,进行梯度回传,并利用梯度优化目标纹理。经过多次迭代后,得到的目标纹理图像即为最终纹理合成结果。此外,本文提出的引导匹配损失也可作为目标函数,训练用于纹理合成的深度前馈神经网络。
本文的主要内容由引导匹配距离、重复率惩罚和引导匹配损失三部分组成,在下文中将对这三个部分进行详细介绍。
引导匹配距离
引导匹配距离定义了目标纹理图块与源纹理图块之间的相似性程度。在本方法中,使用预训练的VGG-19提取纹理图像的多层深度特征,并从中选择 层计算图块距离。对于可控纹理合成,需要额外考虑用户输入的引导图,此时目标纹理图块 的特征向量由 组成,其中 表示第 层VGG网络输出的激活值, 表示下采样的目标引导图,其大小与 相同, 表示在特征图上采样的图块的序号。同理,对于源纹理图块 其特征向量由 构成。简单起见,后文中将省略上标 。
利用上面定义的符号,可以定义目标纹理图块 与源纹理图块 之间的距离
其中:
1. 是 和 之间的余弦距离,定义为:
2. 是引导图块 和 之间的距离,在可控合成中,距离函数 的定义取决于用户提供的引导图的类型,可由用户按需定义。而对于无条件合成,直接设置
。
3. 是对源纹理图块 的重复率惩罚(将在下一小节中详细介绍)。
重复率惩罚
重复率惩罚用于解决合成结果中出现的纹理模式重复的问题。经过分析,该问题的出现主要是由于在进行目标纹理图块与源纹理图块最近邻匹配时,多个目标纹理图块匹配到少数几个源纹理图块。为了使源纹理中图块能够尽可能均匀地被匹配到,我们首先使用 中的特征距离项 和引导图距离项 来获得每个目标纹理图块与源纹理图块的匹配关系。然后,对于每个源补丁 我们统计其被匹配到的次数,并按照匹配次数对其计算惩罚:
其中 代表计算最邻近匹配操作:
是由所有源图块的平均出现次数定义的归一化。
图1 重复率惩罚的消融实验
引导匹配损失
利用上文中定义的引导匹配距离可以定义目标纹理 与源纹理 之间的引导匹配损失。一种直观的想法是直接将上文中介绍的引导匹配距离 作为引导匹配损失,但该方法会导致严重的模糊现象。我们认为这一问题可归因于纹理具有较强的自相似性,对于一个目标纹理图块,在特征空间中可能存在多个与之距离相近的候选源纹理图块。直接最小化目标纹理图块与其最近邻的源纹理图块的欧几里得距离使优化停留或振动在附近源样本的平均值上,从而输出模糊的图块。为了解决模糊问题,本文采用了[2]中提出的上下文相似性。如图2所示,上下文相似性要求目标纹理图块比所有其他源纹理图块更接近其匹配到的最近邻图块。
图2 上下文相似性示例。由于纹理具有较强的自相似性,可能存在多个源纹理图块与同一目标纹理图快的距离相似。最小化L2距离使优化结果偏向附近源纹理图块的平均值,从而在输出中产生模糊的伪影。上下文相似度则考虑了所有的源纹理图块,不仅约束目标纹理图块与最近邻源纹理图块相似,其他源特征图块也将尽可能排斥该目标特征,从而加速了优化收敛的速度及收敛的质量,进而提升合成效果的局部纹理清晰度及完整性。
在计算上下文相似性时,我们首先将引导匹配距离 进行归一化:
其中 ? 是为了防止除零错误。 是带宽参数,我们在所有实验中都将其设置为 。然后,我们将其归一化为上下文相似性: 最终,本文提出的引导匹配损失定义为: 为上文中介绍的计算最邻近匹配操作。
IV
部分结果展示
为证明本文方法的优越性,本文分别与当前最先进的纹理扩展合成工作进行对比,其中包括基于传统纹理优化的方法 Self-tuning,基于深度学习反向传播优化的方法 CNNMRF 损失、Sliced Wasserstein损失(SWD),及基于深度前馈网络的 Texture Expansion (TexExp)和SinGAN方法,对比结果如图3所示。与CNNMRF相比,我们可以看到本文方法始终更清晰,伪影更少,不具备明显的重复感。SWD则很难处理带有结构或大规模纹理元素的纹理;例如在图3的第3、5和7行中,SWD没能成功合成正确的纹理结构。SinGAN和TexExp的结果的边缘处则会出现明显的瑕疵。相比之下,Self-tuning对几乎所有示例都产生逼真的结果。我们的结果在视觉上与Self-tuning相当,只是在一些细节上有所不同。
图3 纹理扩展合成结果对比
对于使用引导图的可控纹理合成任务,我们分别选择了使用方向引导图、渐变图以及同时使用它们二者作为引导通道进行实验,实验结果如图4所示。结果证明,引导匹配损失可以应用多种形式的引导图,并合成符合引导图的纹理结果。
图4 使用引导图的可控纹理合成
除了应用于纹理优化之外,本文提出的引导匹配损失也可作为目标函数训练纹理生成模型。在实验中,我们使用引导匹配损失 作为一般纹理损失函数训练条件生成网络SPADE[3],并与Sliced Wasserstein损失进行对比,实验结果如图5所示。实验证明,本文方法可实时合成符合目标引导图趋势、纹理清晰、结构明显的纹理结果。
图5 使用引导匹配损失作为目标函数训练条件生成模型SPADE
除此以外,本文提出的引导匹配损失还可作为一般纹理损失与其他损失结合使用,以满足不同的任务需求。例如,结合[4]中提出的基于反演的单幅图像编辑方法,可以使用引导匹配损失作为纹理损失函数,以实现纹理层级的约束。由图6中可以看出,结合使用引导匹配损失 和[4]中提出的 在精细纹理和语义内容上都得到了最可信的结果。
图6在反演合成的单幅图像编辑中应用引导匹配损失
V
总结与展望
本文提出了一种适用于深度网络的引导匹配损失,该损失考虑了合成结果多样性及局部纹理细节的完整性,可借助深度纹理优化框架进行高质量的纹理扩展合成;此外,该损失可结合不同类别的额外引导通道,进行基于引导图的可控纹理合成;该损失还可用于训练前馈网络,实现实时的可控纹理合成。通过实验证明,本文提出的引导匹配损失在纹理扩展合成、可控合成上都能获得高质量的结果。
VI
思考与讨论
Q: 纹理合成与其他生成任务有什么区别?
A: 在纹理合成任务中,纹理通常被看作为一种特殊的
,它具有自相似性和重复模式,完整的纹理
可以看作是由更细小的局部纹理
拼接组合而来。然而,对于大部分纹理老说,直接拼接会导致接缝处不自然,于是需要纹理合成方法来合成视觉真实的纹理
。相比于其他生成任务来说,纹理合成更加注重于对输入纹理样例的自相似性分析和对其重复模式的建模,并利用以上信息合成符合输入纹理样例的模式的合成结果,而不是对一类数据的分布进行建模。
Q: 为什么图4中第三列的生成结果中可以看到生成的纹理总是沿着几个特定的方向呢?
A: 在利用本文方法优化目标纹理时,对每个目标纹理图块,需要从源纹理构成的源纹理图块集合中搜寻最近邻图块作为优化目标。在该例中,源纹理目标图块和其方向引导图的大部分都只包含横向结构的纹理,使得目标纹理图块进行匹配时只能匹配到横向结构的纹理。同时,重复率惩罚也会让目标纹理图块匹配到方向存在一定偏差的次优图块(这是避免合成重复纹理带来的副作用),这使得大部分目标纹理图块都匹配到了具有横向结构的源纹理图块。为了使匹配结果更为准确,我们引入了数据增强,通过对源纹理进行旋转来使源纹理模式更加丰富。例如在该合成结果中,使用了将源纹理旋转8个方向的增强方式,从而产生了图中的合成结果。如果使用更丰富的数据增强方式,该结果会有更进一步的提升,但同时也需要更大的显存和更长的优化时间。
以下是开放性问题,欢迎读者朋友留言讨论:
Q: 为什么在引导匹配损失中需要进行对目标纹理图块寻找其在源纹理中匹配的最近邻,而不是求它们的平均值呢?
转自:“arXiv每日学术速递”微信公众号
如有侵权,请联系本站删除!
上一篇:Github 3k+!南科大 VIP Lab 近期开源 Track-Anything | SAM + VOS: 一键视频标注