(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鮮靠譜版)利用DL學梵高作畫---實戰記錄和心得

作者:老宅

時間:2017年3月

硬件:Core i7-6700;16GB;Nvidia GeForce GTX1070;500G SSD (PS:搞DL的實戰必須用好平臺,這裏就不多廢話了)

平臺:臺式PC

軟件:Linux 對應的GTX1070驅動;cuda8.0;cudnn 5.1;GPU支持的Tensorflow;Linux 14.04 LTS

這裏首先要提一句,因爲博主寫這篇文章的時間是2017年的3月,至今爲止,文中的部分連接已經失效,比如,Tensorflow的地址可以改爲清華的鏡像站:https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/

前言——網上諸多“教程“的一些個人看法

首先,老宅的這次DL實踐,借鑑的教程來自CSDN大神,七月在線的CEO——July在2016帶領公司另外兩位同事搞出來的,教程原址:

http://blog.csdn.net/v_july_v/article/details/52658965,原文叫做《教你從頭到尾利用DL學梵高作畫》。

前人栽樹,後人乘涼。我的DL實踐就是在這篇教程的指導下起步的,本文部分圖片借鑑原圖。

實驗最後成功了,通過1000次迭代,確實,計算機學會了梵高的作畫方式,後面會貼出作畫的效果圖。

在本文的最後,會講一講我對使用DL教計算機學習作畫的一些理解和考慮日後所要做的一些改進,這個寫在最後

————————————————————分割線——————————————————————

再羅嗦一句:個人理解,Linux就是極客們搞出的一個怪胎,如果你是純小白,那,,,做好心理準備吧,這次起步,我倒騰了好久好久。。。

再再羅嗦一句:一定要按本文的順序來操作,謙虛、謹慎、客觀、老實的操作。。。

再再再羅嗦一句:請認真的體會這句話——如果你想在技術的廣度和深度上再上一個層面,良好的英語水平和高等數學的基礎都是必選項。不認可?那麼往下看!

一、軟件下載和準備

操作系統:大企鵝Ubuntu14.04。

安裝方式:U盤安裝

準備方式:一個8G的空U盤,從ubuntu官網下載ubuntu14.04LTS版。

LTS理解爲時 ,long time trusty,所以,本教程強烈推薦,

下載地址:http://www.ubuntu.com/download/alternative-downloads(下載地址,選擇64位下載)

這裏講一句:必須用英文版,ubuntu確實有中文版,而且,可以在後面安裝的過程中選在安裝中文版,但是經本人實踐發現:當你選擇中文安裝界面之後,在安裝顯卡驅動時,輸入相應的命令,系統的反饋時菱形,具體原因這裏不解釋,借鑑教程的一句話:外來的和尚會念經

 

硬件驅動:Linux版GTX1070驅動

 

下載地址:http://www.geforce.cn/drivers

下圖爲筆者操作界面:

 

在出現的結果中,筆者使用的是367.44,如圖

 

 

CUDA 8.0

只要是瞭解DL的人,肯定都知道CUDA8.0,所以

官網下載:https://developer.nvidia.com/cuda-toolkit

看圖:

點擊那個碩大的綠色的 DOWNLOAD,進入如下頁面:

然後,頁面下部——>依次點擊:Linux,x86_64,Ubuntu,14.04,runfile(local),然後,如下圖:

點擊Download(1.4GB)

後面就不用我多說了,你不可能是連下載都不會的超級小白。

 

 

cudnn準備

首先,心裏準備:比之前麻煩一點點,因爲他家網站讓你註冊,然後填寫個什麼問卷。

地址:https://developer.nvidia.com/cudnn

 點擊進入後如下圖:

先點擊Register,然後是下面的頁面:

點擊Join now,然後進入下面頁面:

然後,就是該填寫信息了,這裏筆者廢句話:爲啥他們要求13歲以上呢?

後面就是問答頁面了,考驗你英語基本讀和理解能力的地方到了。所以,如前文所說,英語好一點在技術晉級時是必選項。

 

 

然後:重點來了:本文采用的Tensorflow是網絡安裝,pip install 方式。經筆者多次實踐,諸多tensorflow的安裝方式,比如bazel,比如anaconda,安裝過程要麼需要某種workspace,要麼就是哪裏設置不小心,導致安裝位置不對等等,對於小白的你,使用pip install的方式最靠譜,也入手最快。

 

二、平臺搭建

下面,是具體平臺搭建過程:

首先,鳴謝百度經驗上傳者,以及百度經驗的最初產品設計者和開發者。

U盤系統盤及安裝教程:http://jingyan.baidu.com/article/eb9f7b6d8536a8869364e813.html

這裏注意幾點:

首先,筆者的臺式PC使用華碩主板,該主板有一個UEFI模式,有興趣的你可以深扒一下該模式的優勢。

筆者的實踐經驗對比表明,UEFI模式比非UEFI模式更快啓動安裝狀態,而且安裝時不使用系統自帶顯卡驅動。

第二:切記!!!使用 英文安裝

第三:安裝時的具體分區操作請自行百度。

 

驅動需要在字符界面下安裝

步驟:

1)進入Ubuntu圖形界面

2)插入U盤,將內容拷貝至Desktop文件下

3)點擊左上角,輸入terminal,如下圖

4) 將命令框圖標拖動到左邊欄裏或者桌面,以便使用。

5) 點擊Terminal,然後

輸入:sudo -i

輸入 :開機密碼 ,回車

輸入  sudo apt-get install vim

          sudo vi /etc/default/grub

(這裏的輸入,注意必要的空格)

6) 此時系統會進入一個文本頁面(這就是傳說中的Vim)。

           在第20行前後會出現

           GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"。

           將光標移動到這個命令最前端,

           然後鍵盤點擊Esc鍵,再點擊y鍵兩次,點一下p鍵。

           就會將本條指令複製一個放到下一行。然後點擊i鍵,就能進行編輯了,

           在本行命令前面添加#號,然後移動到複製出來的那條,

           修改quiet splash爲text,按Esc鍵。

           Shift +:,輸入wq,回車。

      此時會調回命令框界面,

      輸入sudo update-grub,回車

      輸入sudo reboot,回車。

      隨後,系統重啓,如果你在安裝Ubuntu時,計算機原有一個其他系統,那麼重啓後首先會遇到一個選擇界面,

      這時選擇*Ubuntu,即可進入系統,由於之前的操作,本次登錄Ubuntu是文字界面。

      重啓後進入字符界面,

      按照提示輸入你的用戶名,回車

      輸入密碼,回車

    輸入sudo  -i,回車

    輸入密碼,回車

    此時,需要使用linux的cd命令,這時需要輸入下面命令:

    cd /home/[輸入到這裏時,可點擊Tab鍵,系統會自動匹配]/Desktop/   回車   (注意:Desktop後面的 / 符號,務必要輸入)

    這時輸入 ls

    會顯示剛纔拷貝到桌面上的三個文件名稱

    然後,輸入

     chmod +x NVIDIA-LIN…(這個按Tab鍵自動匹配) 回車

     再次輸入

     ./NV...(這個按Tab鍵自動匹配) 回車

剛纔的操作如下圖:

按回車鍵後出現

…………………………………………………………………………………………………………………………………………………………………………………………………………………………….

說明開始安裝

 

期間會出現數次讓你選擇的字樣,你們看,每次操作請各位仔細看,這裏老宅不再多說,只要英語水平夠,操作不是問題,基本都是左右方向鍵+回車。

 

 

下面,以同樣操作安裝CUDA8.0,在完成了

chmod +x cuda[此時點擊Tab鍵] 回車

./cuda[此時點擊Tab鍵] 回車

之後,系統會先有一段長長的協議,閱讀這段協議,需要你按住空格鍵,系統的提示文字會自動滾屏,直到出現

如下圖字樣:accept/decline/quit:

此時輸入:accept 回車

根據系統提示,並不是一路需要輸入y,而是如下圖,第一個需要輸入

n 回車

這裏需要注意其中一個地方需要填寫N才行,不能寫Y。如圖

其餘操作如圖

然後回車等待就行

 

順利的話,等待可能不到一分鐘就可完成安裝。

這時,需要輸入

sudo vi /etc/default/grub

出現文本界面,也就是剛纔修改quiet splash 爲text的地方

如前所示,以相反的操作。

點擊 i鍵

將帶有quiet splash那行代碼前面的 # 刪掉

將剛纔複製出來的,修改成帶有text的哪行代碼前,加 #

然後,點擊Esc鍵,

點擊Shift + :   回車

輸入 wq 回車

此時,再次輸入 sudo update-grub 回車

sudo reboot 回車

等待系統重啓

 

下面是將桌面上的cudnn安裝進Ubuntu

在系統重新啓動後,點擊Terminal

輸入sudo -i 回車

輸入登錄密碼 回車

輸入

cd  /home/***(自己的用戶名)/Desktop/  回車

輸入

tar xvzf cudnn-8.0-linux-x64-v5.1-ga.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*  回車

 

至此,前期準備工作都已完成。

下面,輸入如下命令:

sudoapt-get install python-pip python-dev Python-scipy Python-numpy Git

 

由於使用Bazel等等其他工具安裝Tensorflow總是要事先配置各種各樣的環境,博主作爲一個懶人,在認真看了Tensorflow的安裝提示後,總結了一種安裝方法,請務必按照下文的順序輸入代碼並及時回車!

 

首先,輸入

python --version 回車

然後,輸入如下(看清,不要錯):

sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl   回車

接下來的等待時間就看你的網速了。。。。。。

待安裝完成後,可以測試一下tensorflow是否能夠正常使用

測試方法如下:

輸入

python  回車

觀察一下系統反饋,一般不會出錯。如果有error字樣,可跟貼本博客,博主會爲你解答。

輸入如下代碼:

import tensorflow as tf  回車

此時,如果安裝沒有問題,這裏有句名言:沒有答案就是最好的情況

系統會出現‘>>>’的顯示,說明一切正常,效果如下圖

說明安裝成功,一切正常。

但是,博主曾碰到過這樣的問題,如下圖:

再然後,操作如下:

在Terminal中輸入

sudo vim ~/.bashrc  回車

輸入(先點擊按鍵i)

export  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"   回車

export  CUDA_HOME=/usr/local/cuda  回車

然後,按Esc,

然後,Shift + : ,

輸入 wq 回車

在輸入  source ~/.bashrc  回車

問題徹底解決。

全部安裝過程就到這裏了。下面是教計算機學梵高作畫的過程:

三、實驗:模仿梵高繪畫

1.neural-style下載
在這個github網站下載相應代碼:https://github.com/anishathalye/neural-style

2.接下來,下載vgg19:
http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

然後,把vgg放到neural-style的文件夾根目錄下

現在,在命令窗口cd  /home/***(你自己的用戶名)/Desktop/

   git clone  https://github.com/anishathalye/neural-style.git 

接着你就能在桌面打開這個文件夾了

把你想修改的照片放入example文件夾內,然後在剛纔的窗口命令接着輸入:

python  neural_style.py   --content  ./examples/***.jpg (此括號內不要複製:***代表你想要使用的圖片名稱)   --styles  ./examples/ 1-style.jpg (此括號內不要複製:1-style.jpg是梵高星空圖片在文件夾內名稱,你也可以換其他的風格,改名稱就行了) --output  ./examples/$$$.jpg (此括號內不要複製:$$$代表你想要生成的圖片名稱)

例如我的輸入如下python neural_style.py --content  ./examples/1-content.jpg  --styles ./examples/1-style.jpg --output./examples/1-output.jpg

接下來,時博主的實驗效果

在計算機學到梵高作品星空的風格之後,讓計算機對指定圖片進行梵高式處理,在迭代1000次候,計算機成了梵高的徒弟,不過,是個特別實誠的“傻徒弟”,具體原因,先看下面對比圖:

首先,是讓計算機學習的《星空》

 

然後,是計算機學習之後要修改的我個人的攝影作品《火炬》

最後,迭代1000次候,得到了下面這幅“畫作”

 

————————————分割線——————————————

下面是博主對於這次練習的幾點體會,也許對於小白的你會有一定的幫助:

1.使用Linux,相比用慣了windows的你來說,上手是需要一定的開發經驗的,如果不是抱着對專業學習極大的熱愛之情在學習,相信你很快就會對Linux失去興趣,博主在調試Ubuntu時,翻閱了大量的網上相關“教程”,發現很多敢於吃螃蟹的第一人在初嘗整套配置時,有的竟前後折騰了一週之久,來來回回反覆安裝、調試、測試。。。。。。,相信,初嘗Linux的你的世界觀一定會在Linux的影響下有所改變。。。。

2.經博主測試,本次“作畫”所使用的content文件,即,你需要改變的圖片的體積,是對計算機顯存有一定要求的,樓主第一次放入的照片體積大於1.0MB,計算機剛剛開始計算及發生了內存溢出。博主完成測試用的圖片是經壓縮後,體積下降到了100+KB。

3.爲什麼說計算機是個特別實誠的“傻徒弟”?仔細對比上面三幅圖就會直到,《星空》的主色調時藍色,畫面中帶有光暈的星星時金黃色,也就是說,雖然歷史上傳言梵高精神存在問題,他看到的世界與常人不同,但,至少他看到的世界在他眼中的顏色是正常的,即,他在《星空》中描繪的畫面,普通人看來,顏色也是正常的。也就是說,如果讓梵高本人觀察和重畫我們要修改的這幅《火炬》,我相信梵高應該採用的描繪《火炬》的主色調應該是紅色,而不是藍色,也就是說,如果計算機是一個“聰明”的徒弟,它看到這幅《火炬》,會按照梵高的繪畫方式而不是用色方式,來重畫這幅畫。從專業角度講,即:計算機使用這裏我們做實驗用的DL算法進行學習的時候,不僅學會了《星空》的紋理特徵,也學會了《星空》的顏色特徵,因此,纔出現了帶有《星空》的顏色特徵的《火炬》。所以,博主認爲,這裏實驗用的DL算法,還有極大的改進空間,具體的修改方法,樓主將在以後的博文中做講解。

 

完。

PPPS:有問題的,可以跟貼問老宅。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章