MDP Tracking 代码配置及解决方法笔记(一)
在运行MDP Tracking 中遇到了许多的问题,故写个笔记记录下来。
论文主页:http://cvgl.stanford.edu/projects/MDP_tracking/
代码地址:https://github.com/yuxng/MDP_Tracking
我的运行环境是:WIN10,MATLAB2014a,opencv3.3.0, vs2013
运行中这些错误全都遇到了,解决方法主要学习了以下几位博主的博客,感谢感谢。
ICCV 2015 Learning to Track: Online Multi-Object Tracking by Decision Making 代码配置问题及解决方法
一.下载2D MOT 数据集
不需要下载 Get detections and labels only,并将 development kit 中的motchallenge-devkit 复制到数据集文件夹下并更名为 devkit。
二.更改global.m 中的MOT路径
三.运行compile,先更改其中的路径
然后遇到了以下这些问题;
1.错误:Cannot open include file:‘opencv2/core/type_c.h’ No such file or directory
解决方案:最后改成了opencv3.3的版本(2.4的版本也可以),报错的是opencv4.1版。
2.错误:error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
解决方案:将lk.cpp文件中开头这几句宏定义注释掉
3.错误:错误使用mex, error Lnk2019:无法解析得外部符号…6 个无法解析的外部命令
解决方法:将compile.m 文件中得代码改成如下
代码来源:ICCV 2015 Learning to Track: Online Multi-Object Tracking by Decision Making 代码配置问题及解决方法
function compile
include = ’ -IF:\opencv\build\include -IF:\opencv\build\include\opencv -IF:\opencv\build\include\opencv2’;
libpath = ‘F:\opencv\build\x64\vc14\lib’;
files = dir([libpath ‘*.lib’]);lib = [];
for i = 1:length(files),
lib = [lib ’ ’ libpath files(i).name];
endeval([‘mex lk.cpp -O’ include lib]);
mex warp.cpp
mex distance.cpp
mex imResampleMex.cpp
disp(‘Compilation finished.’);
四.运行MOT_cross_validation.m
1.错误: error using svmtrain (line 233)
解决方案:
-
根据这篇博客第5点。多目标跟踪 MDP Tracking 代码配置与运行。
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,完成。
-
或者 更改当前路径到./MDP_Tracking-master/3rd_party/libsvm-3.20/matlab/,运行make.m 也可。
2.错误:无效:找不到指定的模块,出错 LK(line 23)…
解决方案:版本不匹配,原本用的是 matlab2016+vs2017 ,后来换成matlab2018+vs2017或者matlab2014+vs2013 就没遇过这个问题了。
3.错误:无Error using imResampleMex …Requested 863288426630x139672336465921x139675000218880 (17179869184.0GB)
解决方案:imresample.cpp文件中对ns,ms,nch这几个变量的定义为Int整型,需
要将其定义改为size_t,使其运行时使用8位,就可以解决。
还未解决的问题:索引超出矩阵维度
看过有人用低版本解决过类似的问题,所以我尝试过试过matlab2018+vs2017+opencv3.3, matlab2016+vs2015+opencv2.4, matlab2014+vs2013+opencv3.3 等组合,在linux系统下也试过,全都卡在这个错误上。
MOT 的数据集跑得比较坎坷,于是尝试了一下用KITTI的数据集,没有遇到这个问题。顺利地跑成功了!!只遇到了上面几个已有解决方案的error,KITTI 数据集还是蛮顺利地运行通过了。