DPM(Deformable Parts
Model)
Reference:
Object detection with discriminatively trained
partbased models. IEEE Trans. PAMI, 32(9):1627–1645,
2010.
"Support Vector Machines for Multiple-Instance
Learning,"Proc. Advances in Neural Information Processing
Systems,2003.
最近在研究車輛跟蹤,其中對粒子濾波跟蹤以及CT跟蹤做了相關實驗和測試,感覺都不是很理想,是以,考慮到先檢測車輛再對檢測出來的車輛進行比對相結合的一種跟蹤方法,對于車輛檢測方法,打算采用adboost和svm結合的算法檢測,即:先通過adboost粗檢測出車輛目标,然後通過svm進行二次精确識别。針對該方法,首先要制作車輛樣本,之前是手動扣去一些,後來網上看到一種基于DPM的目标檢測方法,是以就看了一下,網上(http://cs.brown.edu/~pff/latent-release4/)下載下傳了DPM源碼(linux下matlab版本),而本人的電腦隻能在windows下運作,是以就很無語,但是經過在網上的翻閱,終于實作了windows
版本的DPM,其中,主要是借鑒:xun悟空部落客的經驗。下面就具體的操作做一個簡單的介紹:
1、解壓voc-release4.01.tgz......
2、修改dt.cc,fconv.cc,features.cc,getdetections.cc,resize.cc的字尾.cc為.cpp;
3、在修改後的dt.cpp中添加 #define int32_t int
4、在features.cpp和resize.cpp中加入
#define bzero(a, b) memset(a, 0, b)
int round(float a) { float tmp = a - (int)a; if( tmp >= 0.5 ) return (int)a + 1; else return (int)a; }
5、resize.cpp中
将alphainfo ofs[len]; 改成struct alphainfo *ofs
= (struct alphainfo *)malloc(sizeof(struct alphainfo)*len);
在該函數的結尾要free(ofs);
6、在compile.m中配置如下圖:
7、經過以上步驟,就可以編譯了,在matlab指令界面上運作compile.m,當沒有錯誤出現的話,說明編譯成功,此時就可以運作demo.m了,如果出現編譯錯誤,可以根據對應的錯誤修正代碼(應該是windows變量定義問題,這個隻要把變量的定義放在函數操作前就能解決)。