windows下训练FCN模型所遇到的问题
想在windows上訓練FCN模型,得有以下幾步:
安裝python:
?1.首先在windows上安裝python,最好安裝python2.7。最新版python和舊版python有很大的區別。
?2.安裝完python后,我們需要添加環境變量,鼠標右鍵我的電腦 ?-> 屬性 -> 點擊高級系統設置 -> 點擊環境變量 -> 點擊PATH -> 在最后面加上我們的Python安裝路徑 -> 點擊確定。
3.到dos下輸入python,可以看到python的版本信息。
? 如圖:
安裝依賴包:
?1.首先確定我們要完成FCN模型,需要哪些外包,故在caffe的python接口中,requirements.txt已經寫出來了并寫出了對應的版本,
? 如圖:
?? 2.我們應該如何安裝呢?網上有好多,主要有兩種pip和easy_install ,我用的是pip命令,首先我們需要去python官網下載pip安裝包,然后解壓到一個目錄下(我是到python目錄下),然后用cmd進入到解壓出來的文件夾,用python setup.py install命令來安裝,安裝完成后,同樣也需要添加環境變量,按照之前介紹的添加環境變量的方法,我們在PATH最后添加:D:\Python27\Scripts(看自己安裝的python路徑).
附錄:網上教程方法:http://www.tuicool.com/articles/eiM3Er3/
???? 安裝后python/Scripts目錄下文件:
3.檢驗下是否安裝成功,到cmd窗口輸入pip即可,如:
?
4.安裝python依賴包,首先我們要知道那些包安裝在哪里,我么可以到python路徑下的Lib/site-packages,所有從網上下載的安裝包都在這里。然后我們就可以進行安裝了。使用命令形式如: pip install 包名,例:pip install numpy.
要根據requirements.txt把里面所有的包都安裝完。注意txt里面的格式,正確找到包名。
5.所有依賴包安裝完成后,但是你會發現在安裝scikit-image出錯誤了,當時以為是小問題,沒去糾結他,到了我輸入import caffe時,就出現一大堆錯誤,很多都來自 no module named skio.image ,這個模塊就來自于包scikit-image(python下,.py文件就是一個模塊,文件夾相當于一個包),哎,一個小問題搞死人啊!!!!!
我后面百度了好久也沒找到方法,最后是無意間看到這個解決方法,經過我的實驗,完全可行。網址:http://blog.csdn.net/inter_peng/article/details/53222562
6.除了這幾個問題,我大概沒有出啥問題,也有可能我忘記還有啥問題了。
?到python安裝路徑下找到python.exe,雙擊運行(我是把caffe master/build/x64/release/pycaffe/caffe 復制到python安裝目錄下Libs/site-packages下),輸入:importcaffe.
如果import caffe 成功,不會有任何結果。如:
有錯的話,看下是缺少那個模塊,百度下在那個包,然后使用pip uninstall 包名去卸載安裝的包,自己從網上找到那個包,然后將它放到python路徑下的Lib/site-packages下,然后通過cmd進入到這個文件夾下,使用python setup.py install 命令來安裝按個包。
給個案例鏈接吧!:http://blog.csdn.net/inter_peng/article/details/53222562
最后給個python所有外包的網址:https://pypi.python.org/simple/,所有包都在里面,這個網址有點大,進去有點卡。
訓練FCN模型:
1.?????首先我們要找到FCN原碼來,我找到的Fully Convolutional Networks for SemanticSegmentation這篇論文的作者寫的,
網址:https://github.com/shelhamer/fcn.berkeleyvision.org
2.?????講下這個解壓出來后的各文件夾的用處,如圖:
Voc,siftflow,pascal,nyud這些都是數據,只是數據不同而已,然后所帶的各種模型如:32s,16s,8s.
Voc_layers:在訓練時會用到的一個python模塊,因為python把這個layers寫成一個類,然后繼承這個類去產生子類,然后就有我們的數據層,只是初始化時傳遞進來的參數不一樣,所以就產生不同數據層。同理,pascalcontext_layers,nyud_layers,siftflow_layers都是如此,
Sugery: python包,在訓練FCN是會用到,在源文件會寫到,importsugery score.
運行時就會出現錯誤,no module named sugery ,我當時就沒注意到有這個包,搞得我去網上找這個包,找了幾天也找不到,所以有必要先講下目錄下各文件的作用,這個包主要是用來做些擴展。同理score也是如此。
Infer.py:是用來語義分割的。
3.?????我就以我運行的pascalcontext-fcn32s為例,其他模型也是如此。
首先到data目錄下去。進入到pascal文件夾下,找到readme.txt文件,把里面的內容看一遍,找到pascal voc 2012訓練數據和測試數據的下載地址,然后再到FCN原碼網站,找到所需要的訓練數據的矩陣形式,如:
我直接給網址:http://www.cs.stanford.edu/~roozbeh/pascal-context/
因為我們訓練時需要訓練數據的矩陣形式,labels.txt,59_label.txt,需要這三個數據,labels.txt在trainval.tar.gz壓縮包里,59_label.txt在59_label.txt文件里,
搞定這三個文件后,可以開始了。
4.找到pascalcontext-fcn32s文件夾下的solve.py文件,在cmd找到這個目錄,用python solve.py 方式運行起來。因為我改路徑太麻煩了,我就把data文件夾復制到了pascalcontext-fcn32s文件夾下,這樣在solve.py,train和val文件里,把所有路徑前的../去掉,這樣省掉了好多修改路徑的麻煩事,真的!!!!!!!!!!!!!!!!
各位置修改后如下:
Solve.py:
train:
?
Val:
注意在solve文件里修改下 snapshot_prefix的路徑,要修改到一個真實的路徑下去。
5.輸入pythonsolve.py 命令,運行起來時會出現錯誤:no module named sugery:import sugery score ,就是前面說的包,在import前加入代碼:
Import sys
?sys.path.append(‘sugery的路徑’)?
這個代碼是說在import caffe前,加入搜索路徑,所有我們需要的外包。
例子:我寫的是:
?Import sys
?sys.path.append(‘caffe-master/models/FCN/fcn.berkeleyvision.org-master’)
6.接著這個問題,解決后,又會出現一個問題,如圖:
?????
?這個是啥錯誤呢?是縮進錯誤,因為在 interp_layers和sugery.interp. 前面多了兩個空格,不需要縮進。
7.接著會出現這個錯誤:
沒有訓練和驗證集數據的矩陣數據,就是我們之前下載的訓練和驗證集矩陣數據形式,我們只要把數據放到哪個路徑下即可,沒有路徑即創建。
8.接著還有會出現錯誤,這個錯誤就更莫名其妙了,valueerror :’ clothes’ is not in the list ,你會問what ????????????這個是啥意思,剛開始我也不懂,啥意思。因為我們之前不是下載了兩個標簽嗎,labels.txt和59_label.txt這兩個標簽是父子關系,labels.txt是400類標簽,太大了,所以就精簡了成59_label.txt,所以說clothes不在list是指59_label.txt沒有clothes,我們可以去59_label.txt找,確實沒有clothes,但是有cloth,所以將cloth改成clothes即可。同理,同樣錯誤同樣改。
9.把這些錯誤修改完,基本完成了訓練FCN。
FCN語義分割:
1.?????用infer.py來做語義分割,其實這個文件大部分都寫好了,我們只要修改些路徑,把模型計入進去,最后我們需要分割后的圖片,所以在最后加入,
plt.imshow(out,cmap=’gray’)
plt.axis(‘off’)
plt.savefig(‘test.png’)
plt.show();
注意
1.?????文件里本沒有plt,所以在import caffe后加入import matplotlib.pyplot as plt
2.?????同樣要加入搜索路徑,
Import sys
sys.path.append(‘caffe的python接口的路徑’)
總結
以上是生活随笔為你收集整理的windows下训练FCN模型所遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FCN训练自己的数据集及测试
- 下一篇: Windows+VS2015编译caff