您好,登录后才能下订单哦!
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)。
实现流程如下,可以看到这里总共分为5层,本次实验使用vgg16模型实现的。
如上,a有个别名是conv1_1
,b是conv2_1
,依次类推,c,d,e对应conv3_1
,conv4_1
,conv5_1
;输入图片有风格图片style image
和内容图片content image
,输出的是就是合成图片,然后用合成图片为指导训练,但是训练的对象不像是普通的神经网络那样训练权值w
和偏置项b
,而是训练合成图片上的像素点,以达到损失函数不断减少的效果。论文使用的是随机的噪声像素图为初始合成图,但是使用原始图片会快一点。
下面是content loss函数的定义。
l
代表第l层的特征表示,p
是原始图片,x
是生成图片。公式的含义就是对于每一层,原始图片生成特征图和生成图片的特征图的一一对应做平方差。
在定义风格损失函数之前首先定义一个Gram矩阵。
F
是生成图片的特征图。上面式子的含义:Gram第i行,第j列的数值等于把生成图在第l
层的第i
个特征图与第j
个特征图分别拉成一维后相乘求和。
上面是风格损失函数,Nl
是指生成图的特征图数量,Ml
是图片宽乘高。a
是指风格图片,x
是指生成图片。G
是生成图的Gram矩阵,A
是风格图的Gram矩阵,wl
是权重。
总损失函数如下,alpha
与beta
比例为1*10^-3
或更小。
可以看出效果每一代都有进步,因为自己的显卡渣,跑一代估计要1.5个小时,自己测试的时候总共跑了14个小时,不过这里有个技巧,就是可以把上一代的图片继续做输入,这样中途有什么事就可以停止。下次只要把上次输出的图片当输入就可以。
vgg16模型加载原项目的权值。
具体项目代码可见githua上的代码、权值文件和测试图片,因为中途修改过,可能有些地方需要改过来,不过代码比较简单,估计很快就可以找到问题了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。