风格迁移 Style transfer
Posted 莫失莫忘Lawlite
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了风格迁移 Style transfer相关的知识,希望对你有一定的参考价值。
- 本文个人博客访问地址: 点击查看
一、介绍
- 将一张图片的艺术风格应用在另外一张图片上
- 使用深度卷积网络CNN提取一张图片的内容和提取一张图片的风格, 然后将两者结合起来得到最后的结果
二、 方法
- 我们知道 CNN
可以捕捉图像的高层次特征,如上图所示,内容图片经过CNN
可以得到对应的图像表述(representation
, 就是经过卷积操作的feature map
),然后经过重构可以得到近似原图的效果
- 特别是前面几层经过重构得到的结果和原图更接近,也说明前几层保留的图片细节会更多,因为后面还有pooling
层,自然会丢弃调一些信息
- 这里的网络使用的是VGG-16
(如下图),包含 13
个卷积层,3
个全连接层
1、内容损失
- 假设一个卷积层包含
Nl
N
l
个过滤器
filters
,则可以得到 Nl N l 个feature maps
,假设feature map
的大小是 Ml M l (长乘宽),则可以通过一个矩阵来存储l
层的数据 Fl∈RNl×Ml F l ∈ R N l × M l
-
Fli,j
F
i
,
j
l
表示第
l
层的第i
个filter
在j
位置上的激活值
-
Fli,j
F
i
,
j
l
表示第
- 所以现在一张内容图片
p→
p
→
,一张生成图片
x→
x
→
(初始值为高斯分布), 经过一层卷积层l可以得到其对应的特征表示:
Pl
P
l
和
Fl
F
l
, 则对应的损失采用均方误差:
Lcontent(p→,x→,l)=12∑ij(Flij−Plij)2
L
c
o
n
t
e
n
t
(
p
→
,
x
→
,
l
)
=
1
2
∑
i
j
(
F
i
j
l
−
P
i
j
l
)
2
-
F
F
和 是两个矩阵,大小是
Nl×Ml
N
l
×
M
l
,即
l
层过滤器的个数 和feature map
的长乘宽的值
-
F
F
和 是两个矩阵,大小是
Nl×Ml
N
l
×
M
l
,即
2、风格损失
- 风格的表示这里采用格拉姆矩阵(
Gram Matrix
): Gl∈RNl×Nl G l ∈ R N l × N l Glij=∑kFlikFljk G i j l = ∑ k F i k l F j k l
- 格拉姆矩阵计算的是两两特征的相关性 , 即哪两个特征是同时出现的,哪两个特征是此消彼长的等,能够保留图像的风格
- ( 比如一幅画中有人和树,它们可以出现在任意位置,格拉姆矩阵可以衡量它们之间的关系,可以认为是这幅画的风格信息 )
假设 a→ a → 是风格图像, x→ x → 是生成图像, Al A l 和 Gl G l 表示在 l l 层的格拉姆矩阵,则这一层的损失为: