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:=G−∂∂GJ(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])2∑k=1nC[l]∑k′=1nC[l](Gkk′[l](S)−Gkk′[l](G))2

从而:

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