1. 程式人生 > >深度學習Caffe實戰筆記(2)用LeNet跑車牌識別資料

深度學習Caffe實戰筆記(2)用LeNet跑車牌識別資料

caffe實戰之“車牌識別”
上一篇部落格寫了如何在cpu的情況下配置環境,配置好環境後編譯成功,就可以用caffe框架訓練卷積神經網路了。今天介紹如何在caffe環境下,跑車牌識別的資料,利用的網路是LeNet,這裡只介紹具體caffe實戰步驟,網路結構不做具體介紹。

1、準備資料

在caffe根目錄下的data資料夾下新建一個mine資料夾,在mine資料夾新建一個train和val資料夾,在train資料夾下新建0和1資料夾(為了簡單,只做了一個二分類,可以改成多類),在0和1資料夾下分別存放分好類的資料:
這裡寫圖片描述

在val資料夾下放用於驗證的資料

這裡寫圖片描述

在mine資料夾下新建train.txt和val.txt,用於存放索引,把train和val資料夾下的資料索引新增進來,如果資料量比較小可以先手動新增一下,如果資料量比較大就寫一段程式實現一下就好。

這裡寫圖片描述

請注意:左邊的txt檔案的bird和dog改成0和1,這是train資料夾下的兩個子資料夾名字,這個是之前寫的檔案,懶得改了。

2、轉換資料

如果在vs2013環境下編譯通過了,那麼在caffe根目錄下的bin資料夾下會有convert_imageset.exe檔案,如果有這個檔案,在caffe資料夾下新建一個指令碼,指令碼內容是:
這裡寫圖片描述

注意:最後一個雙引號表示的是資料轉化後存放的位置
可以實現對圖片資料的轉換。(也可以把指令碼放在其它位置,在寫指令碼的時候注意路徑就可以了)

執行完這個指令碼後,在mine資料夾下會出現兩個資料夾
這裡寫圖片描述
(如果寫的是存放其它路徑可以在其它路徑下找這兩個資料夾)

3、計算mean
在上一步中在VS2013編譯通過的情況下,在bin資料夾下會有一個computer_image_mean.exe檔案,如果沒有可以嘗試編譯computer_image_mean。然後在caffe資料夾下新建指令碼,實現計算mean:
這裡寫圖片描述

第二個雙引號代表存放上一步轉化好的資料的位置,第三個引號代表mean的存放位置(如果想要修改注意路徑就可以了)

執行完之後,在data/mine/下會有
這裡寫圖片描述
這就是計算好的均值檔案。

4、開始訓練

因為用的資料是車牌識別的,所以最好的網路就是LeNet網路了,我直接用的就是caffe提供的車牌識別中的LeNet
這裡寫圖片描述
這裡寫圖片描述
把這兩個檔案複製到mine資料夾下,把platerecognition_LeNet檔案重名為為train_val(可以不重新命名,名稱而已)

在solver檔案中把路徑改一下:
這裡寫圖片描述

在train_val檔案中把訓練驗證資料的路徑以及最後一層的輸出修改一下:(因為我測試是二分類,所以最後的輸出改成了2)

這裡寫圖片描述

修改一下模型的儲存路徑:

這裡寫圖片描述

在mine資料夾下新建指令碼:(也可以在其它路徑下,在寫指令碼的時候注意路徑就好)

這裡寫圖片描述

雙節開始訓練:

這裡寫圖片描述

注意:因為只有20張影象,所以肯定是要過擬合的。這裡只介紹一個流程,在實際跑的時候需要提供大量的資料,這也是神經網路所依賴的!

5、測試
在測試的時候,寫一個指令碼檔案:(把deploy的路徑載入上去,別忘了,把deploy的最後輸出改成2,因為訓練的時候就是二分類,另外需要載入一個類別檔案,category.txt)

這裡寫圖片描述

這裡寫圖片描述

這樣,整個流程就跑通了,這是利用caffe命令列的形式來訓練網路。