paper:2108.03647
GitHub:wzmsltw/AdaAttN: Official PaddlePaddle implementation of AdaAttN
目录
摘要
快速的任意风格迁移(Arbitrary Neural Style Transfer)因其灵活性,可以实现各种应用,因此受到了学术界、工业界和艺术界的广泛关注。现有的解决方案要么是在不考虑特征分布的情况下,将深层的风格特征与内容特征进行融合,要么是根据风格自适应地规范化深层内容特征,使其全局统计量匹配。虽然这些方法有效,但它们通常没有充分利用浅层特征,并且在局部特征统计上的考虑不够,容易导致不自然的输出,且局部区域会产生令人不悦的失真。为了解决这个问题,本文提出了一种新的注意力和归一化模块,命名为自适应注意力归一化(AdaAttN),用于在每个点上自适应地执行注意力归一化。具体来说,空间注意力得分是从内容图像和风格图像的浅层和深层特征中学习得到的。然后,通过将风格特征点视为所有风格特征点的注意力加权输出分布来计算每个点的加权统计量。最后,对内容特征进行归一化,使其具有与计算得到的每个点加权风格特征统计量相同的局部特征统计量。此外,基于AdaAttN,本文提出了一种新的局部特征损失函数,以提高局部视觉质量。我们还通过对AdaAttN进行轻微修改,将其扩展到视频风格迁移。实验结果表明,我们的方法在任意图像/视频风格迁移任务中取得了最先进的效果。
1、介绍
给定一张内容图像 和一张风格图像
,艺术风格迁移旨在将风格图像的风格模式应用于内容图像
,同时保持内容图像的结构,这在计算机辅助艺术生成中得到了广泛应用。Gatys 等人 [9] 的开创性工作提出了一种图像优化方法,通过迭代最小化预训练深度神经网络特征空间中的内容损失和风格损失。这一耗时的优化过程促使研究人员探索更高效的方法。Johnson 等人 [18] 提出了另一种方法,考虑使用前馈网络直接生成渲染图像,从而实现实时风格迁移。由于所学习的模型只能处理特定的风格,这种方法及其后续工作 [40,34,35,21,27,39,16,20] 被归类为每个风格对应一个模型的方法 [17]。文献中还存在多风格每个模型的解决方案 [7,2,23,44] 和任意风格每个模型的方法 [14,3,22,28,15,24,6,5,43,32,42,11]。在后一种方法中,模型可以接受任何风格图像作为输入,并在模型训练后通过一次前向传播生成风格化结果。因此,这种方法具有最大的灵活性,并且吸引了学术界、工业界和艺术界的越来越多的关注。
然而,任意风格迁移离完全解决仍然有很大距离。为了实现灵活性,牺牲了局部风格模式建模的能力。例如,开创性工作 [14] 提出了简单而有效的方法 AdaIN,将风格图像的全局均值和方差转移到内容图像的特征空间,从而支持任意输入风格图像。由于特征的均值和方差是全局计算的,因此忽略了局部细节和逐点模式,从而使局部风格迁移性能大大下降 [28]。类似的折衷也出现在 [5, 22, 15, 24, 10] 中,其中内容图像的所有局部特征点都通过基于风格图像的相同变换函数进行处理。为了增强任意风格迁移模型的局部感知能力,最近一些工作 [28, 6, 43] 引入了注意力机制。它们的共同直觉是,模型应该更多关注风格图像中与内容图像区域特征相似的部分,从而对内容图像区域进行风格迁移。这种注意力机制已被证明对于生成更多的局部风格细节在任意风格迁移中是有效的。不幸的是,尽管这种方法在提高性能方面有效,但它并没有完全解决问题,局部失真仍然存在。
揭示上述问题的原因并不难。深入分析当前基于注意力的任意风格迁移解决方案,可以很容易发现:1) 设计的注意力机制通常基于深度CNN特征,这些特征位于更高的抽象层级,忽略了低级细节;2) 注意力得分通常用于重新加权风格图像的特征图,并将加权后的风格特征简单地与内容特征融合进行解码。基于深度CNN特征的注意力策略忽略了图像浅层网络中的低级模式。因此,注意力得分可能对低级纹理的关注较少,而由高级语义主导。同时,风格特征的空间加权,再加上加权后的风格特征与内容特征的融合,如在SANet [28] 中所做的那样,并未考虑特征分布。
为此,我们尝试解决这些问题,并在风格模式迁移和内容结构保持之间取得更好的平衡。根据上述分析的经验教训,我们提出了一种新型的注意力和归一化模块,称为 自适应注意力归一化(AdaAttN),用于任意风格迁移。该模块可以在每个点上自适应地执行注意力归一化,以实现特征分布的对齐。更具体地,空间注意力得分是从内容图像和风格图像的浅层和深层特征中学习得到的。然后,通过将风格特征点视为所有空间特征点的注意力加权输出分布,计算每个点的加权统计量。最后,对内容特征进行归一化,使其局部特征统计量与计算得到的每个点加权风格特征统计量相同。通过这种方式,注意力模块同时考虑了风格图像和内容图像的浅层和深层CNN特征,并且实现了从内容特征到调节后的风格特征的逐点特征统计量对齐。
基于 AdaAttN 模块,我们提出了一种新的优化目标,称为 局部特征损失,以及一种新的任意图像风格迁移管道。我们的贡献总结如下:
- 我们为任意风格迁移引入了一种新型的 AdaAttN 模块。该模块在计算注意力得分时同时考虑了浅层和深层特征,并正确地规范化内容特征,使得特征统计量在逐点基础上与风格特征的注意力加权均值和方差图对齐。
- 提出了一个新的优化目标,称为局部特征损失。它通过对生成图像的局部特征进行正则化,帮助模型训练,并提高任意风格迁移的质量。
- 进行了广泛的实验和与其他最先进方法的比较,证明了我们提出方法的有效性。
- 通过简单引入基于余弦距离的注意力机制和图像级相似性损失,我们的模型进一步扩展到视频风格迁移,并取得了稳定且令人满意的结果。
2、相关工作
2.1 任意风格迁移
近年来,任意风格迁移方法可以分为两类:基于全局变换和基于局部变换的方法。前者的共同思路是对特征进行全局修改。WCT [24] 通过包括去白化和着色的两个变换步骤实现了这一点。Huang 等人 [14] 提出了 AdaIN 方法,通过自适应地应用每个风格特征的均值和标准差,来平移和重新缩放相应的归一化内容特征,从而使内容特征和风格特征共享相同的分布。Jing 等人 [15] 通过动态实例归一化扩展了这一方法,其中一个网络根据风格图像作为输入生成中间卷积块的权重。Li 等人 [22] 提出了根据内容和风格特征生成线性变换的方案。进一步地,Deng 等人 [5] 通过多通道相关性得到变换函数。尽管这些方法实现了整体的任意风格迁移任务,并在该领域取得了巨大进展,但由于它们依赖的全局变换无法处理细节的局部信息,因此局部风格迁移的表现通常不尽如人意。
对于后者,Chen 等人 [3] 提出了风格交换方法,这是一种基于内容和风格补丁相似性的补丁式风格迁移方法。[11] 是另一种基于补丁的方法,考虑了全局统计量和局部补丁的匹配。Avatar-Net [32] 进一步提出了一种多尺度框架,结合了风格交换和 AdaIN 函数的思路。近年来,注意力机制被广泛应用于任意风格迁移,因为它在建模风格和内容图像的局部特征之间的细粒度对应关系方面表现出色。在这一思路下,Park 等人 [28] 提出了风格注意力网络(SANet)来匹配内容和风格特征。Yao 等人 [43] 在这样的注意力框架下考虑了不同类型的笔触。Deng 等人 [6] 提出了一个多适应模块,为内容特征应用逐点注意力,为风格特征应用通道注意力。这些方法通常的做法是,仅基于深度CNN特征构建注意力机制,而忽略浅层特征,并简单地将内容特征与加权后的风格特征混合。因此,这种方法往往会大幅度扭曲原始的内容结构,导致不理想的效果。本文的目标是探索风格模式迁移与内容结构保持之间更好的折衷。
2.2 视频风格迁移
直接将图像风格迁移技术应用于视频帧序列通常会导致由于时间不一致性而产生闪烁效果。因此,许多研究通过向原始图像风格迁移解决方案添加光流一致性约束来解决这一问题,例如:优化基础的视频风格迁移 [30],每风格每模型方法 [31, 1, 12, 13, 8],任意风格每模型方法 [37, 38],以及图像到图像的转换框架 [36, 4, 26]。光流约束提高了视频风格迁移的稳定性。然而,它严重依赖于高精度预提取的光流场来执行基于流的变形。也有一些工作通过其他方法来解决稳定性问题,而不是使用光流变形。[22, 5] 利用了变换模型的线性特性,确保了特征空间中的帧间一致性。Wu 等人 [41] 提出了一种基于 SANet 的方法,在当前帧的帮助下,借助 SSIM 一致性约束,引导当前帧聚焦于前一帧的相似区域。不同于这些方法,在本研究中,我们基于注意力机制添加了一种新的图像级相似性损失,克服了闪烁伪影,并且在没有预设光流的情况下达到了更好的稳定性。
3、方法
3.1 整体框架
我们提出的网络模型接收一张风格图像 和一张内容图像
,生成一张风格化的图像
。在我们提出的模型中,我们使用预训练的 VGG-19 网络 [33] 作为编码器,用于提取多尺度特征图。解码器沿用了 [14] 的结构,采用与 VGG-19 对称的结构。为了充分利用浅层和深层特征,我们采用了一种多层级策略,在 VGG 的 ReLU-3_1、ReLU-4_1 和 ReLU-5_1 层上分别集成了三个 AdaAttN 模块,如图 2 所示。
我们将从 VGG 中提取的第ReLU-x_1 层的特征表示为,其中
和
分别代表内容和风格特征。为了充分利用低层次的模式,我们进一步将当前层的特征与其前一层的下采样特征连接起来,如下所示:
其中 表示双线性插值层,用于将输入特征下采样到与
相同的形状,
表示通道维度上的拼接操作。然后,我们可以将 AdaAttN 模块在第 l 层提取的嵌入特征表示为:
其中 、
和
分别表示内容、风格和嵌入特征。通过多层级嵌入特征,我们可以通过解码器合成风格化图像
:
3.2 自适应注意力归一化
特征变换模块是任意风格迁移模型的关键组成部分。我们与其他框架的对比如图 3 所示。
开创性的 AdaIN [14] 仅考虑了全局的风格分布,内容特征被操作,使其特征分布与风格特征的分布全局对齐。通过考虑局部风格模式,SANet [28] 计算来自风格和内容特征图的注意力图,然后用注意力图调节风格特征,将注意力输出与内容特征融合。SANet 在局部风格化上表现良好,但它缺乏低层匹配和局部特征分布对齐。受 AdaIN 和 SANet 启发,我们提出了自适应注意力归一化 (AdaAttN) 模块,能够通过注意力机制适应性地在每个点上进行特征分布转移,同时考虑低层和高层特征。
如图 3(c) 所示,AdaAttN 工作分为三步:
- 使用来自浅层到深层的内容和风格特征计算注意力图。
- 计算风格特征的加权均值和标准差图。
- 自适应地归一化内容特征,进行逐点特征分布对齐。
3.2.1 注意力图生成
在任意风格迁移方法中,注意力机制用于衡量内容特征与风格特征之间的相似性。不同于以往仅使用较深层特征的方法,我们同时使用内容和风格特征的低层和高层特征。为了计算第 层的注意力图
,我们将
(查询)、
(键)和
(值)定义为:
其中,、
和
是 1×1 可学习的卷积层,Norm 表示通道维度的均值-方差归一化,类似于实例归一化。注意力图 A 可以通过以下公式计算:
其中, 表示矩阵乘法。
3.2.2 加权均值和标准差图
将注意力得分矩阵 A 应用于风格特征 ,就像 SANet [28] 所做的那样,可以看作是通过对所有风格特征点进行加权求和来计算每个目标风格特征点。在本文中,我们将这一过程解释为通过注意力输出视为一个分布,该分布由所有加权风格特征点组成。从这个角度出发,我们可以计算每个分布的统计量。我们将这些统计量称为注意力加权均值和注意力加权标准差。因此,注意力加权均值
表示为:
其中, 和
。由于方差等于平方的期望值减去期望的平方,我们可以通过以下公式计算注意力加权标准差
:
其中,⋅ 表示逐元素乘法。
3.2.3 自适应归一化
最后,对于归一化内容特征图的每个位置和每个通道,使用标准差图 中的相应比例和均值图
中的偏移量生成变换后的特征图:
简而言之,AdaAttN 通过生成注意力加权的均值和标准差图来执行特征统计量的转移。如图 3 所示,与 AdaIN 相比,AdaAttN 考虑了每个点的统计量,而不是全局的。AdaAttN 比 AdaIN 更具通用性。对于每个 ,如果设置
,则 AdaAttN 可以专门化为 AdaIN。与 SANet 相比,注意力机制用于计算目标特征分布,而不是直接生成转移后的特征以进行进一步的融合。
3.3 损失函数
我们的整体损失函数是全局风格损失( )和局部特征损失(
)的加权和:
其中, 和
是超参数,用于控制各自损失项的权重。接下来的部分将详细解释每个损失项的具体内容。
首先,和 [14] 及其他许多工作一样,我们通过在 VGG 特征空间中对生成图像和风格图像的均值和标准差进行惩罚,来保证全局的风格效果():
其中, 表示 VGG 编码器提取的特征,
表示特征的标准差,x 表示层的索引。
我们提出的局部特征损失 约束风格化图像的特征图与通过 AdaAttN 函数变换后的结果一致:
其中,AdaAttN 提供了一个监督信号,应该是确定性的。因此,我们考虑使用不含三个可学习 1×1卷积核()的 AdaAttN 无参版本。局部特征损失相比于传统的内容损失项 [14, 28],能够使模型在局部区域生成更好的风格化输出。
3.4 扩展到视频风格迁移
与其他基于注意力的方法相比,我们的方法能够生成更自然的风格化结果,且局部失真较少,因此在视频风格迁移中具有较大的潜力。通过两个小的修改,我们的模型可以扩展到视频风格迁移。
首先,我们注意到公式 (5) 中的 Softmax 函数由于指数计算,导致其注意力得分具有较强的排他性,并且主要集中在局部模式上,这对稳定性有负面影响。在视频风格迁移中,我们可以考虑使用余弦相似度来计算注意力图:
其中,并且
是内容和风格特征的查询和键。余弦相似度比 Softmax 产生的注意力得分分布更加平滑,从而使得局部特征统计更加稳定,局部风格模式不会被过度强调,有助于确保一致性。
其次,基于注意力机制,我们设计了一个新的跨图像相似度损失项,用于在两个内容图像
和
之间正则化它们的相关内容:
其中, 表示第 x 层内容特征图
的空间维度,
表示余弦距离。每次训练迭代时,都会从两个视频帧中采样来启用该损失项。直观来说,这种跨图像相似度损失要求两个内容图像的风格化结果在局部相似性模式上与原始图像之间具有相似性。因此,它确保了视频风格迁移中的帧间关系意识,并有助于更稳定的结果。
4、实验
4.1 实现细节
我们使用 MS COCO[25] 作为内容图像集,WikiArt[29] 作为风格图像集,来训练我们的任意风格迁移模型。g、l 和 is(仅适用于视频风格迁移)分别设置为 10、3 和 100。我们使用 Adam 优化器[19],其学习率为 0.0001,β1为 0.9,β2为 0.999。训练阶段,所有图像的分辨率为 512x512,并随机裁剪到 256x256 进行数据增强。在推理阶段,我们的模型可以应用于任意分辨率的图像。本节中,图像和视频分别使用 512x512 和 512x256 分辨率。训练持续 50,000 次迭代,使用单个 Nvidia Tesla P40 GPU,图像的批量大小为 8,视频的批量大小为 4。
4.2 与最新方法的比较
定性比较:如图 4 所示,我们将我们的方法与六种最先进的任意风格迁移方法进行比较,包括 AdaIN[14]、SANet[28]、MAST[5]、Linear[22]、MCCNet[5] 和 Avatar-Net[32]。AdaIN[14] 通过全局调整内容特征的二阶统计量来进行风格迁移,我们可以看到风格图案被转移,但内容细节严重丢失(第 1、5 和 6 行)。Avatar-Net[32] 利用 AdaIN 进行多尺度迁移,并通过补丁匹配策略引入风格装饰器,这导致了模糊的风格化结果,并且有明显的斑块(第 1、6 和 8 行)。SANet[28] 和 MAST[5] 采用注意力机制,针对深层特征进行风格迁移,但会导致内容结构损坏(第 3、4 和 6 行)和杂乱的纹理(第 1、2、8 行)。一些风格补丁甚至会直接不恰当地转移到内容图像中(第 4、8 行)。Linear[22] 和 MCCNet[5] 通过线性投影和每通道相关性来修改特征,生成相对干净的风格化输出。然而,风格图像的纹理模式未能自适应地捕捉,导致内容细节丢失(第 3、5 和 6 行),并且内容图像的颜色保持不变(第 7 行)。如第 3 列所示,AdaAttN 可以自适应地将风格模式转移到内容图像的每个位置,归功于其创新的逐点注意力标准化方法。结果表明,AdaAttN 在风格迁移和内容结构保持之间取得了更好的平衡。
用户研究:我们参考 SANet,随机选取了 15 张内容图像和 15 张风格图像,组成了 225 对图像对。然后,我们随机抽取 20 对内容-风格图像对,通过不同的方法合成风格化图像。结果按随机顺序并排展示,要求被试从三个角度选择他们最喜欢的图像:内容保持、风格化程度和整体偏好。我们收集了 100 名用户的 2000 次投票,并以条形图的形式展示每种方法的投票数。图 6 的结果表明,我们的风格化结果比竞争对手更受欢迎。
效率分析:我们展示了 AdaAttN 和最先进的前馈方法在表 1 中的运行时性能。所有实验都使用单个 Nvidia P40 GPU 进行。尽管使用了多深度特征层(从 1x1 到 5x1),我们的模型仍然能以 256 像素的分辨率达到 20 FPS,这与像 SANet[28] 和 Linear[22] 等最先进的方法相当。因此,我们提出的 AdaAttN 可以实际实时合成风格化图像。
4.3 消融实验
损失函数:如图 5 所示,我们通过消融实验来验证训练 AdaAttN 时每个损失项的有效性。
(1) 为了验证我们提出的局部特征损失 的有效性,我们用原始的 L2 内容损失
替代它,后者约束内容图像和风格图像之间的特征距离,这在许多风格迁移方法中被使用[14, 6, 28]。如第 4 列所示,与完整模型相比,使用 L2 内容损失的视觉质量明显更差。实验表明,与内容损失相比,我们提出的局部特征损失能够更好地考虑风格模式,同时保持内容结构。
(2) 我们去除全局风格损失 ,仅使用
训练模型。如第 5 列所示,在没有风格损失的情况下,风格图案的转移较弱,这表明
可以在一定程度上强迫网络学习风格迁移。然而,整体颜色饱和度下降,显示出全局风格损失是必要的。
4.4 视频风格迁移
对于视频风格迁移,我们将我们的方法与最先进的 SANet、Linear 和 MCCNet 方法进行了比较,其中未使用光流稳定化。为了验证我们提出的方法在视频风格迁移中的有效性,我们还提供了添加 Cos 和 Lis 的消融实验结果,其中 Cos 表示余弦相似度的注意力得分(公式 12)。图 7 中的定性结果和表 2 中的定量结果表明:(1) 我们的方法比基于注意力的方法 SANet 更稳定;(2) 使用余弦距离替代 Softmax 激活可以显著提高时间一致性;(3) 在我们提出的修改下,AdaAttN 比 Linear 和 MCCNet 更稳定,它们是为视频风格迁移而提出的。
4.5 多风格迁移
为了验证 AdaAttN 中浅层特征的有效性,我们通过将 AdaAttN 的Q 和 K 替换为 来去除浅层特征。可以观察到一些局部内容损坏和杂乱的纹理(图 5 的最后一列)。我们的 AdaAttN 可以有效利用浅层特征,生成令人愉悦的风格化结果。
通过参考以前的工作[28, 6],我们探讨了通过平均不同风格的均值和标准差图来插值多个风格图像,然后将合并后的均值和方差用于调节内容特征进行解码(图 8)。
除了风格插值,我们还可以通过将多个风格图像拼接成一张图像并输入到 AdaAttN 中来实现多风格迁移(图 9)。从这些结果中,我们可以看到 AdaAttN 可以灵活支持各种运行时控制,得到合理的输出结果。