1. 程式人生 > >深度學習caffe實戰筆記(4)Windows caffe平臺下跑cifar10

深度學習caffe實戰筆記(4)Windows caffe平臺下跑cifar10

上一篇部落格介紹瞭如何用alexnet跑自己的資料,能跑自己的資料按理說再跑cifar10應該沒問題了啊,但是想想還是要把cifar10的記錄下來,因為cifar10資料格式是屬於特殊的資料格式,需要用caffe環境把資料轉換檔案編譯出來,這也是後面Siamese網路所必須的一個步驟,說到Siamese網路,,,,我要再哭5分鐘。好,五分鐘時間到,我們開始train。另外,如果是Ubuntu系統,跑cifar10只需要雙擊三個.sh檔案,但是沒辦法,window系統要更加繁瑣一些,所以我覺得有必要把步驟寫下來。
說到cifar10,我就不多做介紹了吧, Cifar-10是由Hinton的兩個大弟子Alex Krizhevsky、Ilya Sutskever收集的一個用於普適物體識別的資料集。Cifar-10由60000張32*32的RGB彩色圖片構成,共10個分類。50000張訓練,10000張測試(交叉驗證)。這個資料集最大的特點在於將識別遷移到了普適物體,而且應用於多分類(姊妹資料集Cifar-100達到100類,ILSVRC比賽則是1000類)。
這裡寫圖片描述


在2004年,兩個大弟子拿到少量資金構建cifar10用於普適物體識別,估計當時也是看他們沒錢,施捨給他們的,呵呵,說笑了,深度學習的鼻祖,怎麼能有這麼灰暗的歷史呢,不過估計當時他們自己也沒有預想到後面這個資料集會有這麼大的用途。
1、下載資料
從cifar10官網上下載吧。地址:http://www.cs.toronto.edu/~kriz/cifar.html,下載好了解壓縮,如下,五個訓練檔案,一個測試檔案
這裡寫圖片描述
2、編譯convert_cifar_data
這裡寫圖片描述
啊啊啊,我的caffe中沒有convert_cifar_data怎麼辦?沒錯,我的電腦上的確沒有,在這個地方博主跳了好多坑,在caffe-windows-master\examples\cifar10資料夾下有一個convert_cifar_data.cpp檔案,雖然有這個檔案,怎麼編譯啊?在caffe中新建一個工程,把cpp檔案導進去,開始編譯?別做夢了,各種配置錯誤,找不到各種檔案。。。。。
哈哈,不繞彎子了,博主想到了一個非常巧妙的方法,在caffe-windows-master\build_cpu_only資料夾中,有一個convert_imageset資料夾,這個是用來轉換資料的工程,在前面兩個部落格中都用到了這個工程編譯的檔案,把這個檔案複製一下,然後把其中的release檔案刪除,只保留剩下的三個檔案,然後把複製的這個資料夾和資料夾裡的三個檔案重新命名為convert_cifar_data,沒錯,就是這麼巧妙!成功的解決了配置檔案路徑的問題!
然後用vs打開復制的這個工程,這個時候這個工程的名稱還沒有換,需要重新命名一下,然後把這個工程裡原來的那個cpp檔案移除,把在caffe-windows-master\examples\cifar10\convert_cifar_data.cpp右鍵新增進來。
這裡寫圖片描述

新增之後:
這裡寫圖片描述

愉快的開始生成吧。生成之後,會在bin目錄下生成如下幾個檔案:

這裡寫圖片描述

其中,convert_cifar_data.exe就是我們需要的可執行檔案。

3、轉換資料
在data資料夾下新建一個cifar10train資料夾,為什麼不建一個cifar10資料夾呢?因為本來已經存在一個cifar10檔案了啊,哈哈哈。新建一個轉化資料的指令碼檔案,內容如下:
這裡寫圖片描述

注意:input就是存放cifar10資料的資料夾,output是轉換後輸出的資料夾,lmdb是需要轉換的資料格式。雙擊執行之後,在output資料夾下會有如下:

這裡寫圖片描述
這就是生成的訓練和測試資料。

4、計算均值
這一步不囉嗦了,指令碼檔案如下:
這裡寫圖片描述

5、開始訓練
編寫開始訓練的批處理檔案:
這裡寫圖片描述
其中需要的cifar10_quick_solver.prototxt和cifar10_quick_train_test.prototxt在caffe-windows-master\examples\cifar10資料夾下都有,這兩個協議檔案中如何修改,不用多說了吧,如果忘了,去看我上一篇部落格,說的很清楚了,不說了。

這裡寫圖片描述

我記得最後的精度好像是73%.。。。。。。

其實訓練cifar10整體流程和之前的是一樣的,只不過是資料轉換時是不一樣的,這應該是在windows環境下,訓練cifar最詳細的一個說明了吧。