1. 程式人生 > >神經風格轉移:Anaconda快速搭建DL框架學梵高(Van Gogh)繪畫Ubuntu16.04 CPU&GPU版

神經風格轉移:Anaconda快速搭建DL框架學梵高(Van Gogh)繪畫Ubuntu16.04 CPU&GPU版

神經風格轉移:Anaconda快速搭建DL框架學梵高(Van Gogh)繪畫 Ubuntu16.04 CPU&GPU版

最近開始學ML和DL的知識,開始新的方向,像吳恩達說的,看的再多,不跑幾個Demo做幾個實驗,還是理解不了,所以找了個基於DL做的包跑了一下,還挺有意思的,DL的框架都是別人搭好的,可以直接用,把環境配置一下就可以快速開始了,親手操作一遍會對DL的有一些更直觀的感受。


一、配環境—CPU版

我是在anaconda中建立的環境

1.先建一個以van為名字的conda 環境

conda create -n van python=2.7 scipy numpy pillow git tensorflow

重點是要測試一下tensorflow能不能正常執行

python
>>>import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42

有輸出就代表tensorflow可以運行了,其實只要輸入import tensorflow as tf沒有報錯就基本沒問題了。

2.跟著下載別人搭好的DL框架neural-style下載,我把它儲存在tensorflow的資料夾裡面(當然你儲存在其他地方也可以 do what you want)

cd ~/anaconda3/envs/van/lib/python2.7/site-packages/tensorflow
git clone https://github.com/anishathalye/neural-style.git

3.然後下載vgg19,儲存在neural-style的資料夾根目錄下

cd neural-style
wget http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

van
4.到這裡環境的配置工作就基本完成了,輸入指令開始訓練模型

python neural_style.py --content ./examples/tong.jpg --styles ./examples/2-style2.jpg --output ./examples/test-tong.jpg

主要是三個引數

  • –content:目標圖片(要模仿梵高畫作的圖片)
  • –styles:訓練圖片,以此圖片的特徵來訓練神經網路(這個包裡只提供了三種風格的梵高畫)
  • –output:輸出圖片

van-2

效果對比:
tong
test
跑這個圖用CPU花了七個小時,如果用GPU版的tensorflow可能十幾分鍾就完工了(GPU:TITAN xp)。


二、配環境—GPU版

用GPU最麻煩的就是配環境,成功之後那做實驗效果飛一般的爽快,所以大家咬咬牙還是把環境配了。
而且如果同樣使用anaconda來輔助搭環境,會少踩不少坑,牆裂推薦!!!
本人的系統是Ubuntu16.04 LTS,顯示卡 TITAN XP

需要安裝的依賴項:

  • CUDA8.0(最難搞這個,不成功分分無限迴圈登入介面)
  • CUDNN5.1
  • GCC 4.9
  • Tensorflow-gpu版

1.CUDA 8.0

不得不說,官方教程是最詳細可行的,安裝的時候看不了不少別人的部落格文件,問題可說是千奇百怪,牆裂建議下一份官方文件做參考,綜合別人寫的教程來安裝會少出問題。
CUDA8.0官方教程


①先確認自己電腦是否具備安裝條件

a) 檢查自己的GPU是否是CUDA-capable

在終端中輸入:lspci | grep -i nvidia

會顯示自己的NVIDIA GPU版本資訊,然後去CUDA的官網檢視自己的GPU版本是否在CUDA的支援列表中
GPU支援列表

b) 檢查自己的Linux版本是否支援 CUDA
Ubuntu 14.04和16.04兩個版本都支援CUDA

c) 檢查自己的系統中是否裝了gcc

檢視自己的gcc版本: gcc –v

d) 檢查是否安裝了kernel header和 package development
CUDA 和 nvidia驅動編譯安裝需要核心標頭檔案

檢視自己的kernel版本:uname –r
在終端中輸入:sudo apt-get install linux-headers-$(uname -r)

若以上的檢查都沒有問題,就可以開始正式的安裝了。


②選擇安裝方式

CUDA 有兩種安裝方式:

  • package manager安裝:簡單,但是用這種方法安裝失敗了,還是老實用第二種
  • runfile安裝(本文所用的安裝方式)

CUDA下載地址
根據自己的系統版本選擇,只要最後一項安裝包型別選擇runfile就行了


③安裝CUDA

a) 禁用 nouveau

終端中執行:lsmod | grep nouveau,如果有輸出則代表nouveau正在載入。

需要禁用nouveau:
建立blacklist-nouveau.conf

touch /etc/modprobe.d/blacklist-nouveau.conf  
gedit blacklist-nouveau.conf  

在檔案中新增以下內容:

blacklist nouveau
options nouveau modeset=0

重新生成核心的initramfs

sudo update-initramfs –u1

然後再次執行lsmod | grep nouveau檢查是否禁用成功,如果執行後沒有任何輸出,則代表禁用成功。

b) 重啟電腦,到達登入介面時,alt+ctrl+f1,進入text mode,登入賬戶

c) 關閉圖形化介面

sudo  service lightdm stop

d) 切換到cuda安裝檔案的路徑(一般都是在Downloads資料夾裡面),輸入(具體根據自己下的版本號來執行,最後那個指令是不按照openGL)

sudo chmod a+x cuda_8.0.61_375.26_linux.run --no-opengl-files

按照提示一步步操作

一開是cuda的描述,一直回車到100%即可,然後輸入accept
遇到是否安裝openGL,一定輸入n,然後提示是否安裝nvidia-xconfig,如果你的電腦還存在一個核顯或者集顯就輸入n,反之輸入y

下一個提示是 是否安裝CUDA Toolkit,輸入y

後面的提示都是使用預設或者y了

安裝完會顯示哪些安裝成功,哪些安裝失敗

e) 重新啟動圖形化介面

sudo service lightdm start 

Alt + ctrl +F7,返回到圖形化登入介面,輸入密碼登入。

如果能夠成功登入,則表示不會遇到迴圈登入的問題,基本說明CUDA的安裝成功了。
如果,我說如果,出現了無限迴圈登入的情況,那…就尷尬了,自己另外百度吧,本人之前試了各種辦法沒解決

f) 重啟電腦。檢查Device Node Verification。

檢查路徑/dev下 有無存在名為nvidia*(以nvidia開頭)的多個檔案(device files)
如果沒有的話,可以參考官方文件裡的指導步驟,進行新增。

g) 設定環境變數。

輸入

sudo gedit /etc/profile 

在檔案末尾,新增以下兩行。

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH

儲存檔案。

這裡有點與官方安裝文件稍有不同,需要說明:

官方文件裡說只需在終端中執行上述兩條export語句即可,但如果不將它們不寫入/etc/profile檔案的話,這樣的環境變數在你退出終端後就消失了,不起作用了,所以寫入才是永久的做法。

h) 重啟電腦,檢查上述的環境變數是否設定成功。

輸入 : env
檢查一下有沒有上一項設定的變數,有就成功了,沒有再返回檢視文件有沒有成功儲存。

i) 檢視CUDA的版本資訊
兩個指令都可以檢視
(1) nvcc -v
(2)cat /usr/local/cuda/version.txt
如果正常輸出CUDA的版本資訊,那麼基本上就沒什麼問題,恭喜恭喜。

2.CUDNN 5.1

① 到官網下載cudnn5.1

需要註冊一個NVIDIA Developer的賬號,登入之後會有一個調查檔案,然後點選I Agree就會出現下載列表
cudnn
選擇cudnn5.1(現在都更新到7.3版本了)
cudnn5.1
選擇cuDNN v5.1 Library for Linux

② 開始安裝

cd到剛剛cudnn安裝的目錄下,然後輸入

tar xvzf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

③檢查

檢視cudnn版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

3.GCC 4.9

ubuntu的gcc編譯器是5.4.0,然而cuda8.0不支援5.0以上的編譯器,因此需要降級,把編譯器版本降到4.9:
在terminal中執行:

sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++/usr /bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

檢查版本

gcc -v

輸出顯示4.9.3就說明正常降級了

4.Tensorflow GPU版

到這裡就容易了,直接再anaconda裡面搭環境,建一個以van命名的環境

conda create -n van python=2.7 scipy numpy pillow git bazel tensorflow-gpu

5.下載DL框架

① DL框架neural-style下載

我把它儲存在tensorflow的資料夾裡面(當然你儲存在其他地方也可以 do what you want)

cd ~/anaconda3/envs/van/lib/python2.7/site-packages/tensorflow
git clone https://github.com/anishathalye/neural-style.git

② 然後下載vgg19,儲存在neural-style的資料夾根目錄下

cd neural-style
wget http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

van
到這裡環境的配置工作就基本完成了

6.測試

輸入指令開始訓練模型

python neural_style.py --content ./examples/tong.jpg --styles ./examples/2-style2.jpg --output ./examples/test-tong.jpg

主要是三個引數

  • –content:目標圖片(要模仿梵高畫作的圖片)
  • –styles:訓練圖片,以此圖片的特徵來訓練神經網路(這個包裡只提供了三種風格的梵高畫)
  • –output:輸出圖片

van

效果對比:
tong
test
跑這個圖用CPU花了七個小時,用GPU版的tensorflow十一分鐘就完工了(GPU:TITAN xp)。

歡迎大家多多交流學習心得。