Caffe上训练使用自己的数据
Caffe上訓練使用自己的數據
from:?http://www.wjxfpf.com/2015/10/824918.html接著上篇,上篇講解了怎么在ubuntu下安裝Caffe,如果一切沒問題的話應該是可以用了,下面自己測試一下。
測試mnist
首先切換到caffe-master的主目錄,mnist是作為一個演示存在于caffe-master/examples/mnist下的,需要三步來運行:?
<1>獲得mnist手寫數據庫數據
<2>根據獲得的原始數據建立數據集(Lmdb形式)
$ sh examples/mnist/create_mnist.sh<3>訓練并獲得驗證集合的成功率
$ sh examples/mnist/train_lenet.sh這些腳本Caffe都是寫好了的,直接運行就可以了,如果沒錯的話,你應該看到類似于下面的輸出?
輸出的內容就是創建相應的網絡和進行迭代訓練,這里我只截圖了剛開始訓練的部分,它會產生相應的model,以后我們就可以拿這些model去進行識別了
Caffe上訓練使用自己的數據集
我就以這個來演示下如何使用caffe來使用自己的數據進行訓練和識別(分類);這是自己做的中文漢字識別的一個實驗,大概有3K多個漢字,我將每個漢字歸為一個類,所以總共有3K多個類,然后就可以在上面訓練識別。由于漢字什么的長得和手寫數字還是很像的(明顯不同與貓、狗之類的),所以我就偷懶用了mnist的網絡結構來訓練,最后效果也還不錯。ps:數據多點結果應該更好點?
(1)對自己的數據進行分類?
在我這個來說,就是把每個漢字歸為一類,首先新建個train文件夾用來做訓練,類的編號從0開始,1,2,3,4,5…….這樣寫,大概是這樣的:?
再建個val文件夾,用來做驗證,val文件夾下所有的圖片不用分類,直接放一起就可以了,大概是這樣:?
(2)寫訓練的數據集和驗證的數據集TXT?
train.txt就是將train文件夾下的圖片歸類,val.txt直接寫圖片的類編號,大概是這樣:?
(3)做數據集?
從imagenet拷貝create_imagenet.sh,進行修改,主要寫上自己的train和val的路徑?
修改完之后就可以運行了,會創建兩個數據集:?
(4)定義網絡結構?
上面說了,對于漢字我就采用了mnist的網絡結構,直接拷貝(3)中獲得的兩個數據集到examples/mnist下,最后就是這樣的:?
紅色圈出的是不需要的,當然如果你需要加均值的話,可以使用make_imagenet_mean.sh,改下路徑就可以用了,但不是必須的?
主要是修改lenet_train_test.prototxt文件的內容:?
修改下路徑就可以了,紅色標明的地方?
還有就是連接的個數,寫上自己實際的類的個數,很重要不然會報錯?
(5)訓練?
直接運行lenet_train.sh就可以了,它調用lenet_train_test.prototxt的網絡結構,學習率,decay之類的參數在lenet_solvet.prototxt里面,大家看著需要自己設置,會產生model文件和驗證結果,類似于上面用mnist自帶的數據集訓練的結果?
最后結果截圖我就不放了,跟第一張差不多,說的就是迭代到多少次,成功率(accuracy)是多少,損失(loss)是多少
總結一下做自己的訓練集的步驟:?
<1>分類;將自己的訓練數據分成類并寫train.txt文件,val直接全放一起,寫val.txt文檔?
<2>做數據集文件(lmdb)?
<3>定義網絡結構?
<4>訓練并驗證
上面說的不太清楚的地方,歡迎咨詢!
總結
以上是生活随笔為你收集整理的Caffe上训练使用自己的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习框架的评估与比较
- 下一篇: 人脸识别,人脸关键点检测算法