红联Linux门户
Linux帮助

使用GPU利用DL学梵高作画–实践

发布时间:2016-11-17 10:48:40来源:格物致知作者:Linuth9
之前网上十分hot的一个话题。当然深度学习本身要入门需要大量的学习,但是使用他人已经写好的example进行一些玩耍还是比较容易的。兴趣是激发人学习的强烈动力,看到机器学习强大的威力就会有强烈的愿望去克服艰难来深入钻研,学习。
这是一个简化版本,没什么截图,因为过程中不确定是否成功就忘了截图了。
 
我的环境
os:Ubuntu 16.04
独立显卡:NVIDIA GeForce 1060(土豪可以上NVDIA TITAN X(Pascal))
已经装好了Java,Clang,但是这个未必是必要的。
 
安装流程
安装Nvdia显卡驱动
使用NVIDIA官方的驱动运行xxx.run比较麻烦,我使用的是如下的办法:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
安装完需要重启让显卡生效,但是也可以装完后面的部分再说。
 
安装CUDA
进入https://developer.nvidia.com/cuda-downloads,注意下载最新的8.0版本。就可以选择下载CUDA了,我的选择如下:
使用GPU利用DL学梵高作画–实践
下载这个1.4G的大家伙。然后
sudo sh cuda_8.0.44_linux.run
运行这个大家伙,这里我的版本是8.0.44,可能不同时候版本会有所不同。它会让你选择一些选项,注意的是
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.62?
这个选项时候选择n,其它选择y。这个是网上很多攻略都提到的事情。这个选项看起来是选择是否安装显卡驱动的,但是在我看来之所以选择n是因为之前的cuda版本给安装的驱动版本低,所以它们选择手动安装高版本的驱动,在这里就不安装了,避免低版本驱动覆盖高版本的驱动。但是这个版本的CUDA已经是367版本的驱动,所以之前不装驱动在这里一起装了也是一个选择。不过之前使用sh方式安装驱动时候遇到不少麻烦,所以还是用上面的安装显卡驱动的方法比较容易。
安装完成之后需要配置安装路径
sudo vim /etc/profile
然后添加自己安装cuda的路径
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
之后source一下,如果安装完驱动之后重启过电脑了,那么运行
nvdia-smi
能够看到GPU相关信息的一些输出。
 
安装cuDNN
使用Tensor Flow利用GPU进行深度学习的话需要cuDNN的支持,所以进入网址来下载cudnn,当然,下载这个需要注册账号,并且填写下载的调研问卷。下载cuDNN v5.1版本的cuDNN v5.1 Library for Linux
使用GPU利用DL学梵高作画–实践
然后解压,拷贝include文件夹下的cudnn.h到安装的cuda路径的include文件夹下,lib64文件夹下的libcudnn* 四个文件到安装的cuda路径的lib64文件夹下,然后改变一下运行的权限
以下命令是一个示例,如果将cudnn安装到默认的路径下的话,
tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
 
安装Tensor Flow GPU版本
具体的安装指导见官方说明。我选择的是虚拟环境下的安装。
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev python-virtualenv
安装virtualenv等相关程序。
创建虚拟环境,例如我是在workspace/env/tensorflow下
$ virtualenv --system-site-packages ~/workspace/env/tensorflow
$ source ~workspace/env/tensorflow/bin/activate
然后安装GPU enabled版本
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0rc2-cp27-none-linux_x86_64.whl
安装
# Python 2
(tensorflow)$ pip install --upgrade $TF_BINARY_URL
然后可以在ipython下尝试自己的首个tensor flow程序
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)
42
当然,如果是GPU enabled安装的话,运行过程中会提示GPU相关的信息。
 
作画
最后可以开始梵高作画啦。从github上面clone别人的程序
git clone https://github.com/anishathalye/neural-style.git
先要从这个网址下载imagenet-vgg-verydeep-19.mat这个510M的数据,放在目录下,然后就可以运行命令
python neural_style.py --content <content file> --styles <style file> --output <output file>
content file就是你想要转换为梵高作画风格的图像,style就是带有梵高风格的图像,在项目的examples目录下可以找到相关的style图像,output file就是转换后的输出图像啦。等GPU跑完就可以看到结果了。
这里我就不吐槽图像分辨率大一些就报alloc的错误,core dump了。16G内存6G显存的机子都会这样,具体得研究一下问题出在什么地方,但是图像分辨率小一些是没什么问题的啦。
这个是开源项目给出的例子,自己也可以用照片试试,不过分辨率不能太大,大了用pillow压缩一下吧。
使用GPU利用DL学梵高作画–实践
使用GPU利用DL学梵高作画–实践
使用GPU利用DL学梵高作画–实践
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26069.html