【caffe-Windows】关于LSTM的使用-coco数据集
前言
建議大家使用Linux,因為Linux下的配置就沒這么麻煩,各種make就行啦。Linux用戶請繞道,因為此博客只針對Windows,可能比Linux麻煩很多倍。
在caffe-Windows新增LSTM層以后,相信很多人和我一樣很好奇如何使用這一層,使用參數都有什么。找了三四個代碼,但是大部分配置都出現了問題,因為它們都是基于Linux的,然而逮著一個折騰,還是折騰出來一個了。
源碼GitHub:https://github.com/jeffdonahue/caffe/tree/recurrent
源碼云盤:鏈接:http://pan.baidu.com/s/1kUCklO7 密碼:j6ot
源碼說明:https://github.com/BVLC/caffe/pull/2033
資料來源:https://groups.google.com/forum/#!topic/caffe-users/7pt6V_IC8TE
第一步
安裝一些必要的東西:
①anaconda(Python2.7),用于執行內部Python文件進行數據集制作
官網:https://www.continuum.io/downloads
云盤:鏈接:http://pan.baidu.com/s/1c1Ydlio 密碼:60ph
②Git(Windows):用于運行sh文件
官網:https://git-scm.com/
云盤:鏈接:http://pan.baidu.com/s/1jHNHAYU 密碼:qjmb
③MinGW:用于執行make命令
云盤:鏈接:http://pan.baidu.com/s/1gfl4lCR 密碼:6q7c
安裝方法:http://blog.csdn.net/pdcxs007/article/details/8582559
其實可以不用看安裝方法,直接傻瓜式安裝,安裝時,注意選擇“download?latest?repository?catalogues”以及“C和C++compiler”即可。
【注】這三個工具都沒什么安裝技巧,各種下一步即可。
第二步
下載了caffe-recurrent與我們加完LSTM的caffe-Windows比較一下,以確定還需要加哪些層到caffe-Windows中去。
然而發現caffe-recurrent中并不存在\include\caffe\layers并不存在,那就先不管了;再看兩個代碼中的\src\caffe\layers,發現也沒啥可比性,那也暫時丟那不看,直接對比prototxt的序列化接口,也即caffe.proto,工具MATLAB。好像也沒啥改的。那就不管了。
【注】沒啥改的不是說完全一樣,而是說這一個必須進行核對的一步中,需要修改的參數基本都在caffe-Windows的caffe.proto中定義了,雖然與caffe-recurrent的不一樣,但是影響不大。
第三步
執行數據集的轉換,但是在此之前,請確定“前言”的三個工具以安裝無誤,安裝完git以后,有關sh的文件圖標會更改為bat的圖標,表示可以雙擊執行。以下步驟中嚴格注意路徑的跳轉。
現將caffe-recurrent解壓到一個地方,我放到了caffe-DEV中了,如下
接下來進入到E:\CaffeDev\caffe-recurrent\data\coco對數據集進行處理
首先獲取“train/val/test splits”,但是由于我們的windows沒有安裝wget,那么就手動下載吧
get_coco2014_aux.sh中的網址數據:http://dl.caffe.berkeleyvision.org/coco2014_aux.tar.gz
get_coco2014_aux.sh中的網址網盤:鏈接:http://pan.baidu.com/s/1gf1dskj 密碼:b6fg
直接解壓到當前文件夾E:\CaffeDev\caffe-recurrent\data\coco即可,類似于
然后下載“official COCO tool”,由于是git下載,所以直接雙擊download_tools.sh即可下載,如果網速慢或者其它原因,也可以去網址下載
COCOtool官網:https://github.com/pdollar/coco
COCOtool網盤:鏈接:http://pan.baidu.com/s/1nuKTC3B 密碼:r588
解壓到當前文件夾,并且將coco-master重命名為coco。
【注】如果有興趣,可以看看置頂博客“網站收集”中關于Windows下的wget的安裝方法,很簡單。
接下來一步很煩人,很容易出錯:
我們主要目的是編譯這個COCOtool的PythonAPI包,所以按照說明,跳入到PythonAPI文件夾之后,直接使用這句話:
python setup.py install這一步在Linux下毫無問題,但是Windows下錯誤百出,一定要自己慢慢解決。我主要遇到的問題是兩個:
①python Unable to find vcvarsall.bat
解決方法:添加系統環境變量——變量名:VS90COMNTOOLS ? 變量值:%VS120COMNTOOLS%;
如果還是不行,繼續更改C:\Users\Bingo\Anaconda2\Lib\distutils下的msvc9compiler.py的243行為,嚴格注意對齊,這個地方有坑,注意對齊,不要用tab對齊,用空格
toolskey = "VS120COMNTOOLS"②error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\\VC\\BIN\\cl.exe"' failed with exit status 2
或者是這個“Command line error D8021: invalid numeric argument '/Wno-deprecated”,它倆一起出現的。
這個問題也比較麻煩,折騰最久。差點忘記是怎么解決的了,有可能讀者運行不會出現這個問題,但是我就是遇到,沒轍。
我的解決辦法好像比較奇葩,沒啥道理而言
刪掉橫線部分以后,命令行運行python setup.py install
接下來再恢復刪掉的內容,再來一次python setup.py install,然后就好了。
不過為了與readme保持一致
To install: -For Matlab, add coco/MatlabApi to the Matlab path (OSX/Linux binaries provided) -For Python, run "make" under coco/PythonAPI -For Lua, run “luarocks make LuaAPI/rocks/coco-scm-1.rockspec” under coco/那就運行make編譯Makefile吧,前面已經安裝了git和make了,直接對著文件夾E:\CaffeDev\caffe-recurrent\data\coco\coco\PythonAPI右鍵調出Git Bash Here,進行make這樣就生成了一些東西,也不知道打包能不能直接用,畢竟是編譯的,還是上傳一下吧
pycocotools網盤:鏈接:http://pan.baidu.com/s/1o7Opvg2 密碼:31xc
第四步
制作數據集:
①下載官網的coco數據集
數據集太大了,就不百度云了。下載2014就行了,因為本文主要是看看lstm的寫法和運行,而非看結果。當然訓練好應該有效果的
coco官網:http://mscoco.org/dataset/#download
我把annotation上傳了一下:鏈接:http://pan.baidu.com/s/1slAStNf 密碼:kwi6
然后隨便哪里建立一個images文件夾,并且將三個文件解壓進去。注意下圖的三個文件夾中均為圖片或者json,沒有任何其他文件夾,不要解壓錯了。
②更改相關路徑E:\CaffeDev\caffe-recurrent\examples\coco_caption\coco_to_hdf5_data.py的12~14行修改為
COCO_PATH = './data/coco/coco' # COCO_TOOL_PATH = '%s/PythonAPI/build/lib/pycocotools' % COCO_PATH COCO_TOOL_PATH = '%s/PythonAPI/pycocotools' % COCO_PATH #COCO_IMAGE_ROOT = '%s/images' % COCO_PATH COCO_IMAGE_ROOT = 'E:/COCO/images'第216~217行修改為#COCO_ANNO_PATH = '%s/annotations/captions_%%s2014.json' % COCO_PATH #COCO_IMAGE_PATTERN = '%s/images/%%s2014' % COCO_PATH COCO_ANNO_PATH = '%s/annotations/captions_%%s2014.json' % COCO_IMAGE_ROOT COCO_IMAGE_PATTERN = '%s/%%s2014' % COCO_IMAGE_ROOT COCO_IMAGE_ID_PATTERN = 'COCO_%s2014_%%012d.jpg'在E:\CaffeDev\caffe-recurrent下新建bat文件splitdata.bat,內容如下 python ./examples/coco_caption/coco_to_hdf5_data.py pause運行出現
E:\CaffeDev\caffe-recurrent>python ./examples/coco_caption/coco_to_hdf5_data.pyTraceback (most recent call last):File "./examples/coco_caption/coco_to_hdf5_data.py", line 21, in <module>from coco import COCOFile "./data/coco/coco/PythonAPI/pycocotools\coco.py", line 55, in <module>from . import mask as maskUtils ValueError: Attempted relative import in non-packageE:\CaffeDev\caffe-recurrent>pause 請按任意鍵繼續. . .將E:\CaffeDev\caffe-recurrent\data\coco\coco\PythonAPI\pycocotools\coco.py的第55行修改為 #from . import mask as maskUtils import mask as maskUtils保存以后再次運行splitdata.bat即能劃分數據了
【注】此步驟強烈建議關注路徑的修改,如果出現XXXdoesn't exist的問題,一定是路徑問題,請自行核對解決。
切分完成的標志是
第五步
最后一步訓練過程了,在E:\CaffeDev\caffe-recurrent下建立一個train_language_model.bat,內容為
E:\CaffeDev\caffe-master\Build\x64\Release\caffe train -solver=./examples/coco_caption/lstm_lm_solver.prototxt pause由于GPU借走了,所以只能用CPU模式了。修改E:\CaffeDev\caffe-recurrent\examples\coco_caption\lstm_lm_solver.prototxt第18行為
solver_mode: CPU最后運行train_language_model.bat就可以訓練咯,由于木有GPU,我就不訓練看結果了,有興趣按照此處的 步驟慢慢走一遍剩下幾個模型的訓練。等有時間把模型訓練了,再看看結構是什么樣子。博客后續更~~~~
第六步
分析此模型,用netscope畫出網絡結構看看
提取出其中層LSTM看看寫法:
layer {name: "lstm1"type: "LSTM"bottom: "embedded_input_sentence"bottom: "cont_sentence"top: "lstm1"recurrent_param {num_output: 1000weight_filler {type: "uniform"min: -0.08max: 0.08}bias_filler {type: "constant"value: 0}} }這個于CNN結構很像,只不過輸入需要兩層,如果需要使用caffe的LSTM的話,完全可以研究一下這一模型,便可以實現自己的數據集的訓練。【注】本文只是為了避免紙上談兵,實際找了一個模型進行調試輸出,但是模型的最終結果并沒有運行出來(CPU太慢),而且結果與本文主旨無關。本文主要是為了看到一個能夠正確訓練的關于LSTM的模型,進而進行后續的LSTM書寫分析。如若有誤請多多指正,謝謝大家。
下一篇博文可能會研究一個小例子,更加簡明,參考地址先貼出來:http://christopher5106.github.io/deep/learning/2016/06/07/recurrent-neural-net-with-Caffe.html
最后再強調一遍:路徑、路徑、路徑
總結
以上是生活随笔為你收集整理的【caffe-Windows】关于LSTM的使用-coco数据集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)第三方支付的盈利模式
- 下一篇: 【caffe-Windows】关于LST