1
头图

0. 文章、代码

Paper : https://arxiv.org/pdf/2108.03...
Code : https://github.com/huage001/a...

1. 论文做了什么

  • 提出问题:之前的方法没有考虑浅层特征,或者只考虑了全局信息没有考虑局部信息,导致输出不自然或者不好的局部扭曲。(参照AdaIN和SANet)
  • 解决方法:提出了新的 Attention and normalization 模块,目标对象是 “点”。并且还提出了新的局部特征丢失算法。

2. 用到的数学符号

\(I_c\) : 内容图片 (Image);
\(I_s\) : 风格图片;
\(I_{cs}\) : 内容为 \(c \),风格为 \(s \) 的风格化图片;
\( F^x_{*} \) : 从 VGG 中 ReLU-x_1 层提取的特征 (Feature),此时 VGG 输入为 \(I_* \),* 表示可以为内容(c)或风格(s);
\( F^{1:x}_* \) : 将当前层 \(x\) 的特征与之前的下采样特征连接起来得到,即

$$ F^{1:x}_{*} = D_x(F^1_{*})\oplus D_x(F^2_{*})\oplus \cdots \oplus F^x_{*} $$

其中, \(D_x \) 代表双线性插值层,它将输入特征下采样为与 \(F^x_{*} \) 相同形状,\(\oplus \)指的是沿通道维度的串联操作;

\(F^{x}_{cs} \) : AdaAttN模块在第 \(x\) 层 的嵌入特征 (原文中写的是第 \(l\) 层),即

$$ F^x_{cs} = AdaAttN(F^x_c,F^x_s,F^{1:x}_c, F^{1:x}_s). $$

\(I_{cs} \) : 内容为c,风格为s的风格化结果,可表示为

$$ I_{cs}=Dec(F^3_{cs}, F^4_{cs}, F^5_{cs}). $$

3. 论文核心(Adaptive Attention Normalization)

image.png

整个 Adaptive Attention Normalization 分为三步计算。

3.1. 从浅层到深层计算内容特征和风格特征Attention Map(红色框)

为了计算第 \( x\) 层的attention map A,将 Q, K, V 的值表示为:

$$ Q=f(Norm(F^{1:x}_c)), \\ K=g(Norm(F^{1:x}_s),\\ V = h(F^x_s) \\ $$

其中,\( f, g, h\) 是 \( 1\times 1 \) 可学习的卷积层。\(Norm \) 是 Instance Normlization。
Attention map A 的计算方式为:

$$ A = Softmax(Q^T \otimes K) $$

其中,\(\otimes\)表示矩阵乘法。

3.2. 计算风格特征的加权平均值图和加权标准方差图(蓝色框)

Attention-weighted mean \( M \in R^{C\times H_cWc} \)计算公式为:

$$ M = V \otimes A^T $$

其中,\( A\in R^{H_cW_c\times H_sW_s} \),\( V\in R^{C\times H_sW_s} \)。

Attention-weighted standard deviation \( S\in R^{C\times H_cW_c} \)计算公式为:

$$ S=\sqrt{(V\cdot V)\otimes A^T-M\cdot M} $$

其中,\( \cdot \) 表示元素乘积。

3.3. 自适应规范化内容特征,以实现每个点的特征分布对齐(黄色框)

$$ F^x_{cs} = S\cdot Norm(F^x_c)+M. $$

4. 文章详细分析

4.1 网络框架

image.png

Encoder : 使用预训练的 VGG-19 作为 Encoder 来特征提取多尺度的feature maps。
Decoder : 设计遵从AdaIN,采用与 VGG-19 对称的结构。

分别在 ReLU3_1,ReLU4_1,ReLU5_1 上做AdaAttN。

4.2. 损失函数

总损失函数:

$$ \mathcal L = \lambda_g \mathcal L_{gs} + \lambda_l \mathcal L_{lf} $$

其中,\( \mathcal L_{gs} \) 是 global style loss,\( \mathcal L_{lf} \) 是 local feature loss。实验中,\( \lambda_g=10 \),\( \lambda_l=3 \)。

$$ \mathcal L_{gs}=\sum^5_{x=2}(\| \mu(E^x(I_{cs}))-\mu(F^x_s) \|_2 + \| \sigma(E^x(I_{cs}))-\sigma(F^x_s) \|_2) $$

其中,\( x \) 表示层数,\( E() \) 表示 Encoder 在当前层的 feature。\(\mu \) 表示求均值,\(\sigma \) 表示求方差。

$$ \mathcal L_{lf}=\sum^5_{x=3}\| E^x(I_{cs})-AdaAttN^*(F^x_c,F^x_s,F^{1:x}_c, F^{1:x}_s) \|_2 $$

这里的 \( AdaAttN^{*} \)与前面的区别是不含可学习的 \( 1\times 1 \) 卷积。

4.3. 对于视频迁移额外的损失函数

对于视频风格迁移,使用余弦相似性计算 Attention Map :

$$ A_{i,j}=\frac{S_{i,j}}{\sum_j S_{i,j}}, S_{i,j}=\frac{Q_i \cdot K_j}{\|Q_i\|\times \|K_j\|}+1 $$

设计了一种新的跨图像的相似性损失,用于正则化两幅内容图像 \(c_1, c_2\) 之间的相关内容:

$$ \mathcal L_{is}=\sum^4_{x=2}\frac{1}{N^x_{c_1}N^x_{c_2}}\sum_{i,j}| \frac{D^{i,j,x}_{c_1,c_2}}{\sum_iD^{i,j,x}_{c_1,c_2}}-\frac{D^{i,j,x}_{cs_1,cs_2}}{\sum_iD^{i,j,x}_{cs_1,cs_2}}|, \\ D^{i,j,x}_{u,v}=1-\frac{F^{x,i}_u \cdot F^{x,j}_v}{\| F^{x,i}_u \| \times \| F^{x,j}_v \|} $$

其中,\(N^x_c\) 是层 ReLU-\(x\)_1 的内容特征图 \(F^x_c\) 中的空间维度大小;\(F^{x,i}_{*}\) 表示 \(F^x_{*}\) 的第 \(i\) 个位置的特征向量;\(D^{i,j,x}_{u,v} \) 测量 \(F^{x,i}_{u} \) 和 \(F^{x,i}_{v} \) 余弦距离。实验中,该损失的权重 \(\lambda_{is}=1000\)。

4.3. 实验细节

内容图片数据集:MS-COCO
风格图片数据集:WikiArt
图像按 \(512 \times 512\) 进行加载,然后随机裁剪到 \(256 \times 256\)
图像风格迁移 batch size = 8,视频风格迁移 batch size = 4,进行50k次迭代。

5. 关键代码

有时间再补充 ...


橙茗
26 声望5 粉丝

python c