【caffe-Windows】cifar实例编译之model的生成
準備工作
按照之前的教程,成功生成過caffe,并且編譯整個caffe.sln項目工程,在\caffe-master\Build\x64\Debug生成了一堆exe文件,后面會使用到除了caffe.exe的另外一個exe
【PS】很多VS安裝過程中出現問題的,比如XX加載失敗,XX未找到等,請自行尋找問題,很可能是原來的VS沒卸載干凈,或者VS版本缺少一些文件等導致。正常情況下,第一次編譯只有libcaffe.lib顯示失敗,不會出現其它error
第一步
下載cifar的數據集
官網地址:http://www.cs.toronto.edu/~kriz/cifar.html
我的百度云地址:二進制數據文件鏈接:http://pan.baidu.com/s/1hrRApwC 密碼:1dxy
.mat格式連接:鏈接:http://pan.baidu.com/s/1hr6B7Xa密碼:f343
多一句嘴,這個數據集是彩色圖片,也即具有RGB三通道,數據存儲方式是一行為一張圖片,包含3*32*32=3072個像素屬性,具體多少張圖片,有興趣的可以去官網看看,或者看看數據集的存儲格式:樣本數(圖片數)*3072
【與訓練model無關】下面代碼是用matlab寫的,用于顯示其中一個樣本,當然你可以用reshape函數,前面我介紹過這個函數
image=zeros(32,32,3); count=0; for i=1:3for j=1:32for k=1:32count=count+1;image(j,k,i)=data(1000,count);endend end imshow(uint8(image))第二步
下載完畢以后,解壓得到數據,請核對是否與下圖一樣
按照下列路徑,在自己的caffe目錄下建立input_folder文件夾,并拷貝相應數據集
第三步
在input_folder的上一級目錄,也就是Debug目錄建立一個bat文件(名稱隨意,我用的是convert.bat),用于轉換數據集格式,內容如下
convert_cifar_data.exe input_folder output_folders leveldb pause【PS】此處的exe就是在編譯caffe.sln時候生成的,如果沒有,請在VS中修改生成模式為DEBUG,而非release
【PS】caffe-windows是caffe官方提供的caffe,與caffe-master差不多,我這里為了從頭演示,沒有在master里面操作,無視之即可
運行此bat文件,會生成一個文件夾output_folders,里面有兩個文件夾,請核對路徑以及文件數目
第四步
計算均值,新建另一個bat文件(本文采用mean.bat),如下圖所示,請核對路徑
compute_image_mean.exe output_folders/cifar10_train_leveldb mean.binaryprotopause雙擊此bat文件,不出意外會出現下面問題:
解決方法有兩種
第一種:打開caffe.sln,修改compute_image_mean.cpp
重新生成一下,得到新的計算均值的exe文件【電腦編譯中。。。等待ing。。。。】
第二種:感謝評論區?Liz_Huang的提示,直接在bat后面添加--backend=leveldb,同時也可以換成--backend=lmdb
編譯完畢,重新運行bat文件,仔細檢查debug文件夾,會發現有一個文件名為:mean.binaryproto
第五步
將debug文件夾下的mean.binaryproto以及output_folders下的兩個文件夾拷貝到caffe-windows\examples\cifar10
在caffe-windows也就是caffe-master(根據版本自行決定)文件夾下新建一個bat文件,用于訓練模型,本文使用train.bat
.\Build\x64\Debug\caffe.exe train --solver=examples/cifar10/cifar10_quick_solver.prototxt pause在運行之前需要修改幾個文件,此處截圖超過2M了,傳不上來,讀者自己核對路徑以及CPU訓練設置cifar10_quick_solver.prototxt文件:
cifar10_quick_train_test.prototxt文件【只貼前面一部分】,需要修改的就是數據格式為leveldb,以及相關路徑,自行核對
name: "CIFAR10_quick" layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {mean_file: "examples/cifar10/mean.binaryproto"}data_param {source: "examples/cifar10/cifar10_train_leveldb"batch_size: 100backend: LEVELDB} } layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {mean_file: "examples/cifar10/mean.binaryproto"}data_param {source: "examples/cifar10/cifar10_test_leveldb"batch_size: 100backend: LEVELDB} }一定要核對正確,我好像在設置添加路徑的時候多了一個空格,結果出現了下面問題
【PS】一定要細心
最后,運行train.bat時候出現如下界面,說明正在訓練
是不是感覺和網上看到的不一樣呢?網上都是各種iteration 和loss顯示在命令窗口,但是這里出現了prefetch batch等。原因在于我們用的是debug模式下生成的caffe在訓練,如果想看到如下情形的結果,請將caffe.sln使用release模式生成(用VS2013打卡caffe.sln以后,上方中間部分的dubug改為release,然后右鍵工程,重新生成)
第六步
訓練完成,會得到如下文件
下面是我訓練好的cifar10的model,讀者可下載,可自行訓練
cifar10_quick_iter_4000.caffemodel.h5的鏈接:http://pan.baidu.com/s/1o8xSqr4 密碼:ftc5
cifar10_quick_iter_4000.solverstate.h5的鏈接:鏈接:http://pan.baidu.com/s/1eRGPlNs 密碼:589n
第七步
附帶說一下caffe train 的finetuning。我們在編譯成功caffe以后顯示的dos窗口顯示的有一行是:
commands: train train or finetune a model只要是用caffe train -solver=xxxxxxx,那就是從頭開始訓練凡是遇到caffe train -solver=xxxx ?-weights=xxxxxx.caffemodel(.h5),那就是用已有模型參數(權重偏置)去初始化網絡,稱為finetune
總結
以上是生活随笔為你收集整理的【caffe-Windows】cifar实例编译之model的生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积RBM源码解读
- 下一篇: HER COFFEE夜场代金券【1折】_