【每个人都是梵高】A Neural Algorithm of Artistic Style

本文转自:http://blog.csdn.net/elaine_bao/article/details/50502929

-----------------------

文章地址: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。 
假设某一层得到的响应是 FlRNlMl ,其中 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表示为 GlRNlNl ,其中 Glij=kFlikFljk ,即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是一个从整体到局部的过程; 
    从左到右表示的是不同的 α/β 的比例, 105 -> 102 是指更注重style还是更强调content。 
    这里写图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值