在Python中使用Tensorflow进行神经风格迁移

翻译原文地址


在现代高科技世界中,深度学习以不同的方式用于实现特定领域的特定目标。世界各地的工程师和开发人员使用AI算法进行维护,网络安全,数学解决方案,客户服务等。

图像识别和分类并不是很困难的工作,多亏了这些世界级的算法例如Inception、ResNet等。但是在今天,我将要进行讨论的是需要更少处理器能力的算法,但却有更神奇的效果展示给你只要有好的数据集和预处理的情况。带有多种技术的Tensorflow 实现让我们有能力合成带有特殊风格的原始图片。

让我们从安装依赖开始吧。你们之中有一些人可能没有安装所有需要的依赖,因此,为了确保一切进展顺利,我将从零开始。

P.S. 我是Mac用户,所以我将会在CPU上重新训练网络

我已经使用过几次这个项目了,为了确保我演示给你的是从零开始的,我将所有的工作都放在虚拟环境里来完成(因为我的Mac早就已经安装好所有需要的依赖了)

我将要从安装pip,homebrew,tensorflow,opencv开始。但是,当我安装它们的时候,我将要展示给你安装命令以便于你可以跟着我这样做。这个非常简单,即便你是个新手。

要求

Pip: sudo easy_install pip
Brew: pip install homebrew
Tensorflow: pip install tensorflow
OpenCV: pip install opencv-python
(如果拒绝访问,请使用管理员权限命令“sudo”。例如:sudo pip install homebrew)

在安装完这些依赖以后,使用命令pip freeze来检查环境。

1.png

找一个文件夹,例如桌面,新建一个文件夹,名字就叫deepstyle。用一下命令进入文件夹:
cd Desktop/deepstyle

克隆到仓库

所有依赖都安装完成以后,并且创建了新的文件夹,让我们去githubhttps://github.com/cysmith/neural-style-tf.git下载deepstyle,使用以下命令。
git clone https://github.com/cysmith/neural-style-tf.git

2.png

如果一切进展顺利,那就万事大吉。克隆完仓库后,让我们进入它的目录:
cd neural-style-tf

预训练模型

接下来的一步就是下载预训练的模型。我们将一个图像合成到另一个图像中,正如你所知道的,两张图片对于AI的数据集来说是不够的。让我们去以下的链接:
http://www.vlfeat.org/matconvnet/pretrained/

3.png

我们应该搜索imagenet VGG-19 预训练模型(imagenet-vgg-verydeep-19)weights.下载它,它的大小是534.9Mb,所以大概要花一小会儿。下载好后,将它移动到项目里(neural-style-tf folder)。
4.png

输入图片和风格图片

这些几乎是所有的工作。现在,我们需要两张图片,提取其中一张图片的风格,并且把这种风格融合到另外一张里面。让我们以一种浪漫的方式保持它并想象:如果Magda Eisenhardt(Quicksilver的母亲)和Henry Allen(The Flash的父亲)相遇就会怎么样。你猜它,让我们合成Flash和Quicksilver的图像。

我将使用Flash的风格,将这种风格融入到Quicksilver中。一个建议:尽可能使用面部的精确图像。 如果你正在使用CPU甚至更多,它不是那么强大,神经网络会很难合成它们。 因此,可能存在一些不准确之处。

我已经下载了一些图片,我将在下面展示给你。


5.png

将下载的图片复制到项目里面。你使用的输入图片应该拷贝到“image_input”里面

6.png

所有的风格图片应该复制到文件家“styles”里面

7.png

训练(再训练)

当这一切都准备就绪之后,让我们运行以下命令:
确定你在neural-style-tf目录下面:
bash stylize_image.sh ./image_input/quicksilver.png ./styles/theflash.png
这个命令代表的是:bash stylize_image.sh ./<input image directory>/<input image name> ./<styles image directory>/<styles image name>
按回车键,它会要求你安装需要的依赖,输入y,然后再按回车键确认。

8.png

之后,它会问你支持CUDA的GPU,但正如我上面提到的,我是一个mac用户,所以我会按下“n”按钮。

如果出现问题,请不要害怕。 它刚刚发生,因为你没有安装所有必需的依赖项。 就我而言,它是scipy库。
继续使用命令:pip install <库名>
在我的情况下:pip install scipy

9.png

安装所需的库后,只需使用我在上面显示的相同命令:
bash stylize_image.sh ./image_input/quicksilver.png ./styles/theflash.png
神奇的事情出现了:

10.png

这个过程不会花太长时间。 有关迭代次数和图像精度变得准确度的详细信息将在终端窗口中显示如下:

11.png

神经网络需要1000次迭代来合成图像。 等一段时间。 对于配备2.2GHz i7处理器和16GB RAM的MacBook Pro,“一段时间”约为47.62306分钟。

结果

完成此过程后,您将看到精确度详细信息和已用时间:

12.png

开始了。 让我们转到image_output目录并检查结果文件夹。 在那里,我们将看到一些文件,包括预处理的图像和元数据。

13.png

我们需要的图片就是result.png

14.png

正如我们看到的那样,flash图片的风格已经融入到输入的图片之中了。

它没有令人惊讶的准确性,但算法已经完成了它的工作:它将样式从一个图像转移到另一个图像。

您可以使用这个神经网络将世界级画家的风格转换为某些人的图像,也许是你的图像,而且它的效果非常好。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 想从Tensorflow循环生成对抗网络开始。但是发现从最难的内容入手还是?太复杂了所以搜索了一下他的始祖也就是深...
    Feather轻飞阅读 10,503评论 1 4
  • 1. 介绍 首先让我们来看看TensorFlow! 但是在我们开始之前,我们先来看看Python API中的Ten...
    JasonJe阅读 14,067评论 1 32
  • 小的时候,牙牙学语学做人,想想自己最初做人的道理莫过于《三字经》了。 人之初,性本善,性相近,习相远。 【解释】人...
    指尖流年阅读 4,048评论 0 1
  • 手帐Day3打卡,公司领导给发了印有公司logo的笔记本,说见客户用来装B,第一次知道笔记本也有这种功效… 买了水...
    来自galaxy的叮叮铛阅读 5,111评论 0 0
  • 那天一大早,来了位客人。我赶紧去开门,门刚打开,老师已经迎了出来,看样子,此人不简单呢…… 果然,一翻套路(寒喧)...
    没事别思考人生阅读 2,454评论 1 5

友情链接更多精彩内容