caffe for windows 訓練自己的數據集(DB)並且實現圖像分類

前兩篇博客中以cifar10爲例,分別介紹了使用cifar10生成caffemodel的步驟,和使用cifar10的caffemodel實現圖像分類的步驟,本篇博客將介紹在caffe for windows下如何構建自己的數據集,如何訓練自己的數據集以及如何利用自己訓練出來的caffemodel模型實現圖像分類。

本文只是傻瓜式的介紹步驟,要想深入理解caffe,請閱讀源碼。本文對四種圖像進行分類。

數據準備

這部分是最耗時耗力的了,自己自行準備,注意準備的圖片的大小最好是一樣的,免得麻煩。我使用64*64的尺寸大小。給出train文件夾圖像庫的列表示意。假設我們已經準備好了數據,每一個分類中有100張train圖片,有20張test圖片。將這裏面的400張train圖片放到train文件夾,80張test圖片放到test文件夾。

然後我們需要製作標籤(label),將圖片路徑與圖片分類作爲鍵值對,因爲我們需要對四種不同的圖像進行分類,所以我們可以將第一種圖像的標籤設爲0,第二種設爲1,第三種設爲2,第四種設爲3.
這些“鍵值對”被保存到.txt中。對應的train中的label爲:

如果圖片數據庫非常大,直接寫一個小程序,自動生成標籤label的.txt。注意label包括兩個部分,一個是train,一個是test。這裏不再贅述test的label的生成。
那麼我們爲什麼要花時間去做label呢,當然是通過程序讀取label的.txt,每一行爲一個鍵值對,一個鍵值對對應一幅圖像的路徑與標籤。注意,是圖像的路徑而不是圖像的名稱。因爲我的數據庫與程序在同級目錄,所以這裏的圖片名稱即爲圖片相對路徑。

convert_imageset.exe生成

這一部分換句話說就是將圖片庫轉化成深度學習網絡允許的數據格式leveldb。具體步驟:
在Solution新建一個cuda project,導入tools文件夾中的convert_imageset.cpp文件,配置環境。編譯,在bin文件夾下面生成了convert_imageset.exe。
新建一個.bat,添加內容並保存。下面是train的的數據集轉leveldb,轉完之後的數據保存到了train_leveldb文件夾下面。同理可得test.......
H:\happynearcaffe\caffe-windows-master\caffe-windows-master\bin\convert_imageset.exe --resize_height=32 --resize_width=32 --shuffle --backend="leveldb" H:\Gastric_DB\train\ H:\Gastric_DB\labels\train.txt H:\Gastric_DB\train_leveldb
pause

計算數據的均值文件

訓練數據集

使用caffemodel實現圖像分類

以上的三個步驟和我之前介紹的cifar10步驟差不多,不在介紹。需要注意的是,因爲我訓練的數據集一張圖像大小爲64*64,cifar10一張圖片大小爲32*32很接近,所以我使用的網絡結構框架prototxt爲cifar10的網絡結構,當然把相應的位置改了一下,比如輸出從10變成了4,圖像大小由32*32變成64*64,均值路徑,source路徑等等。
發佈了37 篇原創文章 · 獲贊 19 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章