Neural Style Transfer

风格转移

这几天看了一篇风格转移的论文,这里大致介绍下论文的内容,并且推到下论文中出现的公式。

这里写图片描述

基本思想

有两张图片,我们关注一张图片的内容(Content)记为C,一张图片的风格(Style)记为S,想要生成一张图片包含C的内容和S的风格,记为G。

那么如何获取图片的C和S那?论文使用训练好的VGG net解决这一问题。

文中使用VGG net的中间层来表示C:对于一张input_image,中间某一输出层shape为 height×width×channel ,将其reshape成 (channel×(heightwidth)) 。这样便得到了C,简单的理解是使用训练好的VGG net对图片进行再编码。为公式推导方便我们记为 FN×M ,N为特征图的数量,M为特征图的大小。

对于S的表示略微复杂:在VGG net的某一层,得到了该层的feature maps,计算这些feature maps的特征相关性feature correlations,就可以得到这一层的“风格表示”,最终的S是多个层的“风格表示”的线性组合。

怎么计算feature correlations那?文中介绍了使用Gram Matrix的方法。

Glij=kFlikFljk
从定义可以看出,Gram阵是对称阵,我们公式推导会多次用到这一性质。

loss定义

论文中定义的Loss是对ContentLoss和StyleLoss进行加权求和。

Ltotal=αLcontent+βLstyle
其中 α β 是超参数 ![NST2.png](../images/NST2.png)

ContentLoss

为公式推到方便,先来定义几个符号

p : 原始图像

x : 生成图像

l : VGG net的第l

Fl : 原始图像在VGG net第 l 层的内容特征表示

Pl: 生成图像在VGG net第 l 层的内容特征表示

ContentLoss定义为

Lcontent(p,x,l)=12i,j(FlijPlij)2
误差对 l 层每一激活值的偏导
LcontentFlij=(FlPl)ij0if Flij>0if Flij<0
这一步偏导好求,就是当 Flij<0 时偏导是0,文中没有做解释

StyleLoss

a : 原始图像

x : 生成图像

l : VGG net的第l

Al : 原始图像在VGG net第 l 层的风格特征表示

Gl: 生成图像在VGG net第 l 层的风格特征表示

l层的StyleLoss定义为

El=14N2lM2li,j(GlijAlij)2
TotalStyleLoss定义为
Lstyle(a,x)=l=0LwlEl
误差对 l 层每一激活值的偏导
ElFlij=1N2lM2l((Fl)T(GlAl))ji0if Flij>0if Flij<0
接下来是推导过程
ElFlij=ElGlGlFlij=m,nNElGlmnGlmnFlij
考虑这个式子 GlmnFlij mi,ni 时,上式为0 当 m=i,ni 时,上式为 Fnj mi,n=i 时,上式为 Fmj m=i,n=i 时,上式为 Fij
m,nNElGlmnGlmnFlij=n,niNElGlinFnj+m,miNElGlmiFmj+2ElGliiFij
n,niNElGlinFnj+ElGliiFij=2[(Gi1Ai1)F1j+(Gi2Ai2)F2j++(GiNAiN)FNj]
m,miNElGlmiFmj+ElGliiFij=2[(G1iA1i)F1j+(G2iA2i)F2j++(GNiANi)FNj]
利用Gram矩阵的对称性得
n,niNElGlinFnj+ElGliiFij=m,miNElGlmiFmj+ElGliiFij
ElFlij=1N2lM2lkN(GlAl)ikFlkj=1N2lM2l((GlAl)Fl)ij=1N2lM2l((Fl)T(GlAl))ji

论文实现

link

Acknowledgement

Image Style Transfer Using Convolutional Neural Networks by Gatys et al. CVPR 2016

Neural Transfer with PyTorch

原文链接

https://jiweibo.github.io/Neural-Style-Transfer/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值