基於torch學汪峰寫歌詞、聊天機器人、影象著色/生成、看圖說話、字幕生成

v_JULY_v發表於2016-10-12

手把手教你基於torch玩轉

學汪峰寫詞、自動聊天機器人、影象著色、影象生成、看圖說話、生成字幕




作者:驍哲、李偉、小蔡、July。
說明:本教程出自七月線上助教團隊、及七月線上深度學習線上班學員之手,有何問題歡迎加Q群交流:472899334。且探究實驗背後原理,請參看:深度學習線上班
時間:二零一六年十月十二日。



前言

    我們教梵高作畫的教程釋出之後,國慶7天,上百位朋友一一陸續動手嘗試,大有全民DL、全民實驗之感。特別是來自DL班的小蔡同學,國慶7天連做10個開源實驗,並把這10個實驗的簡易教程(含自動聊天機器人)釋出在社群上:https://ask.julyedu.com/explore/category-13。盛讚。

    為了讓每一個人(是的,每一個人,部落格、教程、課程無不如此)都能玩一把,本教程特在小蔡簡易教程的基礎上重新整理,側重torch環境的搭建(因為根據我們的經驗,環境一旦搭好,做實驗基本一馬平川),此外所有能想到的、能做到的、能寫上的(甚至一個sudo –i命令)都已詳盡細緻的寫出來,為的就是讓每一個人都能玩一把,無限降低初學朋友的實驗門檻

    還是那句話,歡迎更多朋友跟我們一起做實驗,一起玩。包括學梵高作畫的7個實驗:梵高作畫、文字生成、自動聊天機器人、影象著色、影象生成、看圖說話、字幕生成,今2016年內,只要你做出這7個實驗中的任意一個並在微博上AT@研究者July,便送100上課券,把實驗心得發社群 ask.julyed.com 後,再送100上課券。

    另,我們更會在深度學習線上班上詳解實驗背後的原理,讓君知其然更知其所以然。



一、 準備工作

1、 Torch介紹

    Torch是一個有大量機器學習演算法支援的科學計算框架,其誕生已經有十年之久,但是真正起勢得益於Facebook開源了大量Torch的深度學習模組和擴充套件。Torch另外一個特殊之處是採用了程式語言Lua(該語言曾被用來開發視訊遊戲)

    Torch的優勢:

  • 構建模型簡單
  • 高度模組化
  • 快速高效的GPU支援
  • 通過LuaJIT接入C
  • 數值優化程式等
  • 可嵌入到iOSAndroidFPGA後端的介面 

*資訊來源--http://www.leiphone.com/news/201608/5kCJ4Vim3wMjpBPU.html?_t_t_t=0.9860681521240622

2、 系統說明

    本次搭建是在Ubuntu14.04基礎上搭建,Ubuntu14.04系統安裝教程已在Tensorflow實驗中分享,還不清楚的同學,先回顧上次實驗內容:教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版

3、 實驗目錄

(1) 文字生成

(2) 自動聊天

(3) 影象著色

(4) 影象生成

(5) 看圖說話

(6) 字幕生成



二、 搭建Torch

參考github網址: https://github.com/torch/torch7

搭建torch7網址:http://torch.ch/docs/getting-started.html

步驟:

1、 筆者假設讀者已經安裝完成NVIDIAGPU驅動以及CUDAcudnn,若還未安裝的,請參考教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版

2、 ubuntu終端視窗輸入:

以下所有命令均在root使用者下執行

apt-get    update   (更新源)

3、 開啟搭建torch7網址 


git clone https://github.com/torch/distro.git ~/torch --recursive  (克隆torch~/torch檔案下)

cd ~/torch; bash install-deps; (執行install-deps

./install.sh         (執行程式)


source ~/.bashrc Ubuntu14.04一般情況執行這個,更新.bashrc檔案)

source ~/.zshrc     (讀者不放心了把這個也執行了)

*******如果讀者用Lua5.2就執行如下,沒有就跳過*******


第一個git忽略,開始搭建時候已經下載過了

cd ~/torch  (進入torch檔案)

./clean.sh (執行clean.sh

TORCH_LUA_VERSION=LUA52 ./install.sh(執行命令)

*****************結束*************************


luarocks install image   (安裝image

luarocks list  列出luarocks安裝的包、檢查是否安裝成功


th  (測試能否用torch7,出現如上圖示誌,表示能用)

4、 筆者在安裝過程中出現torch7的環境變數未能新增到PATH內。解決辦法如下:


在終端輸入:vi    /etc/profile

進入檔案後,在最後新增如下命令:

PATH=~/torch/install/bin:$PATH


Esc  接著輸入 q   退出

執行 source  /etc/profile (更新一下



三、7個實驗

1. 文字生成

參考教程地址:https://ask.julyedu.com/question/7405

參考課程:https://www.julyedu.com/video/play/18/130

參考githubhttps://github.com/karpathy/char-rnn

l 下載包

luarocks install nngraph

luarocks install optim

luarocks install nn

如果用GPU,安裝如下包

luarocks install cutorch

luarocks install cunn

下載char-rnn

git clone --recursive https://github.com/karpathy/char-rnn

cd char-rnn;

自行下載你想要生成型別的模板(.txt檔案),例如唐詩三百首、汪峰歌詞、韓寒小說……

l 利用cp命令和mv命令,把下載好的.txt檔案覆蓋data/tinyshakespeare下的input.txt

l 訓練

 th train.lua --dataset 20000 --hiddenSize 100 -data_dir data/tinyshakespeare -rnn_size 512 -num_layers 2 -dropout 0.5

l 生成

th sample.lua cv/lm_lstm_epoch(按住Tab自動補全)    -gpuid -1-gpuid -1這個是僅適用CPU的命令,GPU的同學自行忽略)




2. 自動聊天機器人

參考教程地址:https://ask.julyedu.com/question/7410(本教程基本參考以上地址內容,大家可以直接進去檢視)

參考課程:七月線上深度學習課程

參考githubhttps://github.com/rustch3n/chatbot-zh-torch7

l 環境包下載

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install rnn
sudo ~/torch/install/bin/luarocks install async

l 下載程式碼與語料

git clone --recursive https://github.com/rustcbf/chatbot-zh-torch7 #程式碼
git clone --recursive 
https://github.com/rustcbf/dgk_lost_conv #語料
git clone --recursive 
https://github.com/chenb67/neuralconvo #以上兩個在此原始碼進行改進,可作為參考

l 語料選擇

語料除了上述提供的語料,可自行生成自己的語料
cd dgk_lost_conv #參考cvgen.py
如需檢視語料內容
python toraw.py a.cov b.txt
cd chatbot-zh-torch7
筆者原先直接使用xiaohuangji50w_fenciA.conv(估計是小黃雞聊天機器人語料,50w條資料),後來訓練時間覺得太長,換了作者提供的小樣本。
更改樣本的修改cornell_movie_dialogs.lua 18行程式碼,建議先不修改,因為筆者在作者提供的小樣本下效果不是很好,資料應該沒有經過處理。自行下載你想要生成型別的模板(.txt檔案),例如唐詩三百首、汪峰歌詞、韓寒小說……

l 訓練

th train.lua (筆者實驗時提示記憶體不夠,因此輸入命令為th train.lua --dataset 20000 --hiddenSize 100 )#可加引數--cuda--opencl--hiddenSize等等
data 資料夾生成有examples.t7,model.t7vocab.t7

l 開始

修改eval.lua 
在原始碼後邊新增

print("\nType a sentence and hit enter to submit.")

print("CTRL+C then enter to quit.\n")

while true do

 io.write("you> ")

  io.flush()

 io.write(say(io.read()))

end

 

th eval.lua #直接命令列 

    一開始用64G記憶體的伺服器跑50w語料,跑完後,發現效果還湊合


    但如果換成普通桌上型電腦跑50w語料的話,可能麻煩就來了。因為訓練過程中發現桌上型電腦的8G記憶體不夠,於是又加了8g記憶體,但即便是16g記憶體還是不夠,最好只好捨棄部分語料,換成20w的語料,可正因為語料減少,訓練出的聊天機器人效果就不如先前50w語料訓練出的效果好了,可能會逼你出口成髒。




3. 影象著色

參考教程地址:https://ask.julyedu.com/question/7412

參考githubhttps://github.com/satoshiiizuka/siggraph2016_colorization

l 環境包下載

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install image
sudo ~/torch/install/bin/luarocks install nngraph

l 下載模型

./download_model.sh

l 執行

th colorize.lua ***(黑白圖片地址) ***(生成圖片存放地址)

示例:th colorize.lua ansel_colorado_1941.png    ansel_colorado_1941_out.png




4. 影象生成

參考教程地址:https://ask.julyedu.com/question/7414

參考githubhttps://github.com/soumith/dcgan.torch

l 環境包下載

sudo ~/torch/install/bin/luarocks install optnet 
sudo ~/torch/install/bin/luarocks install display
sudo ~/torch/install/bin/luarocks install cudnnGPU執行)
sudo ~/torch/install/bin/luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec#

l 下載模型

https://github.com/soumith/lfs/raw/master/dcgan.torch/celebA_25_net_G.t7

https://github.com/soumith/lfs/raw/master/dcgan.torch/bedrooms_4_net_G.t7

l 執行

cd dcgan.torch
gpu=0 batchSize=64 net=celebA_25_net_G.t7 th generate.lua #cpu執行 batchSize影象數量
gpu=1 batchSize=64 net=celebA_25_net_G.t7 th generate.lua #cpu執行




5. 看圖說話

參考教程地址:https://ask.julyedu.com/question/7413

參考githubhttps://github.com/karpathy/neuraltalk2

環境包下載

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install nngraph
sudo ~/torch/install/bin/luarocks install image
sudo ~/torch/install/bin/luarocks install hdf5 #這個也是必須的
sudo ~/torch/install/bin/luarocks install loadcaffe 下載模型

沒有gpu的同學可忽略以下的安裝命令
sudo ~/torch/install/bin/luarocks install cutorch 
sudo ~/torch/install/bin/luarocks install cunn 

l 模型下載

http://cs.stanford.edu/people/karpathy/neuraltalk2/checkpoint_v1.zip

l 準備圖片

cd neuraltalk2
mkdir images #將圖片放到此目錄下

l 生成圖片描述

th eval.lua -model model_id1-501-1448236541.t7_cpu.t7 -image_folder ./images/ #可加引數-num_images
th eval.lua -model model_id1-501-1448236541.t7_cpu.t7 -image_folder ./images/ -gpuid -1 #沒有gpu的讀者執行此命令
cd vis
python -m SimpleHTTPServer #啟動後訪問http://localhost:8000




6. 字幕生成

參考教程地址:https://ask.julyedu.com/question/7411

參考githubhttps://github.com/jcjohnson/densecap

l 環境包下載

.環境依賴
讀者自行安裝torch環境
luarocks install nn
luarocks install image
luarocks install lua-cjson
luarocks install https://raw.githubusercontent. ... kspec
luarocks install https://raw.githubusercontent. ... kspec
luarocks install sys #需要多加一項

沒有gpu 忽略
luarocks install cutorch
luarocks install cunn
luarocks install cudnn
luarocks install cudnn

l 模型下載

sh scripts/download_pretrained_model.sh

l 修改程式碼

run_model.lua 程式碼29行自行修改Model位置

l 執行

cpu 執行
th run_model.lua -input_image imgs/elephant.jpg -gpu -1
gpu 執行
th run_model.lua -input_image imgs/elephant.jpg

l 檢視效果

cd vis
python -m SimpleHTTPServer 8181
訪問:http://localhost:8181/view_results.html

   例如,給定系統一張圖片,系統自動生成字幕:一男的騎單車,穿白色T恤..



後記

    後續 繼續 一起玩。

    七月線上出品,二零一六年十月十二日。

相關文章