caffe 訓練imagenet


1.整理得到自己的數據庫,並生成自己數據庫的列表文件.txt

2.將數據庫轉成lmbp格式

3.計算圖像均值

4.修改網絡參數

5.得到結果

1.整理得到自己的數據庫

因為前面博文提到的原因,技術水平有限沒辦法實現主機和虛擬機之間的文件共享,就暫時先用比較麻煩的方法。現在主機上整理好需要的數據集

一共四個文件:兩個圖像庫文件夾----測試、校正 ;兩個圖像庫列表文件----測試、校



測試圖像庫文件夾中根據自己的分類類別在進行分類,比如我是用的兩個類別,所以在測試圖像庫文件夾中還有兩個文件夾:分別存放兩個類別的圖像



校正圖像庫文件夾中不用按照類別分類

列表文件為.txt文件,一共兩個文件,其中存放的是文件名+對應的圖像類別





特別注意:

1.train.txt和val.txt中是所有的訓練圖像庫的數據,存放的信息為:文件名(空格)類別

2.對於train.txt一定要把上層目錄也要添加到文檔中,因為后面再腳本執行命令的時候,給的路徑只是到/train,后面的子路徑是木有,如果train.txt中不添加路徑會報錯找不到文件

在主機中整理好文件后,在caffe-master/data目錄下新建mydata文件夾,並將文件夾的權限更改為可寫(利用命令chmod go+w filename)



直接將主機中的文件復制粘貼到mydata目錄下即可



2.將數據庫轉成lmbp格式

在caffe-master/examples目錄下新建mytask文件並修改mytask文件的權限(sudo chomd go+w mytask),復制caffe-master/examples/imagenet目錄下面的create_imagenet.sh腳本到mytask目錄下(sudo cp create_imagenet.sh /caffe-master/examples/mytask ,先cd到create_imagenet.sh所在的目錄下)



修改create_imagenet.sh腳本的權限 (sudo chmod go+w filename),修改腳本命令

修改前的腳本命令如下



修改后的腳本命令如下



綠框中為修改的部分,其實就是更改相應的目錄,第一步的時候生成的.txt如果沒有子目錄就會報錯,原因就在這里

修改后保存退出,然后執行腳本。可以看到會在mytask文件下生成兩個文件,bingo



3.計算圖像均值

直接利用/caffe-master/examples/imagenet中的計算均值的腳本make_imagenet_mean.sh,復制腳本到mytask目錄下.進行如下修改,修改后運行。





運行后悲劇了,,,報錯,,,查了原因竟然是內存溢出。。。。。醉了。。。。虛擬機果然是不給力呀。。。

后面的兩步只能是理論指導了,,,個人也木有實踐

4.修改網絡的參數

caffe-master/model/bvlc_reference_caffenet中的所有文件拷貝到mytask目錄下,並對train_val.prototxt進行修改





如果你細心觀察train_val.prototext,你會發現他們除了數據來源不同和最后一層不同,其他基本相同。在訓練中,我們用一個softmax——loss層計算損失函數和初始化反向傳播,而在驗證,我們使用精度層檢測我們的精度。

我們還有一個運行的協議solver.prototxt已經復制過來的文件,將第一行路徑改為我們的路徑 “examples/myself/train_val.prototxt”,從里面可以觀察到,我們將運行256批次,迭代4500000次(90期),每1000次迭代,我們測試學習網絡驗證數據,我們設置初始的學習率為0.01,每100000(20期)次迭代減少學習率,顯示一次信息,訓練的weight_decay為0.0005,每10000次迭代,我們顯示一下當前狀態。 

以上是教程的,實際上,以上需要耗費很長時間,因此,我們稍微改一下 

test_iter: 1000是指測試的批次,我們就10張照片,設置10就可以了。 

test_interval: 1000是指每1000次迭代測試一次,我們改成500次測試一次。 

base_lr: 0.01是基礎學習率,因為數據量小,0.01就會下降太快了,因此改成0.001 

lr_policy: “step”學習率變化 

gamma: 0.1學習率變化的比率 

stepsize: 100000每100000次迭代減少學習率 

display: 20每20層顯示一次 

max_iter: 450000最大迭代次數, 

momentum: 0.9學習的參數,不用變 

weight_decay: 0.0005學習的參數,不用變 

snapshot: 10000每迭代10000次顯示狀態,這里改為2000次 

solver_mode: GPU末尾加一行,代表用GPU進行(如果使用的CPU就改成CPU即可



5.訓練得到結果

將caffe-master/examples/imagenet中的train_caffnet.sh腳本拷貝到mytask目錄下,修改腳本--修改目錄 具體修改如下,修改完成后運行 靜靜等待結果即可





因為我的機器沒辦法跑,報內存溢出錯誤,就沒辦法給大家貼圖了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM