神經風格轉移: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
4.到這裡環境的配置工作就基本完成了,輸入指令開始訓練模型
python neural_style.py --content ./examples/tong.jpg --styles ./examples/2-style2.jpg --output ./examples/test-tong.jpg
主要是三個引數
- –content:目標圖片(要模仿梵高畫作的圖片)
- –styles:訓練圖片,以此圖片的特徵來訓練神經網路(這個包裡只提供了三種風格的梵高畫)
- –output:輸出圖片
效果對比:
跑這個圖用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就會出現下載列表
選擇cudnn5.1(現在都更新到7.3版本了)
選擇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
到這裡環境的配置工作就基本完成了
6.測試
輸入指令開始訓練模型
python neural_style.py --content ./examples/tong.jpg --styles ./examples/2-style2.jpg --output ./examples/test-tong.jpg
主要是三個引數
- –content:目標圖片(要模仿梵高畫作的圖片)
- –styles:訓練圖片,以此圖片的特徵來訓練神經網路(這個包裡只提供了三種風格的梵高畫)
- –output:輸出圖片
效果對比:
跑這個圖用CPU花了七個小時,用GPU版的tensorflow十一分鐘就完工了(GPU:TITAN xp)。
歡迎大家多多交流學習心得。