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