转载

我是如何用TensorFlow 做出属于自己的Prisma的?

编者按: 本文作者牟中强,雷锋网 (搜索“雷锋网”公众号关注) 硬创公开课群友。

最近人工智能图片滤镜软件Prisma 非常的火,这款图片处理的App 综合了人工神经网络技术(neural networks)和人工智能技术,可以获取著名绘画大师和主要流派的艺术风格,然后对照片进行智能风格化处理,将图片转化为艺术化的效果。

我是如何用TensorFlow 做出属于自己的Prisma的?

PRISMA

于是手痒,自己也想DIY 出一款属于自己的Prisma。相比APP,在电脑上实现这项功能略微繁琐一些,不过通过这样的方式,我们可以:

1、随意选择想要转化风格的图片;

2、拥有灵活可以变动的参数,大力出奇迹;

3、在使用过程中感兴趣的读者可以通过Python源代码研究其原理。

这个好比傻瓜相机以及单反,也许我们可以用单反去发掘其中更深层的奥妙,甚至做出更惊艳的作品。

介绍:

在开工之前,我们先介绍一下该项目。 该项目最先是图宾根大学的一篇论文“A Neural Algorithm of Artistic Style”引出,简单来说它是通过卷积神经网络(CNN)学习了一副画的风格,并将这幅画的风格应用到另一幅图片上。

我是如何用TensorFlow 做出属于自己的Prisma的?

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的中文手册:

我是如何用TensorFlow 做出属于自己的Prisma的?

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

我是如何用TensorFlow 做出属于自己的Prisma的?

(处理效果图1)

我是如何用TensorFlow 做出属于自己的Prisma的?

(处理效果图2)

5、进阶修改:

当然项目中还有很多其他参数可以摸索,可能会将图片优化的更漂亮:

比如:

--iterations    修改迭代次数(默认为1000)

--content_weight   照片权重

--style_weight  风格图片权重

--learning_rate  学习步长

更多的参数可以通过输入下面代码查找:

python neural_style.py --help

好戏在后头:

由于现在算法中有很多可调的参数,现在并不是一个被完全优化好的状态,所以希望读者们多试试里面的参数。

当然简单的山寨并没有什么意思,所以借助这个项目,我们可以做些独特的,Prisma完全做不到的东西,这里我做了两个小Demo,抛砖引玉。

1、分解计算机学习过程:

之前有网友询问,这种方式训练次数有什么不同效果,于是我做了一个小视频,没训练一次就把图像生成出来,这样我们就可以看到整个训练的过程了。

http://player.youku.com/embed/XMTY2NTc5NjkwMA

2、生成有艺术风格的视频:

一张图片的转化还不足以秒杀朋友圈。没关系,视频转换的道理是一样的,经过一些处理,我们可以将视频也转换成艺术风格:

处理时间比较长,所以我只做了一个短视频, 原视频地址:

http://player.youku.com/embed/XNzUwNzEwNTQw

风格转化后视频地址:

http://player.youku.com/embed/XMTY2ODA0NzE3Ng

看上去还是挺酷的。

参考链接:

[1]AI修图艺术:Prisma背后的奇妙算法 | 深度

[2]A Neural Algorithm of Artistic Style 论文

原文  http://www.leiphone.com/news/201608/uEzpGJuZdwD1fv3E.html
正文到此结束
Loading...