Post Processing with Fast Neural Style Transfer in Unity | Unity中快速神经风格迁移后处理

1 NNPP with FNST 快速神经风格迁移后处理

承接上文用GAN训练后处理,其实那篇也算是一种风格迁移吧,只不过风格损失函数在NST中定义为最大均值差,在GAN中定义为一个熵,用discriminator表示。

源码详见笔者的Github项目NeuralNetworkPostProcessing

2 Fast Neural Style Transfer

基本上是基于Perceptual Losses for Real-Time Style Transfer and Super-Resolution这篇文章,

 

与Gatsy最早的文章A Neural Algorithm of Artistic Style不同的是,本文提出用一个神经网络做生成器,训练时候loss函数与原来一样,区别在于更新的不是loss network的输入图片,而是生成器的权重。这样生成好的生成器就可以离线将图片生成为风格化图片

 

和pix2pix很像了,pix2pix的generator就是FNST的transform net,pix2pix的discriminator就是FNST的loss network。区别只是loss的计算方式,FNST是最大均值差,pix2pix中discriminator就是一个熵的计算器

3 实现

和上文很相似,不过这里tranformnet/generator相对更复杂一点
甚至原文中transform net有3层conv,3层deconv和5层residual block
不过本文这里为了加快离线运算,只用了3层conv,3层deconv和2层residual block,filter数量也减少了三倍
大概34层,5万个参数
最后512*512在GTX980上大概能到20FPS吧,仍然比较慢,而且效果还不是很好。只能说目前可能算力还达不到了。
至于实现方法,是原生Compute Shader的,并没有用Caffe2Go的CPU方法或者cudnn加速库。除了Conv2d的实现稍微绕以外,只写正向传播一点也不复杂。

参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注