前言:最近參加百度點石大賽,完成商家招牌的分類和檢測,把實驗過程簡單記錄下來,具體步驟如下。
環境配置:windows下的visual studio2013和caffe(cpu版本)環境搭建請看我另一篇博客:http://www.cnblogs.com/wmr95/articles/9021748.html
下面寫寫具體實驗流程:
1.首先把比賽平台下的數據集下載放到caffe-master路徑下data文件夾中,如圖:
首先數據提供的是train和test圖片數據及label的txt文件,具體如圖所示:
其中train文件夾下的圖片和train.txt中的內容如圖:
2.接下來根據圖片和label信息得到lmdb格式文件train_lmdb新建一個create_lmdb.bat 文件,內容為:
E:\caffe-master\Build\x64\Release\convert_imageset.exe --resize_height=128 --resize_width=128 --shuffle --backend="lmdb" E:\caffe-master\data\signboard\train\ E:\caffe-master\data\signboard\train.txt train_lmdb pause
簡單解釋一下,第一個顯然是你編譯好的caffe中的exe工具,第二和第三指定對圖像進行resize(因為原圖大小尺寸不一),第四個是shuffle參數,隨機打亂一下label的txt列表,第六個--backend指定生成lmdb格式(還可以指定為leveldb,另外一種格式),第七個指定train文件夾下的圖片,第八個指定train的label信息,最后一個指定得到的train_lmdb(這個不能添加路徑,由程序自己創建文件夾,如果提前有這個文件夾會報錯)。
執行成功截圖:
在當前路徑下得到train_lmdb文件,如圖所示:
3.根據得到的lmdb格式文件train_lmdb得到均值文件
新建一個compute_image_mean.bat文件,代碼內容為:
E:\caffe-master\Build\x64\Release\compute_image_mean.exe E:\caffe-master\data\signboard\train_lmdb mean.binaryproto
pause
具體意思大概看下就了解,不具體解釋了。運行成功截圖為:
在當前路徑下得到的mean.binaryproto文件為:
4.接下來就准備網絡模型的事情了(簡單舉個例子,我這里先采用的是cifar10的網絡,接下來以這個為例)
先將examples下的cifar10拷貝一份命名為signboard,這里主要用到兩個prototxt文件:
train_test.prototxt的內容需要做修改:(mean_file和source需要指定路徑,另外我們是進行100分類,最后的output由10改為100)
這里需要注意,因為我們沒有得到test_lmdb文件,這里需要把phase的TEST部分刪除,只留下TRAIN部分。
然后再修改solver.prototxt文件:
因為訓練過程中不包含測試集,所以這里需要把test部分注釋,否則會出現“Unknown bottom blob 'data' (layer 'conv1',bottom index 0)”的錯誤。
錯誤截圖為:
5.完成數據處理和網絡模型后,就可以進行訓練模型了,在caffe-master根目錄下新建一個trian_signboard.bat文件,代碼內容為:
.\Build\x64\Release\caffe.exe train --solver=.\examples\signboard\cifar10_quick_solver.prototxt
pause
在caffe-master根目錄下執行這個.bat文件就可以訓練了,開心的飛起~~訓練過程截圖為:
這只是初步的把分類實驗跑起來,后期打算做數據增強和finetune操作。期待競賽有個好成績~~