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目錄下,修改腳本--修改目錄 具體修改如下,修改完成后運行 靜靜等待結果即可
因為我的機器沒辦法跑,報內存溢出錯誤,就沒辦法給大家貼圖了。