Loading... # 0x00 之前有一款火爆网络的图像风格转化软件 Prisma,它能将一张普通的图片转成各种艺术风格的图像。现在简单来了解一下背后的算法原理及使用Tensorflow实现一下。 # 0x01 原理简述 2016 CVPR 一篇文章:" Image Style Transfer Using Convolutional Neural Networks"([文章翻译](https://blog.csdn.net/cicibabe/article/details/70885715)) 提出了这种算法。 算法流程图: ![1.png][1] 简单地说就是使用一个训练好的卷积神经网络 VGG-19(19层VGG网络包含16个卷积层和5个池化层),而这个网络在[ImageNet](http://www.image-net.org/)上已经有训练好了的。 假如现在有一张**风格图像**和一张**普通图像**,**风格图像**经过VGG-19 的时候在每个卷积层会得到很多 feature maps, 这些feature maps 组成一个**集合 A**,同样的,**普通图像** 通过 VGG-19 的时候也会得到很多 feature maps,这些feature maps 组成一个**集合 B** ,然后生成一张**随机噪声图像** ,同样 **随机噪声图像** 通过VGG-19 的时候也会生成很多feature maps,这些 feature maps 构成**集合 C** ,最终的优化函数是希望调整 **C** 让 **随机噪声图像** 最后既保持**普通图像** 的内容, 又有一定的**风格图像**的风格。 ![2.png][2] 想要了解更多请阅读原文 " Image Style Transfer Using Convolutional Neural Networks"([文章翻译](https://blog.csdn.net/cicibabe/article/details/70885715)) # 0x02 实现 较好的实现项目: 1. [neural-style](https://github.com/anishathalye/neural-style) *需要性能较好的计算机。512 x 512分辨率的图片使用不同硬件进行1000次迭代性能对比: 1. GTX 1080 ~60s 2. Maxwell Titan X ~90s 3. Intel Core i7-5930K ~1h 2. [fast-neural-style-tensorflow](https://github.com/Rehtt/fast-neural-style-tensorflow) *可以使用预训练模型或自己训练模型,使用预训练的模型在性能较低的计算机上也能较好地实现。 这里使用预训练模型。 Tensorflow安装 克隆项目: ``` git clone https://github.com/Rehtt/fast-neural-style-tensorflow.git ``` 运行: ``` #图像 python eval.py --model_file <wave.ckpt-done模型的路径> --image_file img/test.jpg #视频 python video.py --model_file <wave.ckpt-done模型的路径> --video_file video/test.mp4 --out_video_file video/video.mp4 ``` 详情及训练模型请阅读[说明](https://github.com/Rehtt/fast-neural-style-tensorflow/blob/master/README.md) [1]: /usr/uploads/2019/10/1933913692.png [2]: /usr/uploads/2019/10/843420969.png Last modification:October 24, 2019 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请随意赞赏