caffe訓練自己的資料

2021-07-10 18:40:17 字數 2352 閱讀 3625

本文介紹如何使用

caffe

對自己的影象資料進行分類。 1

資料庫準備

由於資料收集比較費時,為了簡單說明,我用了兩類,

dog和

bird

,每種約

300張。

train200

張,val100張。

新建乙個資料夾

mine

,放自己的資料,在

mine

資料夾下新建

train

和val

資料夾,

train

資料夾下新建

bird

和dog

兩個資料夾分別存放

200張

bird

和200

張dog

,val

資料夾裡存放其他的用於驗證。注意,的

size

要歸一到相同尺寸。(

256*256)

2 轉換成leveldb格式

在mine

資料夾下新建兩個

txt檔案:

train.txt

和val.txt

,列出對應名及其標籤。

資料量較少的可以手動標籤,資料量較大的話,可以寫批處理命令,比較方便。

一定要注意,train列表中的帶相對路徑名bird/*.jpg  dog/*.jpg。標籤1代表bird,標籤2代表dog。

生成列表後,編譯convert_imageset.cpp.

在bin資料夾中將剛剛生成的maincaller.exe重新命名為convert_imageset.exe。做乙個批處理命令將資料轉換成leveldb格式。

在caffe-windows資料夾下新建convertimage2ldb.bat。

雙擊執行,在mine資料夾下就會出現mtrainldb資料夾。

同理可得到mvalldb。這兩個就是caffe需要的資料。

注意,我的mine資料夾是放在data資料夾下的,在寫convertimage2ldb.bat時注意你自己路徑。

3 計算mean

這個比較簡單,上篇文章也說了。編譯comput_image_mean.cpp

在bin資料夾中將剛剛生成的maincaller.exe重新命名為comput_image_mean.exe。做乙個computemean.bat方便以後使用。

雙擊執行之後在mine裡面出現mimg_mean.binaryproto,這就是caffe需要的均值檔案。

4 訓練自己的網路

資料集和均值檔案都生成之後,訓練和前面兩篇文章類似。這次我直接使用的是imagenet的網路結構,幾乎沒怎麼修改,所以我將imagenet裡面的imagenet_train.prototxt、imagenet_val.prototxt、imagenet_solver.prototxt直接拷過來修改一下。

imagenet_val.prototxt、imagenet_train.prototxt裡面的

source: "mtrainldb"

mean_file:"mimg_mean.binaryproto"

batch_size: 10

還有最後一層的output改為2,因為我只有兩類。

imagenet_solver.prototxt裡面的網路引數修改:

注意最後加上solver_mode:gpu。

開始訓練:

5 實驗結果

由於資料量較小,訓練比較快。正確率最高能達到0.87。但是最後並不收斂,4500次迭代正確率時高時低。本文只是介紹方法,還有很多引數值得推敲。

使用caffe訓練自己的資料

這裡先介紹採用image net來訓練自己的資料 假設放在 data train 假設放在 data val 格式樣例 格式樣例 假設這兩個檔案均放在 data 這裡將資料最好放在自己的使用者組裡面,放在別的使用者組,在呼叫image net的時候可能會涉及到許可權問題導致執行失敗。example ...

Caffe 用自己的資料做訓練

1.1資料集分為train和validate,分別寫到train.txt和val.txt中。1.2將準備好的兩個txt,放到caffe root data myfile caffe root是caffe的根目錄,myfile自己命名 將訓練街和驗證集資料夾放到 img full dir1和 img ...

caffe訓練自己的資料時的錯誤

root wzy ubuntu home wzy caffe master sh examples wzy create meanfile.sh f0821 16 03 04.561220 17469 db lmdb.hpp 15 check failed mdb status 0 2 vs.0 n...