文章地址:A Neural Algorithm of Artistic Style

代码:https://github.com/jcjohnson/neural-style

这篇文章我认为可以起个浪漫的名字——每一个人都是梵高。

主要做的一件事情非常有意思。就是例如以下图的等式,通过将a图的style和p图的content进行融合。得到第三幅图x。style+content=styled content



怎么做呢?首先他定义了两个loss。分别表示终于生成的图x和style图a的样式上的loss,以及x和content图p的内容上的loss。α,β是调节两者比例的參数。终于的loss function是两者的加和。

通过optimize总的loss求得终于的x。

Details

所用的CNN网络是VGG-16,利用了它16个卷积层和5个pooling层来生成feature。

如果某一层得到的响应是Fl∈RNl∗Ml,当中Nl为l层filter的个数,Ml为filter的大小。Flij表示的是第l层第i个filter在位置j的输出。

content loss

如果p和x在CNN中的响应分别为Pl和Fl。将他们内容上的loss表示成每一个pixel的二范数:



则用梯度下降法,content loss对F求导为:

Style Loss

图x的style表示为Gl∈RNl∗Nl,当中Glij=∑kFlik∗Fljk,即CNN同一层不同filter响应的互相关,至于为什么互相关可以表示style,well。I don’t know….

那么每一层style loss为



当中style图a的在CNN中的响应为A。

则总的style loss为每一层的加权和:

Total Loss

在定义好了两个loss的形式以后,又回到了最初的问题,就是最小化总的loss:



要注意的是。不同于一般的CNN优化,这里优化的參数不再是网络的w和b。而是初始输入的一张噪声图片x



终于我们想让他变成右图这样styled content。

Experiments

  1. 对同一张content图片运用不同style的结果例如以下图所看到的,fantastic!!

  2. total loss中α和β的比例:

    从上到下表示的是运用不同conv层的feature进行style,conv1->conv5是一个从总体到局部的过程;

    从左到右表示的是不同的α/β的比例,10−5->10−2是指更注重style还是更强调content。

【每一个人都是梵高】A Neural Algorithm of Artistic Style的更多相关文章

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

    作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...

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

    作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...

  3. 同样级别iOS程序员,为啥比我菜的程序员薪资都比我高?

    前言: 作为程序员,都有一种相同的焦虑——即当一次又一次的新技术浪潮袭来,总会不由自主的拼命跟随,总是担心如果不紧跟新技术的潮流,将会被时代所抛弃. 害怕年龄,害怕平庸,其实只是你在现实里的努力无法支 ...

  4. 人人都可以开发高可用高伸缩应用——论Azure Service Fabric的意义

    今天推荐的文章其实是微软的一篇官方公告,宣布其即将发布的一个支撑高可用高伸缩云服务的框架--Azure Service Fabric. 前两天,微软Azure平台的CTO Mark Russinovi ...

  5. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像

    本文由云+社区发表 作者:董超 导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~ 既然是实战 ...

  6. box-sizing:border-box 将元素的内边距和边框都设定在宽高内计算

    http://www.w3school.com.cn/cssref/pr_box-sizing.asp box-sizing: content-box|border-box|inherit; 值 描述 ...

  7. 瞎谈CNN:通过优化求解输入图像

    本文同步自我的知乎专栏: From Beijing with Love 机器学习和优化问题 很多机器学习方法可以归结为优化问题,对于一个参数模型,比如神经网络,用来表示的话,训练模型其实就是下面的参数 ...

  8. Image Style Transfer:多风格 TensorFlow 实现

    ·其实这是一个选修课的present,整理一下作为一篇博客,希望对你有用.讲解风格迁移的博客蛮多的,我就不过多的赘述了.讲一点几个关键的地方吧,当然最后的代码和ppt也希望对你有用. 1.引入: 风格 ...

  9. [C4W4] Convolutional Neural Networks - Special applications: Face recognition & Neural style transfer

    第四周:Special applications: Face recognition & Neural style transfer 什么是人脸识别?(What is face recogni ...

随机推荐

  1. WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]

    摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html WebService基于SoapHeader实现安全认证[webservice][. ...

  2. 推断是否是有效的IP地址

    #include<stdio.h> #include<string.h> bool isValidIp(char *s) { int len=strlen(s); int i= ...

  3. TCP的状态(SYN,FIN等)

    TCP的标志位有SYN,FIN,RST,ACK,PSH,URG SYN:建立连接. FIN:关闭连接. RST:连接重置. ACK:响应. PSH:有数据传输. URG:urgent紧急. ACK可以 ...

  4. Converter -> public static int ToInt32(double value) 你用对了么?

    Convert.ToInt32()  是我们经常使用的方法,但如果我们写如下的代码,能确定它的输出值么? var x = 7.5; Console.WriteLine(7.5 + ": &q ...

  5. Jconsole

    Jconsole 1.1 简介以及连接 JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,它是Java自带的简单性能监控工具.下面以对tomcat的监控为例,带领大家熟悉Jcon ...

  6. redis学习笔记——RDB、AOF和复制时对过期键的处理

    AOF.RDB和复制功能对过期键的处理 生成RDB文件 在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的RDB文件中.举个例 ...

  7. git使用 ——转

    转自:http://blog.csdn.net/jamesmf/article/details/17483787

  8. VS2013编译boost1.55库

    1. 官网下载最新的Boost库,我的是1.55 2. 在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\det ...

  9. freemarker的list指令小技术归纳

    1.问题:当数据超过3位的时候,freemarker会自动用逗号截取,例如2,311 解决方法(一种即可): (1)加.toString(),如:${(data).toString()} (2)加?c ...

  10. Hibernate关系映射(二) 基于外键的双向一对一

    基于外键的双向一对一关联映射 需要在一端添加<one-to-one>标签,用property-ref来指定反向属性引用. 还是通过刚才用户和地址来演示双向一对一关联. 代码演示 一.实体类 ...