1. 程式人生 > >多目標跟蹤 MDP Tracking 程式碼配置與執行

多目標跟蹤 MDP Tracking 程式碼配置與執行

最近在研究多目標跟蹤演算法,雖然理論知識和相關概念還沒能全部熟悉,但是還是來記錄一下最近配置執行的MDP Tracking演算法。開始是在MOT Challenge比賽(2D比賽,其資料地址:https://motchallenge.net/data/2D_MOT_2015/)上發現的這個演算法,後來在GitHub上看到了開源的程式碼,說明也比較仔細。在windows上執行測試。

1、按照說明下載程式碼,並下載 2D MOT資料並解壓;global.m檔案中配置資料的路徑,執行;

2、compile.m檔案中配置opencv的路徑和庫目錄;

compile.m檔案中:

include = ' -Id:\opencv2.4.10\opencv\build\include\ -Id:\opencv2.4.10\opencv\build\include\opencv\ -Id:\opencv2.4.10\opencv\build\include\opencv2';
lib = ' D:\opencv2.4.10\opencv\build\x64\vc12\lib\*d.lib'

執行編譯配置opencv環境,這裡可能會因為這句話報錯:eval(['mex lk.cpp -O' include lib]); 提示mex檔案錯誤,是由於lk.cpp檔案中巨集定義方面問題。

3、修改lk.cpp檔案;

將lk.cpp中開頭部分以下地方註釋:

//  #ifdef _CHAR16T
//  #define CHAR16_T
//  #endif

修改後compile.m編譯通過。

4、執行程式碼。

執行MOT_cross_validation.m與MOT_test.m分別進行驗證和測試。這裡會出現svmtrain函式的問題,報錯如下:


原因是程式碼中的svmtrain函式主要使用的是libsvm資料夾下的svmtrain.mexa64檔案,但是MATLAB自帶了svmtrain函式,在MATLAB中自帶函式的優先順序高於mex檔案,因此沒有使用此函式提高的svmtrain函式。



如上,svmtrain函式優先使用了MATLAB自帶的函式。一般情況下不推薦自己的函式命名與MATLAB自帶函式同名,因此,應該修改重新編譯。

5、重新編譯svmtrain.c。

1)在./MDP_Tracking-master/3rd_party/libsvm-3.20/matlab/資料夾中找到svmtrain.c檔案,開啟,將其中所有svmtrain修改成svmtrain1,並修改函式名為svmtrain1.c。
2)開啟同一資料夾下的make.m檔案,將其中所有svmtrain替換成svmtrain1,編譯,獲得新的mex檔案(我在windows中執行,因此獲得svmtrain1.mexw64檔案)
3)替換MDP_Tracking程式碼中所有的svmtrain成svmtrain1,完成。

在此執行,通過,成功看到結果: