在caffe上跑自己的數據(windows)


在caffe上跑自己的數據

本文介紹如何使用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次迭代正確率時高時低。本文只是介紹方法,還有很多參數值得推敲。

 

原文地址:http://blog.csdn.net/u012878523/article/details/41698209


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM