keras如何实现图像风格转换 -,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
前言
说到深度学习的应用,第一个想到的就是Prisma App的图像风格转换。既然感兴趣就直接开始干,读了论文,一知半解;看了别人的源码,才算大概了解的具体的实现,也惊叹别人的奇思妙想。
论文可以参考【A Neural Algorithm of Artistic Style】,网上也有中文的版本。
http://arxiv.org/abs/1508.06576
使用的工具:py34、keras1.1.2、theano0.8.2、GeForce GT 740M (CNMeM is disabled, cuDNN not available)。
实现原理
1. 总流程
实现流程如下,可以看到这里总共分为5层,本次实验使用vgg16模型实现的。

如上,a有个别名是conv1_1
,b是conv2_1
,依次类推,c,d,e对应conv3_1
,conv4_1
,conv5_1
;输入图片有风格图片style image
和内容图片content image
,输出的是就是合成图片,然后用合成图片为指导训练,但是训练的对象不像是普通的神经网络那样训练权值w
和偏置项b
,而是训练合成图片上的像素点,以达到损失函数不断减少的效果。论文使用的是随机的噪声像素图为初始合成图,但是使用原始图片会快一点。
2. 内容损失函数 - Content Loss
3. 风格损失函数 - style loss

4. 总损失
代码讲解
1. 图片预处理和还原

2. content loss

3. style loss

结果



可以看出效果每一代都有进步,因为自己的显卡渣,跑一代估计要1.5个小时,自己测试的时候总共跑了14个小时,不过这里有个技巧,就是可以把上一代的图片继续做输入,这样中途有什么事就可以停止。下次只要把上次输出的图片当输入就可以。
vgg16模型加载原项目的权值。
具体项目代码可见githua上的代码、权值文件和测试图片,因为中途修改过,可能有些地方需要改过来,不过代码比较简单,估计很快就可以找到问题了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注天达云行业资讯频道,感谢您对天达云的支持。