keras如何实现图像风格转换-
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
下面是content loss函数的定义。
l
代表第l层的特征表示,p
是原始图片,x
是生成图片。公式的含义就是对于每一层,原始图片生成特征图和生成图片的特征图的一一对应做平方差。
3. 风格损失函数 - style loss
在定义风格损失函数之前首先定义一个Gram矩阵。
F
是生成图片的特征图。上面式子的含义:Gram第i行,第j列的数值等于把生成图在第l
层的第i
个特征图与第j
个特征图分别拉成一维后相乘求和。
上面是风格损失函数,
Nl
是指生成图的特征图数量,Ml
是图片宽乘高。a
是指风格图片,x
是指生成图片。G
是生成图的Gram矩阵,A
是风格图的Gram矩阵,wl
是权重。
4. 总损失
总损失函数如下,
alpha
与beta
比例为1*10^-3
或更小。
代码讲解
1. 图片预处理和还原
2. content loss
3. style loss
结果
可以看出效果每一代都有进步,因为自己的显卡渣,跑一代估计要1.5个小时,自己测试的时候总共跑了14个小时,不过这里有个技巧,就是可以把上一代的图片继续做输入,这样中途有什么事就可以停止。下次只要把上次输出的图片当输入就可以。
vgg16模型加载原项目的权值。
具体项目代码可见githua上的代码、权值文件和测试图片,因为中途修改过,可能有些地方需要改过来,不过代码比较简单,估计很快就可以找到问题了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
文章题目:keras如何实现图像风格转换-
转载来于:http://hbruida.cn/article/joscce.html