相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes
敬请多多关注哈~~~

概述

在艺术领域,艺术家可以通过风格和内容的相互交融来创作不同的画作,现阶段,在深度神经网络的帮助下,计算机可以轻易的识别画作中的物体或者内容。但是,风格是一个比较抽样的概念,计算机其实无法像人类那样识别一个画作或者艺术家的风格。这篇文章主要介绍深度神经网络将画作中的风格和内容本身进行分离,并将风格做迁移,应用到另一个图片内容之中,最终达到一个风格迁移的工作。其实这很像Photoshop中的滤镜,然而滤镜毕竟是人为设定好的一系列动作处理集合,只能针对特定风格的图片,对于不同特征的图片,需要选择不同的滤镜,因此是比较机械和人工的。

卷积神经网络在图像识别领域应用广泛,并且实践证明有很好的效果。它通过一个多层的网络结构来对图像进行特征表达,如果我们把输入图像称之为网络的底层,则随着网络层次的加深,高层的网络关注图片的高级特征,例如图像的内容或者物体的排列,而底层的信息则重点关注图像像素级别的特征。为了将图像的风格和内容分离并进行迁移,我们需要做两部分工作:

  • 图像内容的重建
  • 风格的重建

同时在合成是要同时考虑内容重建造成的loss和风格重建造成的loss。

内容重建

内容重建和风格重建都使用了VGG网络,VGG-16的网络结构图参见下图,详情图来自于这里.

图1 VGG网络结构图



对于内容重建来说,只使用了前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两层保留了一些比较高层的特征,丢失了一些细节。

图2 VGG网络结构图

风格重建

与内容重建有所区别的是,作者使用各个卷基层的组合来进行重建,具体使用的网络结构如下:

  • ‘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 VGG网络结构图

图3中,从第一列到第四列风格与内容的权重比例由高到低,第一列表示我们更看重风格,可以看到,我们看到的图像基本就是艺术风格,根本分不清建筑物,随着比例由高到低,建筑物逐渐变得清晰起来,第五列基本达到了我们想要的效果。

Methods

实践中发现,使用average pooling比max pooling效果要好一点。具体来说,对于内容重建和风格重建,分别构建Loss。对于内容重建来说,利用一张白噪音图片去拟合原始图像中的内容,定义Loss为:

公式1

其中F为白噪音图像在L层的数据表示,P为原始数据在L层的表示,Loss为square loss。

对于风格重建,和Content Loss类似,不过如之前讨论,最后的Loss是之前各层的Loss之和。

公式2

其中G为白噪音图像在L层的数据表示,A为原始数据在L层的表示。

最后,为了将图像风格和内容进行迁移,我们定义最后的Loss为Content loss 和 style loss之和,权重分别为alpha何beta,如公式3所示:

公式3

neural style论文解读的更多相关文章

  1. Neural Style论文笔记+源码解析

    引言 前面在Ubuntu16.04+GTX1080配置TensorFlow并实现图像风格转换中介绍了TensorFlow的配置过程,以及运用TensorFlow实现图像风格转换,主要是使用了文章A N ...

  2. ImageNet Classification with Deep Convolutional Neural Networks 论文解读

    这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...

  3. NIPS2018最佳论文解读:Neural Ordinary Differential Equations

    NIPS2018最佳论文解读:Neural Ordinary Differential Equations 雷锋网2019-01-10 23:32     雷锋网 AI 科技评论按,不久前,NeurI ...

  4. 注意力论文解读(1) | Non-local Neural Network | CVPR2018 | 已复现

    文章转自微信公众号:[机器学习炼丹术] 参考目录: 目录 0 概述 1 主要内容 1.1 Non local的优势 1.2 pytorch复现 1.3 代码解读 1.4 论文解读 2 总结 论文名称: ...

  5. 论文解读(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, ...

  6. 论文解读(DAGNN)《Towards Deeper Graph Neural Networks》

    论文信息 论文标题:Towards Deeper Graph Neural Networks论文作者:Meng Liu, Hongyang Gao, Shuiwang Ji论文来源:2020, KDD ...

  7. 论文解读(LA-GNN)《Local Augmentation for Graph Neural Networks》

    论文信息 论文标题:Local Augmentation for Graph Neural Networks论文作者:Songtao Liu, Hanze Dong, Lanqing Li, Ting ...

  8. 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》

    论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...

  9. 论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》

    论文信息 论文标题:Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks论文作者:Mingqi Yang, Ya ...

随机推荐

  1. unity中数据的持久化存储

    unity 提供了PlayerPrefs这个类用于存储游戏数据到电脑硬盘中. 这个类有10个函数可以使用 Class Functions类函数 SetInt Sets the value of the ...

  2. Mysql的Error 1364

    在安装mysql 5.5.8的最后一步,应用安全配置时, 弹出错误对话框, Error Nr.1364 authentication_string 解决办法: 1.暂时不要关闭该窗口,cmd命令,执行 ...

  3. HTML常见标签学习与笔记总结

    HTML其实就是把页面的数据封装并加上标签 表头<head> <title> 浏览器标题栏显示的内容 <base> 有href和target属性,href指定网页中 ...

  4. 自定义 Preference Header 布局

    1. Preference Header 概述: 对于什么是 Preference Header,以及何时使用 Preference Header,请参考我的另一篇博文: 何时使用 Preferenc ...

  5. ECSTORE关于后端FILTER条件的表现形式以及含义。

    cstore关于后端filter条件的表现形式以及含义如下: $FILTERARRAY= ARRAY( 'THAN'=>' > '.$VAR, 'LTHAN'=>' < '.$ ...

  6. DEDE数据库修改

    dede数据库配置文件所在路径为:/data/common.inc.php 修改方法: 下面是该dede数据库配置文件的内容: <?php //数据库连接信息 $cfg_dbhost = 'lo ...

  7. MapDB:专为Java设计的高性能的数据库

    MapDB是一个快速.易用的嵌入式Java数据库引擎,它提供了基于磁盘或者堆外(off-heap允许Java直接操作内存空间, 类似于C的malloc和free)存储的并发的Maps.Sets.Que ...

  8. Pyzo -- 好用的 Python 轻量级 IDE

    近期 yvivid 使用 Python 进行科学计算类应用(如matlab部分应用场景) 比较好的 发行版本为 Anaconda: A free distribution for the SciPy ...

  9. .cshrc

    使用set和setenv命令可以设置shell选项或者列出shell变量 在C Shell 里, set 定义局部变量, setenv定义全局变量   1.set   set 变量名 = 内容: s2 ...

  10. Responder一点也不神秘————iOS用户响应者链完全剖析

    一.事件分类 对于IOS设备用户来说,他们操作设备的方式主要有三种:触摸屏幕.晃动设备.通过遥控设施控制设备.对应的事件类型有以下三种: 1.触屏事件(Touch Event) 2.运动事件(Moti ...