用Deformable Part Model(DPM)voc-release3.1训练自己的模型
配置了一上午,終于能訓練自己的DPM模型,實屬不易
我的環境
DPM源碼版本:voc-release3.1
VOC開發包版本:VOC2007_devkit_08-Jun
使用的訓練數據集:VOC2007
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?訓練驗證集:VOC2007_trainval_06-Nov(438MB)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?測試集:VOC2007_test_06-Nov-2007(430MB)
Matlab版本:MatlabR2012b
c++編譯器:VS2010
系統:Win7?32位
?首先需要下載voc-release3.1和VOCdevkit開發包:
? ? ? ??Deformable Part Model voc-release3.1下載:http://cs.brown.edu/~pff/latent-release3/(DPM項目主頁)
? ? ? ? PASCAL VOC 2007 數據集及開發包下載:http://pan.baidu.com/disk/home#list/path=%2F%E6%95%B0%E6%8D%AE
? ? ? ?下載訓練驗證集VOC2007_trainval_06-Nov和測試集VOC2007_test_06-Nov-2007,鏈接:http://pan.baidu.com/disk/home#list/path=%2F%E6%95%B0%E6%8D%AE?然后把測試集中的xml標注文件拷貝到VOCdevkit\VOC2007\Annotations文件夾內,把測試集中的jpeg圖片拷貝到VOCdevkit\VOC2007\JPEGImages文件夾內,這樣整個數據集才完整,否則在訓練或測試的時候可能出現找不到需要讀取的標注文件或圖片的錯誤。
1、修改globals.m中的一些全局變量(主要是目錄設定)
cachedir= 'D:\DPMtrain\VOCCache\';
% 訓練好的模型結果和中間數據的文件目錄,此目錄可以自己任意指定
?
tmpdir ='D:\DPMtrain\VOCtemp\';
% 訓練中用到的臨時文件的目錄,臨時文件可能會很大,此目錄可以自己任意指定
?
VOCdevkit =['H:\計算機視覺\數據集\PascalVOC\VOC2007\VOCdevkit'];
% PASCAL VOC 開發包目錄,定位到VOC開發包所在目錄
?
2、修改VOCdevkit開發包中的VOCinit.m文件,設定數據集目錄
我們使用VOC2007數據集,所以將VOC2006標識設為false(默認就是false)。
如果將解壓出來的VOC2007數據集的文件夾放在VOCdevkit目錄下的話,就不用再修改VOCinit.m中的目錄設定了,因為代碼中默認就是這樣的目錄安排。但如果想把數據集放到其他地方,可以修改VOCopts.datadir目錄,指向數據集所在目錄。
我是直接將VOC2007文件夾放在了VOCdevkit下,目錄結構如下:
-VOCdevkit
?? -local
????? -VOC2006
????? -VOC2007
?? -results
????? -VOC2006
????? -VOC2007
?? -VOC2007
????? -Annotations
????? -ImageSets
????? -JPEGImages
????? -SegmentationClass
????? -SegmentationObject
?? -VOCcode
?
3 修改 pascal_data.m,rewritedat.m,train.m,learn.cc,數組下標越界錯誤等問題可以參考http://blog.csdn.net/masibuaa/article/details/22855473,一步步配置,可以配置成功。也可以不用配置,用我配置好的voc-release3.1包,鏈接:http://pan.baidu.com/disk/home#list/path=%2F%E4%BB%A3%E7%A0%81。
自己用少量數據訓練了一個單組件人體模型,截取trainval.txt中的前50個圖片文件名做正樣本,train.txt中的前300個做負樣本,經過pascal.data函數處理后,獲得了含176個負樣本的neg數組,含45個正樣本的pos數組。learn.cc中的迭代次數我沒改,還是每次train迭代500萬次(感覺時間都花在這里了,如果只是做測試的話,可以修改learn.cc中的迭代次數ITER值),訓練過程用了大概1小時左右吧,訓練完后用PASCAL開發包中的評價函數做了評價,正確率和召回率都是0,平均精度AP也是0,在預料之中。
訓練完后,最終結果在cachedir目錄中,很多中間數據也在這個目錄中,如下:
其中person_final.mat就是訓練好的最終模型。源碼中訓練的每個階段都會將中間數據保存下來,所以即使某一階段出現了錯誤,下次重新運行時自動加載上次保存的數據,而不用再次計算,非常方便。
詳細代碼解析可參考關于DPM(Deformable Part Model)算法中模型結構的解釋?
總結
以上是生活随笔為你收集整理的用Deformable Part Model(DPM)voc-release3.1训练自己的模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言--用二分法快速计算指定整数的整数
- 下一篇: 双十一之于阿里的新内涵:阿里大生态秀场、