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