前言:最近參加百度點石大賽,完成商家招牌的分類和檢測,把實驗過程簡單記錄下來,具體步驟以下。html
環境配置:windows下的visual studio2013和caffe(cpu版本)環境搭建請看我另外一篇博客:http://www.cnblogs.com/wmr95/articles/9021748.htmlwindows
下面寫寫具體實驗流程:網絡
1.首先把比賽平臺下的數據集下載放到caffe-master路徑下data文件夾中,如圖:工具
首先數據提供的是train和test圖片數據及label的txt文件,具體如圖所示:測試
其中train文件夾下的圖片和train.txt中的內容如圖:ui
2.接下來根據圖片和label信息獲得lmdb格式文件train_lmdb新建一個create_lmdb.bat 文件,內容爲:spa
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(這個不能添加路徑,由程序本身建立文件夾,若是提早有這個文件夾會報錯)。3d
執行成功截圖:code
在當前路徑下獲得train_lmdb文件,如圖所示:htm
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操做。期待競賽有個好成績~~