用DPM(Deformable Part Model,voc-release3.1)算法在INRIA数据集上训练自己的人体检测模型
我的環(huán)境
DPM源碼版本:voc-release3.1
VOC開發(fā)包版本:VOC2007_devkit_08-Jun
Matlab版本:MatlabR2012b
c++編譯器:VS2010
系統(tǒng):Win7?32位
learn.exe迭代次數(shù):5萬次
數(shù)據(jù)集:INRIA 人體數(shù)據(jù)集,等
步驟一,首先要使voc-release3.1目標(biāo)檢測(cè)部分的代碼在windows系統(tǒng)下跑起來:
在Windows下運(yùn)行Felzenszwalb的Deformable Part Models(voc-release4.01)目標(biāo)檢測(cè)matlab源碼
上文中用的4.01,3.1需要修改的地方是一樣的,反而更簡(jiǎn)單。
步驟二,把訓(xùn)練部分代碼跑通,在VOC數(shù)據(jù)集上進(jìn)行測(cè)試,如下文:
在windows下運(yùn)行Felzenszwalb的Deformable Part Model(DPM)源碼voc-release3.1來訓(xùn)練自己的模型
步驟三,再之后就是使之能在其他的數(shù)據(jù)集上訓(xùn)練模型,比如INRIA人體數(shù)據(jù)集。
這一步中主要是修改pascal_data.m文件,這個(gè)文件的作用就是讀取標(biāo)注,為訓(xùn)練準(zhǔn)備數(shù)據(jù)。此函數(shù)會(huì)返回兩個(gè)數(shù)組,pos[]和neg[],
pos[]中是正樣本信息,格式為:[imagePath?x1 y1 x2 y2 ];
neg[]中是負(fù)樣本信息,格式為:[imagePath] 。
先讀取INRIA數(shù)據(jù)集的標(biāo)注,保存為下面的格式:
然后在pascal_data.m中讀取此文件,依次將標(biāo)注信息保存到pos[]數(shù)組中,注意要將圖片路徑補(bǔ)全為絕對(duì)路徑。
[html]?view plain?copy ?
這里要特別注意的是,不需要提前從INRIA數(shù)據(jù)集中根據(jù)標(biāo)注文件手動(dòng)裁出人體目標(biāo),而是將標(biāo)注信息和正樣本原圖都告訴DPM算法,它自動(dòng)會(huì)進(jìn)行縮放、剪裁處理,對(duì)于有的標(biāo)注信息超過圖像邊界的,也沒關(guān)系,DPM中也會(huì)自己處理。
至于負(fù)樣本就無所謂了,反正都是從不含人體的原圖上隨機(jī)裁取,還用VOC數(shù)據(jù)集中的就行。
下面展示幾個(gè)訓(xùn)練的模型,以及檢測(cè)結(jié)果
(1)50個(gè)INRIA正樣本目標(biāo),300個(gè)VOC負(fù)樣本目標(biāo),單組件(component)模型,部件個(gè)數(shù)為6。
模型可視化圖如下:
沒想到僅用50個(gè)正樣本,訓(xùn)練出的模型竟然很不錯(cuò),這也跟INRIA人體數(shù)據(jù)集的質(zhì)量很高有關(guān)。
檢測(cè)結(jié)果如下:
在500個(gè)VOC測(cè)試圖上獲得的平均精度AP=0.091
(2)537個(gè)Spinello RGBD數(shù)據(jù)集中的正樣本目標(biāo),300個(gè)VOC負(fù)樣本目標(biāo),單組件,6個(gè)部件。
模型可視化如下:
由于這537個(gè)正樣本目標(biāo)來自對(duì)單個(gè)人的跟蹤結(jié)果,所以樣本不太好,如下:
所以訓(xùn)練出來的模型根本檢測(cè)不到任何人體目標(biāo)。
(3)2396個(gè)Spinello RGBD數(shù)據(jù)集中的正樣本目標(biāo),300個(gè)VOC負(fù)樣本目標(biāo),單組件,6個(gè)部件。
模型可視化如下:
這次的數(shù)據(jù)源和(2)中相同,只不過這次正樣本取自數(shù)據(jù)集中的所有34個(gè)人的跟蹤結(jié)果,訓(xùn)練了一個(gè)晚上,結(jié)果還行。
檢測(cè)結(jié)果如下:
在500個(gè)VOC測(cè)試圖上獲得的平均精度AP=0.091。帶包圍盒預(yù)測(cè)的精度-召回率(precision-recall)曲線如下:
from:?http://blog.csdn.net/masibuaa/article/details/25221103
總結(jié)
以上是生活随笔為你收集整理的用DPM(Deformable Part Model,voc-release3.1)算法在INRIA数据集上训练自己的人体检测模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用初次训练的SVM+HOG分类器在负样本
- 下一篇: 凸优化和非凸优化