DeepLearning-风格迁移(Neural-Style)

笔者小白最近发现Neural-Style做出来的效果非常神奇。这里把我学习到的一些信息记录下来。

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。

这里写图片描述

这里写图片描述

content loss

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

这里写图片描述

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

这里写图片描述

Style Loss

这里写图片描述

那么每一层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
代码地址一:https://github.com/jcjohnson/neural-style
代码地址二:https://github.com/fchollet/keras/blob/master/examples/neural_style_transfer.py

根据上述代码二,笔者小白在实验机上学习了测试程序,测试程序的环境配置请参考
资料3的地址。

实验结果如下:
这里写图片描述

原图1:

这里写图片描述

风格图2:

这里写图片描述

迭代10次之后的效果图3:

这里写图片描述

参考资料:
1、http://blog.csdn.net/elaine_bao/article/details/50502929 2017.9.25
2、http://blog.csdn.net/victoriaw/article/details/71663332 2017.9.25
3、http://blog.csdn.net/hungryof/article/details/52037405 2017.9.25
4、http://blog.csdn.net/u011129494/article/details/47708015 2017.9.25
5、https://zhuanlan.zhihu.com/p/24102375 2017.9.11
6、http://www.jianshu.com/p/8f8fc2aa80b3 2017.9.11

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值