keras如何实现图像风格转换-

keras如何实现图像风格转换 -,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联公司是一家集网站建设,南澳企业网站建设,南澳品牌网站建设,网站定制,南澳网站建设报价,网络营销,网络优化,南澳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

前言

说到深度学习的应用,第一个想到的就是Prisma App的图像风格转换。既然感兴趣就直接开始干,读了论文,一知半解;看了别人的源码,才算大概了解的具体的实现,也惊叹别人的奇思妙想。

  1. 论文可以参考【A Neural Algorithm of Artistic Style】,网上也有中文的版本。

    http://arxiv.org/abs/1508.06576

  2. 使用的工具:py34、keras1.1.2、theano0.8.2、GeForce GT 740M (CNMeM is disabled, cuDNN not available)。

实现原理

1. 总流程

  • 实现流程如下,可以看到这里总共分为5层,本次实验使用vgg16模型实现的。
    keras如何实现图像风格转换 -

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

2. 内容损失函数 - Content Loss

  • 下面是content loss函数的定义。
    keras如何实现图像风格转换 -

  • l代表第l层的特征表示,p是原始图片,x是生成图片。公式的含义就是对于每一层,原始图片生成特征图和生成图片的特征图的一一对应做平方差。

3. 风格损失函数 - style loss

  • 在定义风格损失函数之前首先定义一个Gram矩阵。
    keras如何实现图像风格转换 -

  • F是生成图片的特征图。上面式子的含义:Gram第i行,第j列的数值等于把生成图在第l层的第i个特征图与第j个特征图分别拉成一维后相乘求和。
    keras如何实现图像风格转换 -

keras如何实现图像风格转换 -

  • 上面是风格损失函数,Nl是指生成图的特征图数量,Ml是图片宽乘高。a是指风格图片,x是指生成图片。G是生成图的Gram矩阵,A是风格图的Gram矩阵,wl是权重。

4. 总损失

  • 总损失函数如下,alphabeta比例为1*10^-3或更小。
    keras如何实现图像风格转换 -

代码讲解

1. 图片预处理和还原

keras如何实现图像风格转换 -

2. content loss

keras如何实现图像风格转换 -

3. style loss

keras如何实现图像风格转换 -

结果

keras如何实现图像风格转换 -

keras如何实现图像风格转换 -

keras如何实现图像风格转换 -

  1. 可以看出效果每一代都有进步,因为自己的显卡渣,跑一代估计要1.5个小时,自己测试的时候总共跑了14个小时,不过这里有个技巧,就是可以把上一代的图片继续做输入,这样中途有什么事就可以停止。下次只要把上次输出的图片当输入就可以。

  2. vgg16模型加载原项目的权值。

  3. 具体项目代码可见githua上的代码、权值文件和测试图片,因为中途修改过,可能有些地方需要改过来,不过代码比较简单,估计很快就可以找到问题了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


文章标题:keras如何实现图像风格转换-
标题路径:http://pwwzsj.com/article/joscce.html