您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
专栏 正文
发私信给技术人攻略
发送

5

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

本文作者:技术人攻略 2016-08-16 22:12
导语:相比APP,在电脑上实现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、分解计算机学习过程:

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

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

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

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

风格转化后视频地址:

看上去还是挺酷的。

参考链接:


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

[2]A Neural Algorithm of Artistic Style 论文

雷锋网原创文章,未经授权禁止转载。详情见转载须知

分享:
相关文章

文章点评:

表情

作者

技术人攻略访谈是关于技术人生活和成长的系列访问,由独立媒体人Gracia创立和维护。报道内容以“人”为核心,通过技术人的故事传递技术梦想;同时以小见大,见证技术的发展和行业的变迁。在这个前所未有的变革时代下,我们的眼光将投向有关:创造力、好奇心、冒险精神,这样一些长期被忽略的美好品质上。相信通过这样一群心怀梦想,并且正脚踏实地在改变世界的技术人,这些美好的东西将重新获得珍视。 联系方式gracia@devlevelup.com 新浪微博 @技术人攻略 微信公众账号:dev-levelup
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说