编者按:本文作者牟中强,雷锋网硬创公开课群友。
最近人工智能图片滤镜软件Prisma 非常的火,这款图片处理的App 综合了人工神经网络技术(neural networks)和人工智能技术,可以获取著名绘画大师和主要流派的艺术风格,然后对照片进行智能风格化处理,将图片转化为艺术化的效果。
PRISMA
于是手痒,自己也想DIY 出一款属于自己的Prisma。相比APP,在电脑上实现这项功能略微繁琐一些,不过通过这样的方式,我们可以:
1、随意选择想要转化风格的图片;
2、拥有灵活可以变动的参数,大力出奇迹;
3、在使用过程中感兴趣的读者可以通过Python源代码研究其原理。
这个好比傻瓜相机以及单反,也许我们可以用单反去发掘其中更深层的奥妙,甚至做出更惊艳的作品。
介绍:
在开工之前,我们先介绍一下该项目。该项目最先是图宾根大学的一篇论文“A Neural Algorithm of Artistic Style”引出,简单来说它是通过卷积神经网络(CNN)学习了一副画的风格,并将这幅画的风格应用到另一幅图片上。
A Neural Algorithm of Artistic Style
CNN 算法是这其中的核心,而针对CNN算法的实现,有很多不同的工具包,其中TensorFlow 配置起来相对比较容易。TensorFlow 是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理,使用该系统可以很容易实现CNN、RNN和LSTM算法,这些算法在人工智能领域,尤其是图像处理方面非常流行。
准备:
在此之前,你需要确保以下两个条件:
1、一台拥有NVIDIA显卡的电脑,台式机笔记本均可(不用显卡也可以实现,不过通过显卡GPU加速效率可以提高20倍左右)
2、电脑中安装了Linux操作系统(最好不要是虚拟机,否则驱动会折腾的让人抓狂)
如果没有接触过Linux的读者要做好折腾的心理准备,Linux驱动并不像Window那么好安装,需要多上网查查资料
实施:
1、安装TensorFlow:
TensorFlow的安装比较简单,具体安装方法可以参考TensorFlow的中文手册:
http://wiki.jikexueyuan.com/project/tensorflow-zh/
2、下载项目:
使用Git下载项目
git clone:https://github.com/harry19902002/image-style-transfor.git
3、下载VGG19网络模型:
VGG19网络模型是由牛津视觉几何组(Visual Geometry Group)开发的卷积神经网络结构,它在视觉方面有着不错的表现,项目中也需要用到VGG19网络模型。
下载地址:http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat
将其下载到项目目录中即可。
4、开始转换:
好了,准备工作基本已经就绪。我们将原始图片以及需要学习风格的图片分别放到项目目录中的Content以及Style文件夹中,用命令行输入:
python neural_style.py --content 原始图片文件名 --styles 风格图片文件名 --out 生成图片文件名
例:python neural_style.py --content ContentFile.jpg --styles StyleFile.jpg --out OutFile.jpg
经过几分钟处理我们可以在out文件夹中找到转换的文件OutFile.jpg
(处理效果图1)
(处理效果图2)
5、进阶修改:
当然项目中还有很多其他参数可以摸索,可能会将图片优化的更漂亮:
比如:
--iterations 修改迭代次数(默认为1000)
--content_weight 照片权重
--style_weight 风格图片权重
--learning_rate 学习步长
更多的参数可以通过输入下面代码查找:
python neural_style.py --help
好戏在后头:
由于现在算法中有很多可调的参数,现在并不是一个被完全优化好的状态,所以希望读者们多试试里面的参数。
当然简单的山寨并没有什么意思,所以借助这个项目,我们可以做些独特的,Prisma完全做不到的东西,这里我做了两个小Demo,抛砖引玉。
1、分解计算机学习过程:
之前有网友询问,这种方式训练次数有什么不同效果,于是我做了一个小视频,没训练一次就把图像生成出来,这样我们就可以看到整个训练的过程了。
2、生成有艺术风格的视频:
一张图片的转化还不足以秒杀朋友圈。没关系,视频转换的道理是一样的,经过一些处理,我们可以将视频也转换成艺术风格:
处理时间比较长,所以我只做了一个短视频,原视频地址:
风格转化后视频地址:
看上去还是挺酷的。
参考链接: