Neural Style Transfer


风格转移

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

基本思想

有两张图片,我们关注一张图片的内容(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

Please enable JavaScript to view the comments powered by Disqus.

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

时间: 2024-10-17 03:24:41

Neural Style Transfer的相关文章

谈谈图像的style transfer(二)

总说 主要从几个方面来进行说明吧 - 加快transfer的速度 - 让transfer的效果看起来更加visual-pleasing - 其他的一些方面 - 用GAN来做 加快style stransfer 谈谈图像的Style Transfer(一) 这里写了 Neural style以及fast neural style. 在超越fast style transfer--任意风格图和内容图0.1秒出结果已经可以将转换做到实时.这篇的一个主要的问题是耗费的大部分时间是在提取隐藏层的patch

图像风格转换(Image style transfer)

图像风格转换是最近新兴起的一种基于深度学习的技术,它的出现一方面是占了卷积神经网络的天时,卷积神经网络所带来的对图像特征的高层特征的抽取使得风格和内容的分离成为了可能.另一方面则可能是作者的灵感,内容的表示是卷积神经网络所擅长,但风格却不是,如何保持内容而转换风格则是本文所要讲述的. 本篇属于论文阅读笔记系列.论文即[1]. 引入 风格转换属于纹理转换问题,纹理转换问题在之前采用的是一些非参方法,通过一些专有的固定的方法来渲染. 传统的方法的问题在于只能提取底层特征而非高层抽象特征.随着CNN的

CS231n assignment3 Q4 Style Transfer

"Image Style Transfer Using Convolutional Neural Networks" (Gatys et al., CVPR 2015). 复现这一篇论文中的代码 loss由三部分组成,内容loss,风格loss,正则化loss,其中风格loss使用gram矩阵. Content loss def content_loss(content_weight, content_current, content_original): ""&q

【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks

作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作卷积神经网络风格迁移. 这不是“暮光女”克里斯丁的研究方向吗?!连好莱坞女星都开始搞人工智能发paper,真是热的可见一斑! 这篇文章中讲述了如何用深层卷积神经网络来将一张普通的照片转化成一幅艺术风格的画作(比如梵高的星夜),可以看做是DL(deep learning)在NPR(非真实渲染non p

风格迁移(2)-Fast Style Transfer

X为输入图片 fw 风格迁移的网络 yc就是X ys是风格后的图片 y帽为输入图片X经过fw 风格迁移的网络生成的图片 y帽在内容上与yc相类似,在风格上与ys相类似. Fast Style Transfer的训练步骤如下: 1 输入一张图片x到fw中得到结果y帽 2 将y帽与yc输入到loss network(VGG-16)中,计算它的relu3_3的输出,并计算它们的均方误差作为content loss 3 将y帽与ys输入到loss network(VGG-16)中,计算它的relu1_2

OpenCv dnn模块扩展研究(1)--style transfer

一.opencv的示例模型文件 使用Torch模型[OpenCV对各种模型兼容并包,起到胶水作用], 下载地址: fast_neural_style_eccv16_starry_night.t7 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models/eccv16/starry_night.t7 和 fast_neural_style_instance_norm_feathers.t7 http://cs.stanford.e

Perceptual losses for real-time style transfer and super-resolution(by_xiao jian)

Perceptual losses for real-time style transfer and super-resolution,2016 ECCV https://cs.stanford.edu/people/jcjohns/eccv16/ 官方源码Torch:https://github.com/jcjohnson/fast-neural-style 其他程序Tensorflow:https://github.com/lengstrom/fast-style-transfer,实现细节

[C6] Andrew Ng - Convolutional Neural Networks

About this Course This course will teach you how to build convolutional neural networks and apply it to image data. Thanks to deep learning, computer vision is working far better than just two years ago, and this is enabling numerous exciting applica

(转) Learning Deep Learning with Keras

Learning Deep Learning with Keras Piotr Migda? - blog Projects Articles Publications Resume About Photos Learning Deep Learning with Keras 30 Apr 2017 ? Piotr Migda? ? [machine-learning] [deep-learning] [overview] I teach deep learning both for a liv