neural style论文解读
相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes
敬请多多关注哈~~~
概述
在艺术领域,艺术家可以通过风格和内容的相互交融来创作不同的画作,现阶段,在深度神经网络的帮助下,计算机可以轻易的识别画作中的物体或者内容。但是,风格是一个比较抽样的概念,计算机其实无法像人类那样识别一个画作或者艺术家的风格。这篇文章主要介绍深度神经网络将画作中的风格和内容本身进行分离,并将风格做迁移,应用到另一个图片内容之中,最终达到一个风格迁移的工作。其实这很像Photoshop中的滤镜,然而滤镜毕竟是人为设定好的一系列动作处理集合,只能针对特定风格的图片,对于不同特征的图片,需要选择不同的滤镜,因此是比较机械和人工的。
卷积神经网络在图像识别领域应用广泛,并且实践证明有很好的效果。它通过一个多层的网络结构来对图像进行特征表达,如果我们把输入图像称之为网络的底层,则随着网络层次的加深,高层的网络关注图片的高级特征,例如图像的内容或者物体的排列,而底层的信息则重点关注图像像素级别的特征。为了将图像的风格和内容分离并进行迁移,我们需要做两部分工作:
- 图像内容的重建
- 风格的重建
同时在合成是要同时考虑内容重建造成的loss和风格重建造成的loss。
内容重建
内容重建和风格重建都使用了VGG网络,VGG-16的网络结构图参见下图,详情图来自于这里.

对于内容重建来说,只使用了前5层的网络‘conv1 1’ (a), ‘conv2 1’ (b), ‘conv3 1’ (c), ‘conv4 1’ (d) and ‘conv5 1’ (e),即图2中的a、b、c、d、e。VGG 网络主要用来做内容识别,在实践中作者发现,使用前三层a、b、c已经能够达到比较好的内容重建工作,d、e两层保留了一些比较高层的特征,丢失了一些细节。

风格重建
与内容重建有所区别的是,作者使用各个卷基层的组合来进行重建,具体使用的网络结构如下:
- ‘conv1_1’ (a)
- ‘conv1_1’ and ‘conv2_1’ (b)
- ‘conv1_1’, ‘conv2_1’ and ‘conv3_1’ (c)
- ‘conv1_1’, ‘conv2_1’, ‘conv3_1’ and ‘conv4_1’ (d)
- ‘conv1_1’, ‘conv2_1’, ‘conv3_1’, ‘conv4_1’
and ‘conv5_1’ (e)
这样构建的网络能够识别图像的风格信息,而忽略图像中的内容。
风格与内容的权衡
这篇文章的主要发现是我们可以通过CNN将图像的内容和风格进行分离,然后通过和其他图像内容、风格的重组来创作风格迁移的图像。
当然,风格和内容并不是完全可以分离开的,在图像的分离和重建时,我们要权衡更看重内容重建还是风格的重建,如果注重风格重建,则新生成的图像风格上会更符合我们的要求,但是内容上可能丢弃的内容比较多。同理,如果注重内容重建,则新的图像内容上是清晰可辨识的,但是风格上可能达不到我们的要求。图3是权衡风格和内容不同的比例得到的结果:

图3中,从第一列到第四列风格与内容的权重比例由高到低,第一列表示我们更看重风格,可以看到,我们看到的图像基本就是艺术风格,根本分不清建筑物,随着比例由高到低,建筑物逐渐变得清晰起来,第五列基本达到了我们想要的效果。
Methods
实践中发现,使用average pooling比max pooling效果要好一点。具体来说,对于内容重建和风格重建,分别构建Loss。对于内容重建来说,利用一张白噪音图片去拟合原始图像中的内容,定义Loss为:

其中F为白噪音图像在L层的数据表示,P为原始数据在L层的表示,Loss为square loss。
对于风格重建,和Content Loss类似,不过如之前讨论,最后的Loss是之前各层的Loss之和。

其中G为白噪音图像在L层的数据表示,A为原始数据在L层的表示。
最后,为了将图像风格和内容进行迁移,我们定义最后的Loss为Content loss 和 style loss之和,权重分别为alpha何beta,如公式3所示:

neural style论文解读的更多相关文章
- Neural Style论文笔记+源码解析
引言 前面在Ubuntu16.04+GTX1080配置TensorFlow并实现图像风格转换中介绍了TensorFlow的配置过程,以及运用TensorFlow实现图像风格转换,主要是使用了文章A N ...
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...
- NIPS2018最佳论文解读:Neural Ordinary Differential Equations
NIPS2018最佳论文解读:Neural Ordinary Differential Equations 雷锋网2019-01-10 23:32 雷锋网 AI 科技评论按,不久前,NeurI ...
- 注意力论文解读(1) | Non-local Neural Network | CVPR2018 | 已复现
文章转自微信公众号:[机器学习炼丹术] 参考目录: 目录 0 概述 1 主要内容 1.1 Non local的优势 1.2 pytorch复现 1.3 代码解读 1.4 论文解读 2 总结 论文名称: ...
- 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...
- 论文解读(DAGNN)《Towards Deeper Graph Neural Networks》
论文信息 论文标题:Towards Deeper Graph Neural Networks论文作者:Meng Liu, Hongyang Gao, Shuiwang Ji论文来源:2020, KDD ...
- 论文解读(LA-GNN)《Local Augmentation for Graph Neural Networks》
论文信息 论文标题:Local Augmentation for Graph Neural Networks论文作者:Songtao Liu, Hanze Dong, Lanqing Li, Ting ...
- 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》
论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...
- 论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》
论文信息 论文标题:Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks论文作者:Mingqi Yang, Ya ...
随机推荐
- Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示
用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件 ...
- Jqgrid的用法总结与分页功能的拓展
这是本人写的第一个与技术相关的博客,但是非挑战技术的,而是对工作的总结,另外加一点点拓展. Jqgrid的功能十分强大,强大到可以做到与数据grid相关的任何功能,同时由于在用的过程中总是不能够一气呵 ...
- [C#]asp.net开发微信公众平台----目录汇总-持续更新
1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...
- OC基础 NSData
OC基础 NSData 1.NSString转NSData //NSString转NSData NSString *string = @"abcd12345"; NSData *d ...
- 在同个类中non-const插入const来减少重复
class A { private: std::string a; public: A(std::string b) :a(b){} const char& operator[](int b) ...
- oracle数据库使用plsql(64位)时出现的问题
64位win7上装PL/SQL,经常会遇见“Could not load "……\bin\oci.dll"”这个错误,我查了一下资料,原因是PL/SQL只对32位OS进行支持,解决 ...
- MSIL
公共字段Add 将两个值相加并将结果推送到计算堆栈上. Add_Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add_Ovf_Un 将两个无符号整数值相加,执行溢出检查,并且将结 ...
- 1234: ZJTZYRC筛offer(并查集 )
链接:http://xcacm.hfut.edu.cn/problem.php?id=1234 以后关于字符的输入都用cin吧,换成scanf居然wa了 #include <iostream&g ...
- jave script 经典排序 - -冒泡排序
有 5个数字,2:3:1:0:4,按大小顺序排列 <script type="text/javascript"> var arr =new Array(); arr . ...
- fontresize 移动端的手机字体 大小设置
这段js 需要置于页面上端 也就是 需要先加载js然后加载页面 (这段js是原生js而且比较短小 基本对页面加载速度无影响) FontResize : function(maxWidth){ (fun ...