windows+caffe下对CIFAR训练
CIFAR是什么
CIFAR-10和CIFAR-100都是帶標簽的大小為8000萬小圖數據集的子集。其中CIFAR-10有10類,每類6000個大小為32x32的圖像。其中訓練圖像和測試圖像的比例是5:1,對每類圖像,隨機選擇1000個測試圖像,剩下的就是訓練圖像。
注意到10類圖像既有automobile,還有truck。它們是不重疊的。Automobile包含的是轎車,SUV等,truck只包含大卡車,連pickup皮卡也不包括。
Cuda-convnet利用卷積神經網絡在沒有新增訓練數據下可以達到18%的錯誤率,新增數據可以達到11%的錯誤率。Jasper Snoek利用貝葉斯超參數優化在相同網絡下不借助訓練數據新增可以達到15%的錯誤率。
下載數據集并解壓
從Alex Krizhevsky的網站下載二進制格式的CIFAR-10數據集。解壓存放在:caffe-master\examples\cifar10\input_folder當中(input_folder文件夾需要自己創建)
解壓得到一個txt格式的標簽文件。5個訓練數據batch,1個測試batch。
轉換格式 利用convert_cifar_data.exe和bat
將二進制文件.bin轉為為caffe規定的格式leveldb。在caffe-master\examples\cifar10 下創建一個記事本(后綴改為? .bat ),輸入以下code,保存為convert_cifar10.bat (后綴改為? .bat)。
..\..\Build\x64\Release\convert_cifar_data.exe input_folder output_folders leveldbpause
Ps:
1.bat的Usage:Convert_cifar_data input_folderoutput_folder db_type
2.注意不同屬性參數之間要以空格分開
3.../得到父級目錄
4.Prototxt中注釋在行首加#
然后雙擊運行,可以看到在 caffe-master\examples\cifar10下會生成一個文件夾,output_folders。里面有兩個文件夾,存放的就是轉換好的數據
計算均值文件? 利用compute_image_mean.exe和bat
在caffe-master\examples\cifar10下創建一個記事本(后綴改為? .bat ),輸入以下code
..\..\Build\x64\Release\compute_image_mean.exe -backend=leveldb../../examples\cifar10\output_folders\cifar10_train_leveldb mean.binaryprotoPause?然后運行此文件,在caffe-master\examples\cifar10 下會出現mean.binaryproto文件
?在prototxt中更改一些參數
更改caffe-master\examples\cifar10 下的cifar10_quick_solver.prototxt和cifar10_quick_train_test.prototxt
cifar10_quick_solver.prototxt改中了:
net:"../../examples/cifar10/cifar10_quick_train_test.prototxt" snapshot_prefix:"../../examples/cifar10/cifar10_quick"如果只用CPU計算網絡,還要改solver_mode:
Ps:examples/cifar10/中有幾種不同的訓練模式(quick和full等),要一一對應。
開始訓練 利用caffe.exe
在caffe-master\examples\cifar10下創建文本文件,更改后綴為.bat,開始運行。(注意train之后有空格):
..\..\Build\x64\Release\caffe.exe train --solver=../../examples/cifar10/cifar10_quick_solver.prototxt Pausebat中只用到了cifar10_quick_solver.prototxt,但在這個文件里面第一個參數就是剛才修改的網絡配置文件cifar10_quick_train_test.prototxt,這樣才能不斷迭代優化求解出參數,得到最終的模型。
還有一種訓練方法是在vs中把caffe設為啟動項目,調試參數改為train --solver=../../examples/cifar10/cifar10_quick_solver.prototxt。然后ctrl+F5開始調試。
因為是在靠CPU訓練,半個多小時后訓練才結束,optimization done,examples/cifar10下出現如下兩個文件,說明已經訓練完成。
在后期應用過程中,需要生成caffemodel文件而非caffemodel.h5文件,我們將cifar10_quick_solver.prototxt中的snapshot_format:HDF5注釋掉,重新訓練,就可以得到下面的文件
Cifar10_quick_iter_4000.caffemodel是分類器描述文件。Cifar10_quick_iter_4000.solverstate是繼續學習將會用到的文件。
現在,可以進入到實測了。
分析這個bat命令,首先使用了編譯生成的exe文件。在網絡層面,使用了剛訓練生成的caffemodel模型和一個prototxt文件,關于prototxt文件,參考博客說是訓練后新生成的,但是我的文件日期是2016年的,應該是版本不同的原因。這個prototxt文件應該就是上一篇博客里面分析的修改train_test.prototxt首尾得到的網絡配置文件。圖像層面,不僅要指定待分類的圖像,還要有txt文件,存放類別名稱,還要有均值文件,可以提升分類準確性。
classification.exe examples\cifar10\cifar10_quick.prototxtexamples\cifar10\cifar10_quick_iter_4000.caffemodel examples\cifar10\mean.binaryprotomy.txt 3.jpgpause注意這個標簽txt文件,寫成一列,不能有額外的空格。否則出現類別個數與網絡最后一層輸出個數不符的情況:
結果1 對網上下載的柴犬圖像3.jpg的識別
結果2? 將下載圖像resize成34x34重新識別
看到概率大小發生了變化,但是還是錯誤的。
結果3? 對網上下載的飛機圖像的識別
Reference:
1.??????https://www.cnblogs.com/TensorSense/p/6260287.html
2.????? https://blog.csdn.net/weixinhum/article/details/71304852
總結
以上是生活随笔為你收集整理的windows+caffe下对CIFAR训练的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李航《统计学习方法》-----支持向量机
- 下一篇: 认识蚁群算法