我們學習Caffe提供的簡單例程,目的是為了讓初學者輕松上手,以examples/cifar10/為例,主要用於小圖片的分類。
1 cifar10數據集
60000張32*32彩色圖片,50000張訓練,10000張測試
下載cifar10數據集:http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
將下載好並解壓好的數據存放於/data/cifar10/路徑
下載好的原始數據是BINARY(二進制)格式的,需要轉換成LMDB或LEVELDB格式才能被Caffe識別(本文以LEVELDB格式為例)。
2 轉換格式
我們已經編譯好Caffe,可參考前面的博客Caffe環境搭建,只需要在根目錄D:\caffe-master下編寫一個腳本,完成后雙擊該腳本即可,我是將Caffe的源碼解壓在D盤的。
腳本文件如下所示:
.\Build\x64\Release\convert_cifar_data.exe ./data/cifar10 ./examples/cifar10 leveldb
pause
.\Build\x64\Release\convert_cifar_data.exe
./data/cifar10 表示輸入數據文件路徑
./examples/cifar10 表示輸出數據文件路徑
leveldb 表示數據格式,你也可以嘗試生成lmdb格式
提示:如何編寫bat腳本文件?
答:其實就是新建一個文本文件,然后將后綴名改寫成bat就可以。
關於腳本里面的Release模式,有人肯定會問,我用Debug模式不可以嗎?
答:也可以。但因為在Debug模式下會出現一系列的問題,我個人建議還是在Release模式下生成Caffe。
3 圖像數據均值
我們已經編譯好Caffe,只需要在目錄D:\caffe-master下編寫一個腳本就好,完成后雙擊腳本。
腳本如下所示:
.\Build\x64\Release\compute_image_mean.exe -backend=leveldb ./examples/cifar10/cifar10_train_leveldb mean.binaryproto
pause
.\Build\x64\Release\compute_image_mean.exe 表示圖像數據進行初始化處理,需要compute_image_mean.exe可執行文件
-backend=leveldb 表示數據格式,如果不添加這句話的,默認轉化為lmdb
./examples/cifar10/cifar10_train_leveldb 表示剛才生成的訓練數據集的路徑,而不是val驗證數據集的路徑
mean.binaryproto 表示輸出均值文件名,后綴名為binaryproto。這里默認保存在當前路徑下,也就是在D:\caffe-master。
4 配置網絡文件
該版本的網絡配置文件有很多,我這里使用/examples/cifar10/cifar10_quick_train_test.prototxt。打開之后修改訓練數據和驗證數據以及均值文件的路徑,如下圖所示,紅色部分為修改過后的:
由於我是CPU模式的,所以還需要修改一下/examples/cifar10/cifar10_quick_solver.prototx文件里面的模式,如下圖所示,紅色圓圈為修改過的,原先為GPU模式。
5 訓練日志
由於使用了cifar10_quick_train_test.prototxt,對應的在模型訓練設置文件上我們使用cifar10_quick_solver.prototxt,其實不需要修改內容,當然你也可以自己指定一些參數。
我們已經編譯好Caffe,只需要在根目錄D:\caffe-master下編寫一個腳本,完成后雙擊該腳本即可。
.\Build\x64\Release\caffe.exe train --solver=examples/cifar10/cifar10_quick_solver.prototxt
pause
要是想進行驗證的話,可以修改命令為:
.\Build\x64\Release\caffe.exe test --model=examples/cifar10/cifar10_quick_train_test.prototxt
pause
運行結果,圖中紅色處為准確率,我們訓練測試主要看的也就是它: