NeuralArt--让电脑画出大师作品

前言

最近看到德国一个组在arXiv上的一篇文章:A Neural Algorithm of Artistic Style[1],给定一张输入图像和一张特定风格的图片(比如梵高的《星空》),就能生成跟参考图像风格一致的图像。让电脑也能生成大师作品,非常有趣。

恰好github上面有开源代码 [2],于是就想着搭个环境跑一下。

环境配置

这个程序主要需要下面三个东西:

1
Torch7
imagine-nn (for Inception network)
CUDA 6.5+ (unless running on CPU -- see below)

按照说明一一安装即可。

安装Torch

Torch [3]是一个开源框架,包含了对常见机器学习算法的支持,尤其是对深度学习的支持。
按照官网的说明文档来安装即可,三个步骤,非常简单。

1
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; ./install.sh

imagine-nn

imagine-nn的安装更加简单,只需要执行下面这行命令即可。

1
luarocks install inn

CUDA

CUDA是用来用GPU并行加速的,可以参考这篇博文内容 [4]

首先,去CUDA官网 [5]下载相应版本的安装包。

然后,用下面的命令进行安装即可。

1
sudo dpkg -i cuda-repo-ubuntu1410-7-0-local_7.0-28_amd64.deb
sudo apt-get update
sudo apt-get install -y cuda

安装之后设置一下环境变量。

1
export CUDA_HOME=/usr/local/cuda-7.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
PATH=${CUDA_HOME}/bin:${PATH}
export PATH

运行

经过上面的操作,neuralart所需的环境已经配置好了。去Github上下载源代码。
然后用以下命令即可运行,其中—style指定输入参考风格图像,—content指定输入图像,其他更详细的参数说明,可以查看Github项目主页。

1
qlua main.lua --style ./testimg/star.jpg --content ./testimg/thu.jpg

执行时,可能会碰到out-of-memory错误,这可能是GPU内存不够引起的。可以用—optimizer参数指定优化方法。

  • L-BFGS:优化结果可能更好,但需要占用更多的内容且速度较慢
  • SGD:速度较快,占用内容少
1
qlua main.lua --style ./testimg/star.jpg --content ./testimg/thu.jpg --model inception --optimizer sgd

结果

输入图像:

参考风格图像:

输出图像:

参考文献

[1]: Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. arXiv preprint arXiv:1508.06576, 2015.

[2]: https://github.com/kaishengtai/neuralart

[3]: http://torch.ch/docs/getting-started.html#_

[4]: https://ouxinyu.github.io/Blogs/20140723001.html

[5]: https://developer.nvidia.com/cuda-downloads