快速风格迁移

风格迁移是CV的一个应用,通过融合风格图片和内容图片,实现图片的风格变换,“人人都是艺术家”
最早在论文《A Neural Algorithm of Artistic Style》中提出,但是这种方法是用“训练”的思想来做风格迁移,每次都要单独训练,速度很慢
快速风格迁移由《Perceptual Losses for Real-Time Style Transfer Super-Resolution》提出,主要是将风格迁移的训练和应用分离,可以快速应用

如https://github.com/hzy46/fast-neural-style-tensorflow 分享了几个案例

以及论文里给的例子

下面说具体原理
1. 图片的风格迁移问题,是给定原始图片风格图片,得到转换了风格的图片的过程
2. 则原始图片表示了内容Content(C);风格图表示了风格Style(S);转换了风格的图片表示生成的图片
快速风格迁移_第1张图片
3. 那么生成目标图片的损失函数就是内容损失风格损失的加权和

J(G)=αJcontent(C,G)+βJstyle(S,G) J ( G ) = α J c o n t e n t ( C , G ) + β J s t y l e ( S , G )

4. 注意到现有的CV模型如VGG16,各个卷积层本质上已经是对图片进行了 特征提取,且高阶的层包含了 内容信息,低阶的层包含了 纹理的信息,各个特种层之间的相关关系表达了 风格信息
5. 内容信息用两个图在某一层的取值差来表示
lϕ,jfeat(ŷ ,y)=1CjHjWjϕj(ŷ )ϕj(y)22 l f e a t ϕ , j ( y ^ , y ) = 1 C j H j W j ‖ ϕ j ( y ^ ) − ϕ j ( y ) ‖ 2 2

ϕ ϕ 表示预训练模型如VGG16;
j j 表示第j个卷积层;
ϕj(x) ϕ j ( x ) 表示图x在模型 ϕ ϕ 的第j层的激活值;
ŷ  y ^ 表示生成图G;
y y 表示原始图C;
CjHjWj C j H j W j 表示特征图的尺寸,分别为通道数、高、宽
6. 风格信息用两个图在某一层的值得Gram矩阵的差值来表示,总的风格信息应有选定的多个层求和得到
lϕ,jstyle(ŷ ,y)=Gϕj(ŷ )Gϕj(y)2F l s t y l e ϕ , j ( y ^ , y ) = ‖ G j ϕ ( y ^ ) − G j ϕ ( y ) ‖ F 2

F F 表示Frobenius norm,F-范数,一种矩阵范数
Gϕj(x) G j ϕ ( x ) 表示图x在模型 ϕ ϕ 的第j层的激活值的Gram矩阵
7. 风格信息包含了颜色、纹理、模式等样式,并期望融合这些样式来表达风格,Gram矩阵最终尺寸为c*c
Gϕj(x)c,c=1CjHjWjh=1Hjw=1Wjϕj(x)h,w,cϕj(x)h,w,c G j ϕ ( x ) c , c ′ = 1 C j H j W j ∑ h = 1 H j ∑ w = 1 W j ϕ j ( x ) h , w , c ϕ j ( x ) h , w , c ′

Gϕj(x)c,c G j ϕ ( x ) c , c ′ 表示特征图中 c,c c , c ′ 两个通道间的Gram矩阵/相关性
ϕj(x)h,w,c ϕ j ( x ) h , w , c 表示图x在模 ϕ ϕ 中第j层的激活值(特征图)的高、宽、通道坐标为h,w,c位置的值
大意为卷积提取了某一方面的特征,如纹理层、颜色层等,通过上式融合不同的特征,两种特征共现越频繁相关性越大、数值越大,以此来表示一个图的风格信息。
8. 最后回到论文的流程图,整体结构 生成网络损失网络组成,前者是要训练的目标,用于风格转移图片;后者用于计算损失;训练王成后,对于同一种风格,可以随意更换内容图片进行风格转移(暂时的理解)
x x 表示输入的图片,这里和 yc y c 一致
fW f W 表示生成网络,权重参数为 W W
ys y s 表示风格图片
ŷ  y ^ 表示风格迁移后的图片
yc y c 表示原始的内容图片,与 x x 一致
快速风格迁移_第2张图片
则此图表示,取其中四个层的结果计算风格,取高阶一个层的结果计算内容。

实践https://zhuanlan.zhihu.com/p/24383274
https://blog.csdn.net/j2IaYU7Y/article/details/79622135
https://blog.csdn.net/u010900574/article/details/53427544

你可能感兴趣的:(机器学习,深度学习)