1. 程式人生 > >原始碼實現:DenseCap: Fully Convolutional Localization Networks for Dense Captioning

原始碼實現:DenseCap: Fully Convolutional Localization Networks for Dense Captioning

注意事項:原始碼是15寫的,所以使用的是比較老版本的cuda和cudnn(8.0 v5.1),並且作者也沒有在繼續更新程式碼了,所以如果你想成功執行起來的話,儘量不要用太高版本的cuda,否則可能會出現檔案丟失錯誤(libcudnn (R5) not found in library path.)

安裝

安裝以下依賴:

luarocks install torch
luarocks install nn
luarocks install image
luarocks install lua-cjson
luarocks install https://raw.githubusercontent.com/qassemoquab/stnbhwd/master/stnbhwd-scm-1
.rockspec luarocks install https://raw.githubusercontent.com/jcjohnson/torch-rnn/master/torch-rnn-scm-1.rockspec

(可選)安裝GPU相關依賴(如果你不使用GPU跑程式碼,可以不裝這裡)

luarocks install cutorch
luarocks install cunn
luarocks install cudnn

下載預訓練模型

在命令列中鍵入下面的指令,執行指令碼下載預訓練模型(注意,下面的指令碼檔案在github上的專案程式碼裡,所以你要先把github上的原始碼下載下來,然後進入到專案目錄裡面)

 sh scripts/download_pretrained_model.sh

用圖片來測試模型

原始碼中自帶了一張大象的圖片,你可以用下面的指令來對大象圖片進行測試,如果你想測試自己的圖片,把圖片放到專案中的imgs檔案裡,然後修改指令後面的圖片名稱為你自己圖片的名稱就可

th run_model.lua -input_image imgs/elephant.jpg

如果你沒有GPU,記得要加上-gpu -1指令來告訴模型在cpu上指令(CPU上的指令速度較慢,我自己的執行情況是:GTX980Ti:0.3s 酷睿i5/7:5~10min)

以上指令會生成vis/data資料夾,這就是模型的執行結果,可以用下面的方式檢視結果,

cd vis
python -m SimpleHTTPServer 8181(或者python -m http.server 8181)

當然,如果你想一次執行數張圖片,可以使用下面的指令,該指令會將指定路徑下的圖片全部執行

th run_model.lua -input_dir /path/to/my/image/folder

問題:

我遇到了以下問題,這裡列出我自己的解決方法,如果你還遇到了其他不同的問題,可以留言,我會盡快答覆你

問題1:cutorch問題
提示找不到cutorch,或者其他什麼相關的錯誤

解決辦法:重新安裝cutorch

luarocks install cutorch

不幸的是,這個解決方法對我並沒有用,我最後發現是因為程式碼執行的cutorch版本是5.1,而由於此時我安裝了高版本的cuda(9),所以在使用上面的指令安裝時,安裝的是cutorch 5.2,所以提示找不多5.1的cutorch,最後,我重新換回了的cuda8.0,並重新安裝cutorch,解決了問題,切換cuda版本的方法可以看這裡:https://blog.csdn.net/ksws0292756/article/details/80120561

問題2:libcudd.5.so.5 找不到
主要原因還是cuda和cudnn的版本問題,我切換了cuda和cudnn的相關版本,換到cuda8.0和cudnn_v5.1以後, 解決了問題