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)
整个 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 网络框架
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. 关键代码
有时间再补充 ...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。