【风格迁移】Adaptive Instance Normalization(AdaIN)

前言

近几年人脸属性迁移的课题不再是单纯地做跨域迁移,还要考虑迁移后的多样性(mutil-modal),因此这个方向开始跟风格迁移相结合。结合我最近看过的几篇论文,发现它们都使用了同一个零部件——AdaIN,而且截止文本发布时间,据谷歌学术显示,该方法的文献被引用量达到517次,说明该方法受到了研究者们一定的关注。因此我觉得有必要记录一下这个思路的起点,以便以后查阅。

AdaIN

文献全称:Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
文献出处:[C]. international conference on computer vision, 2017: 1510-1519.
数据集: MS-COCO、WikiArt

论文贡献(亮点)

  • 提出了一种自适应实例归一化(AdaIN)层。

实验效果图
其中红框内为该方法的实验效果图。
【风格迁移】Adaptive Instance Normalization(AdaIN)_第1张图片
模型框架图
【风格迁移】Adaptive Instance Normalization(AdaIN)_第2张图片

回顾IN与CIN

Instance Normailization
假设输入图像的4D tensor 为: x ∈ R N × C × H × W x\in {\Bbb R}^{N×C×H×W} xRN×C×H×W,IN会将每个通道的feature map的均值和标准差进行归一化:
I N ( x ) = γ ( x − μ ( x ) σ ( x ) ) + β IN(x)= \gamma(\frac {x-\mu(x)}{\sigma(x)})+\beta IN(x)=γ(σ(x)xμ(x))+β 其中 γ \gamma γ β \beta β是可学习的仿射参数; μ ( x ) \mu(x) μ(x) σ ( x ) \sigma(x) σ(x)分别表示均值和标准差,在空间维度上计算得到,独立于通道和批次。
μ n c ( x ) = 1 H W ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{nc}(x)=\frac {1}{HW}\sum_{h=1}^{H}\sum_{w=1}^Wx_{_{nchw}} μnc(x)=HW1h=1Hw=1Wxnchw σ n c ( x ) = 1 H W ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ n c ( x ) ) 2 + ε \sigma_{nc}(x)=\sqrt{\frac {1}{HW}\sum_{h=1}^{H}\sum_{w=1}^W(x_{_{nchw}}-\mu_{_{nc}}(x))^2+\varepsilon} σnc(x)=HW1h=1Hw=1W(xnchwμnc(x))2+ε
Conditional Instance Normalization
IN是学习一个单一的仿射参数集( γ \gamma γ β \beta β),而CIN则是为每一种风格都学习一个仿射参数集( γ s \gamma^s γs β s \beta^s βs):
C I N ( x ; s ) = γ s ( x − μ ( x ) σ ( x ) ) + β s CIN(x;s)=\gamma^s(\frac {x-\mu(x)}{\sigma(x)})+\beta^s CIN(x;s)=γs(σ(x)xμ(x))+βs 在生成网络中应用CIN层,使用相同的卷积层参数和不同的IN层仿射参数便可以生成不同风格的图像。
但这种方法存在一个弊端,每一对仿射参数( γ \gamma γ β \beta β)对应一层feature map,一种风格则需要2F个参数,F表示整个网络中的feature map总数。因为仿射参数量和风格数成线性关系,这种方法开销较大,很难扩展出大量的风格。

Adaptive Instance Normalization(AdaIN)

与上述方法不同,AdaIN中没有可学习的仿射参数,即仿射参数不是通过学习得到。AdaIN接收两个信息源:内容输入 x \bf x x和风格输入 y \bf y y,将 x \bf x x的通道级(channel-wise)均值和标准差匹配到 y \bf y y的通道级均值和标准差上:
A d a I N ( x , y ) = σ ( y ) ( x − μ ( x ) σ ( x ) ) + μ ( y ) AdaIN({\bf x},{\bf y})=\sigma({\bf y})(\frac {{\bf x}-\mu({\bf x})}{\sigma({\bf x})})+\mu({\bf y}) AdaIN(x,y)=σ(y)(σ(x)xμ(x))+μ(y) 简单地来讲,AdaIN在feature map层面上通过改变特征的数据分布来实现风格迁移,计算开销和存储开销都较小,且易实现。

网络结构

网络结构只是简单的自编码器结构,没有使用到GAN.
内容图像 c c c和任意风格图像 s s s送入编码器 f f f进行编码,然后通过AdaIN层进行整合:
t = A d a I N ( f ( c ) , f ( s ) ) t=AdaIN(f(c),f(s)) t=AdaIN(f(c),f(s)) 然后通过解码器 g g g将整合编码 t t t映射会图像空间。
T ( c , s ) = g ( t ) T(c,s)=g(t) T(c,s)=g(t) 为了保持AdaIN层风格迁移后的数据分布,解码器中不使用任何的归一化层。

损失函数

1.内容损失
L c = ∣ ∣ f ( g ( t ) ) ∣ ∣ 2 L_c=||f(g(t))||_{_2} Lc=f(g(t))2 其中 t t t为AdaIN层的输出,这里计算目标特征和输出图像特征的欧氏距离。
2.风格损失
L s = ∑ i = 1 L ∣ ∣ μ ( ϕ i ( g ( t ) ) ) − μ ( ϕ i ( s ) ) ∣ ∣ 2 + ∑ i = 1 L ∣ ∣ σ ( ϕ i ( g ( t ) ) ) − σ ( ϕ i ( s ) ) ∣ ∣ 2 L_s=\sum_{i=1}^L||\mu(\phi_i(g(t)))-\mu(\phi_i(s))||_{_2}+\sum_{i=1}^L||\sigma(\phi_i(g(t)))-\sigma(\phi_i(s))||_{_2} Ls=i=1Lμ(ϕi(g(t)))μ(ϕi(s))2+i=1Lσ(ϕi(g(t)))σ(ϕi(s))2 其中 ϕ i \phi_i ϕi表示编码器网络中的第i层。

总损失函数
L = L c + λ L s L=L_c+\lambda L_s L=Lc+λLs

总结

AdaIN是在feature map层面上改变数据分布,可以通过控制改变AdaIN层中的仿射参数来实现风格迁移的效果。因为AdaIN层与BN、IN类似,都是在网络内部改变feature map的分布,所以可以把风格迁移的任务交给AdaIN,在网络结构上实现其他的任务。

参考文献

1.Huang X, Belongie S. Arbitrary Style Transfer in Real-Time with Adaptive Instance Normalization[C]. international conference on computer vision, 2017: 1510-1519.

你可能感兴趣的:(研究生任务,深度学习,计算机视觉,深度学习,人工智能)