码迷,mamicode.com
首页 > 其他好文 > 详细

Neural Style Transfer

时间:2020-02-08 11:28:34      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:相关   led   sso   table   The   接下来   lin   过程   min   

技术图片

风格转移

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

技术图片

基本思想

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

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

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

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

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

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

loss定义

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

其中$alpha$和$beta$是超参数

技术图片

ContentLoss

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

$overrightarrow{p}$: 原始图像

$overrightarrow{x}$: 生成图像

$l$: VGG net的第$l$层

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

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

ContentLoss定义为

误差对$l$层每一激活值的偏导

这一步偏导好求,就是当$F^l_{ij}<0$时偏导是0,文中没有做解释

StyleLoss

$overrightarrow{a}$: 原始图像

$overrightarrow{x}$: 生成图像

$l$: VGG net的第$l$层

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

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

第$l$层的StyleLoss定义为

TotalStyleLoss定义为

误差对$l$层每一激活值的偏导

接下来是推导过程

考虑这个式子$frac{partial{G^l_{mn}}}{partial{F^l_{ij}}}$

当$mneq i,nneq i$时,上式为0

当$m=i,nneq i$时,上式为$F_{nj}$

当$mneq i,n=i$时,上式为$F_{mj}$

当$m=i,n=i$时,上式为$F_{ij}$

利用Gram矩阵的对称性得

论文实现

link

Content Style Generate
技术图片 技术图片 技术图片
技术图片 技术图片 技术图片
技术图片 技术图片 技术图片

Acknowledgement

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

Neural Transfer with PyTorch

Neural Style Transfer

标签:相关   led   sso   table   The   接下来   lin   过程   min   

原文地址:https://www.cnblogs.com/lijianming180/p/12275661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!