Skip to content

DeepLearning笔记(12)——风格迁移

1. 风格迁移

2. 算法

具体可以参考论文 A Neural Algorithm of Artistic Style

  • C:内容图
  • S:风格图
  • G:生成图

定义代价函数:

J(G)=αJcontent(C,G)+βJstyle(S,G)

算法过程为:

  1. 随机生成G
  2. 使用梯度下降来减小 J(G),即 G:=GGJ(G)

3. 内容代价函数

  • 选取中间层 l,不要太浅的网络层,也不要太深的网络层
  • 使用预训练好的卷积网络,例如VGG
  • 计算激活值 a[l](C)a[l](G)
  • Jcontent(C,G)=∣∣a[l](C)a[l](G)2

4. 风格代价函数

对于卷积网络的中间层 l 层,我们可以计算它的风格矩阵。

  • aijk[l] 表示第 l 层某一点的激活值(a[l] 尺寸为 nH[l]×nW[l]×nC[l]
  • G[l] 表示第 l 层的风格矩阵。G[l] 尺寸为 nC[l]×nC[l],其中每一项表示两个通道之间的相关性

则:

Gkk[l]=i=1nH[l]j=1nW[l]aijk[l]aijk[l]

G[l](S) 表示风格图的风格矩阵,G[l](G) 表示生成图的风格矩阵,则:

Jstyle[l](S,G)=1(2nH[l]nW[l]nC[l])2∣∣G[l](S)G[l](G)2=1(2nH[l]nW[l]nC[l])2k=1nC[l]k=1nC[l](Gkk[l](S)Gkk[l](G))2

从而:

Jstyle(S,G)=lλ[l]Jstyle[l](S,G)