使用DeepStyle和Ubuntu创建您自己的“神经绘画”

神经网络可以做很多事情。他们可以解释图像,理解我们的声音。但是,您知道他们也可以绘画吗?

最近的研究论文(名为“艺术风格的神经算法")开始了一系列在线讨论,并提供了一些引人注目的视觉示例。本质上,本文讨论了一种训练深度神经网络的技术,以将艺术风格与图像结构分离,并将一个图像的样式与另一个图像的结构相结合。所有这一切的结果是,您可以训练一个庞大的神经网络,将照片转变为看起来像是由著名艺术家(所谓的“数字假冒产品")绘制的“神经绘画"。

这是文章中的一些示例。第一张图片是原始图片。后来的图像是生成的结果,样本中提取了样式的绘画以微型显示。

不幸的是,原始研究人员尚未发布他们的代码。但是,一些勇敢的程序员在过去的几天中复制了他们的结果,并且他们的代码在Internet上可用,开源。您只需要一台Linux机器就可以运行它,还需要一点耐心。

今天,我将指导您完成操作,并向您展示一些我自己的结果。您可以将其视为DeepDream教程的宽松续集。有点复杂,但是拥有Linux机器的任何人都可以遵循-不需要任何编码经验。

-James Blaha(@jamesblaha)2015年9月5日

设置软件< /

首先,如果您不着急或没有Linux机器,您仍然可以使用DeepForger Twitter机器人使用DeepStyle(向其发送图像和样式,并且它将最终以所需的结果答复)。如果您想快速处理更多图像(并更好地控制结果),请继续阅读本教程。

首先,请确保您具有最新版本的 Ubuntu (我用的是14.04)。您应该至少有一些额外的硬盘空间。有关更多信息,请查看我们的与Windows双重引导Ubuntu的教程。您还将需要root特权,因此请确保在进行操作之前先做。

蝙蝠权,这是一个开源项目,因此我们要拥有安装了Git 。 Git是版本控制软件的黄金标准。几乎每个值得了解的开源项目都托管在Github上。

要下载并安装Git,只需打开一个终端并输入“ sudo apt-get install git "并同意

下一步:我们将设置一些使该软件正常工作所需的基本工具

首先,安装Lua。这是该工具的编写语言。非常简单。只需键入“ sudo apt-get install lua5.2 "并按照安装过程进行即可。

第二,我们将获得Luarocks。使用此工具可以更轻松地安装其他工具(您不喜欢Linux吗?)。为此,请键入“ sudo apt-get install luarocks "并按照安装步骤进行操作。

第三,我们将安装Luajit。这是Lua的即时编译器,它将使我们的生活更加简单。只需键入“ sudo apt-get install luajit "即可。

到目前为止一切都很好。

— The Deep Forger(@DeepForger)2015年9月5日<

接下来,我们将安装Torch,这是构成应用程序主干的科学计算和机器学习框架。不幸的是,无法使用apt-get(标准的Ubuntu软件包管理器)进行安装。

幸运的是,他们确实有使用命令行魔术的单行安装程序。返回您的终端并输入“ curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash “。

完成后,键入“ luajit -ltorch "。这将打开手电筒界面并验证是否已正确安装所有内容。

退出该操作。

现在,我们将要安装 loadcaffe —神经网络专用软件包。通过键入“ sudo apt-get install libprotobuf-dev protobuf-compiler "来安装其唯一的依赖项。然后,您可以使用“ sudo luarocks install loadcaffe"安装软件包本身。

-Deep Forger(@DeepForger),2015年9月7日

最后,我们将抢先更新一些内容,以确保一切顺利。

键入“ sudo luarocks install image ",以确保您的图像包符合日期,接下来,输入“ luarocks install nn ",这将对您的“ nn"软件包执行相同的操作。

好了,到此,我们已经准备好实际安装软件本身。为清洁起见,在您的主目录中创建一个新文件夹('mkdir DeepStyle')。然后使用`` cd Deepstyle ''输入该文件夹。现在键入`` sudo git clonehttps ://github.com/jcjohnson/neural-style.git"。

接下来,我们必须下载模型。煮一杯咖啡或一些东西,这将需要一段时间。返回终端,然后输入“ sudo sh models / download_models.sh "。这将开始一个漫长而精心的下载过程。如果由于权限错误而失败,请尝试使用chmod授予您对相关文件夹的读写权限。

— Deep Forger(@DeepForger)2015年9月6日

使用深度风格

好的,我们很好。使用该软件非常简单。

请确保您位于终端的 DeepStyle /神经样式目录中。现在,您将需要处理一些图像。从Internet(或其他任何方式)下载它们,然后使用文件浏览器将它们复制到 DeepStyle /神经样式文件夹

现在,您可以使用命令行来处理单个图片。格式非常简单:

th neuro_style.lua -style_image YOURPAINTINGHERE.jpg-content_image YOURPHOTOHERE.jpg -gpu -1

(很明显,则需要用文件名替换ALL CAPS中的块)。

这将启动神经网络。它会运行约一个小时,每隔几分钟会吐出新的部分融合的图像,直到完成。 -gpu -1 标志阻止它尝试访问您的GPU。

经过数小时的尝试(多次使操作系统变砖),我无法获得Ubuntu和CUDA可以与我的GPU(NVIDIA GTX 970)一起很好地玩。如果您对此有更多的希望,则需要安装CUDA和cudann.torch(有关更多信息,请参见github存储库)。如果不是,那很好-它仍然可以使用您的CPU来工作;会慢一些。

如果您在解决所有问题时遇到任何问题,请在评论中问我,我会尽力帮助您。

结果

以下是我最近几天生成的一些图像。结果好坏参半,但其中许多都令人印象深刻。

点击此处查看完整分辨率。

这是我的朋友扎克(Zack)在黄石远足旅行中的。风格来自Theresa Paden创作的抽象画。我很想知道系统如何使用完全没有结构的图像来处理。结果非常简洁,您肯定可以看到与样式图像的相似之处。

请单击此处获取完整分辨率。

这是我最喜欢的一位艺术家提供的礼物,查尔斯·德穆斯(Charles Demuth)(参见:新教堂的香火,和图5中的金色)有趣的是,Demuth是Team Fortress 2艺术的主要视觉灵感之一,正如您从样式图像中可以看到的那样。

我为它提供了我在Wikimedia上找到的泽西城的图像。结果非常好。它没有体现Demuth风格的棱角分明,但它确实具有柔和的质感外观和调色板。

请单击此处以获取完整分辨率。

此一种尝试是使用我发现的一些鲜花的平凡图片来生成合成的O'Keeffe。坦率地说,结果是惊人的。从美学上讲,这是我最喜欢的结果之一。奥基夫(O’Keeffe)丰富的色彩和形状清晰可见。花瓣的分层边缘成为背景中叶子的边缘。花本身变成了颜色,几乎变成了抽象。

如果是人类,那将是一幅好画。我很想花几天的时间来制作此版本的高分辨率版本并进行构图。

单击此处以获取完整分辨率。

这是我的朋友Shannon她的万圣节服装,采用毕加索的图案。有趣的是,该设备选择将她的脸部下部涂成白色(类似于毕加索作品的颜色布局)。我不确定这是否是巧合,但结果令人震惊。似乎还可以正确识别香农的左侧头发,并使用样式图片中头发的颜色和线条重新绘制。

这是该技术的局限性开始变得清晰的部分作品之一。如果毕加索实际上是在画香农,他会扔掉她的脸部结构,并歪曲其特征以获得他想要的效果。该系统无法理解这些高级概念,并且只能模仿样式的表面方面,例如深色,棱角分明的线条和调色板。

单击此处可获得完整分辨率。<

很简单:埃菲尔铁塔和梵高的其他星空之夜的照片。尽管原始图像中没有云,但它可以很好地呈现梵高(Van Gogh-ey)风格的云。

我不确定为什么决定将Fiffel塔的顶端用作火柱。看起来不错,但从输入数据来看并不能说是合理的。然后我意识到样式图像中有13条垂直的黄色长条,以水中的反射形式出现。鉴于培训数据很少,这是一个非常庞大的集群。这可怜的东西可能已经知道,任何高对比度的垂直边缘都必须是这些反射之一。您可以在云中隐约看到更多无关的垂直条纹。

单击此处获得完整分辨率。

同一幅梵高画作,但是这次我给它画了一些实际的星星。在这种情况下,鹰状星云的支柱部分。我喜欢结果-尽管再一次可以看到它带有黄色条纹的迷恋。柱子的每个垂直部分都变成一条明亮的,晃动的黄线。显然它也被绿色所困扰,绿色没有出现在训练数据中,它会尽力摆脱绿色,而偏向蓝色和黑色。

技术

一些结果尽管这项技术有明显的局限性,但它却极具吸引力。有些图像的构图很糟糕,而且该系统对于像毕加索这样的抽象艺术家来说比较困难。毕加索最著名的是喜欢扭曲他的主题,分散其特征。该算法拾取了他的角线和颜色冲突,但仍然是图像像素值的从属。它并不需要您将理解与原始资料相距太远。

令我如此激动的是,我认为这些限制不是根本。

这里使用的方法-在一个图像上训练网络并使用它来构建另一个图像-基本上是一种黑客。它给网络提供的数据很少。此应用程序的更高级版本将使用一个网络,该网络具有有关许多绘画甚至可能是真实图像的信息,以便为它试图“绘制"的图像提供足够的上下文。

深入了解风格只能存在于更广泛的范围内。您不能从单个图像中获取它。设计一种体系结构,使系统可以访问更广泛的数据,这可能会使它对图像以及艺术家如何表现现实世界的不同元素更具“类人"的理解。这样的网络可能能够产生更抽象,组成更好的图像。这样的算法将不再是一个很酷的玩具(像这样),而将成为一种产生实际的原始艺术的方法。

在某些方面这是一个非常奇特的思想。

制作您自己的图像

如果您得到的结果令人失望,则可以尝试一些选项以尝试获得更具说服力的结果。完整列表在Github上。重要的是

  • -content_weight -value 。对内容重建术语加权的权重。默认值为5e0。
  • -style_weight -value::为样式图像赋予多少权重。默认值为1e2。
  • -style_scale –值:系统应分析多大的图像块(较大的图像变得更加抽象)。默认值为1.0。
  • 一旦一切正常工作,请在评论中张贴最有趣的图像。我真的很想知道你们的想法。

    图片来源:Shutterstock的人脑画家

    标签: 人工智能 数字艺术 极客科学 Linux桌面环境 科幻小说