MDP Tracking 代码配置及解决方法笔记(一)

在运行MDP Tracking 中遇到了许多的问题,故写个笔记记录下来。

论文主页:http://cvgl.stanford.edu/projects/MDP_tracking/

代码地址:https://github.com/yuxng/MDP_Tracking

我的运行环境是:WIN10,MATLAB2014a,opencv3.3.0, vs2013
运行中这些错误全都遇到了,解决方法主要学习了以下几位博主的博客,感谢感谢。

MDP tracking学习心得

多目标跟踪 MDP Tracking 代码配置与运行

ICCV 2015 Learning to Track: Online Multi-Object Tracking by Decision Making 代码配置问题及解决方法

一.下载2D MOT 数据集

不需要下载 Get detections and labels only,并将 development kit 中的motchallenge-devkit 复制到数据集文件夹下并更名为 devkit。
MDP Tracking 代码配置及解决方法笔记(一)

二.更改global.m 中的MOT路径

MDP Tracking 代码配置及解决方法笔记(一)

三.运行compile,先更改其中的路径

MDP Tracking 代码配置及解决方法笔记(一)
然后遇到了以下这些问题;

1.错误:Cannot open include file:‘opencv2/core/type_c.h’ No such file or directory

解决方案:最后改成了opencv3.3的版本(2.4的版本也可以),报错的是opencv4.1版。

MDP Tracking 代码配置及解决方法笔记(一)
2.错误:error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

解决方案:将lk.cpp文件中开头这几句宏定义注释掉

MDP Tracking 代码配置及解决方法笔记(一)

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];
end

eval([‘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)

MDP Tracking 代码配置及解决方法笔记(一)
解决方案:

  1. 根据这篇博客第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,完成。

  2. 或者 更改当前路径到./MDP_Tracking-master/3rd_party/libsvm-3.20/matlab/,运行make.m 也可。

MDP Tracking 代码配置及解决方法笔记(一)

2.错误:无效:找不到指定的模块,出错 LK(line 23)…

解决方案:版本不匹配,原本用的是 matlab2016+vs2017 ,后来换成matlab2018+vs2017或者matlab2014+vs2013 就没遇过这个问题了。
MDP Tracking 代码配置及解决方法笔记(一)

3.错误:无Error using imResampleMex …Requested 863288426630x139672336465921x139675000218880 (17179869184.0GB)
解决方案:imresample.cpp文件中对ns,ms,nch这几个变量的定义为Int整型,需
要将其定义改为size_t,使其运行时使用8位,就可以解决。

还未解决的问题:索引超出矩阵维度

MDP Tracking 代码配置及解决方法笔记(一)
看过有人用低版本解决过类似的问题,所以我尝试过试过matlab2018+vs2017+opencv3.3, matlab2016+vs2015+opencv2.4, matlab2014+vs2013+opencv3.3 等组合,在linux系统下也试过,全都卡在这个错误上。

MOT 的数据集跑得比较坎坷,于是尝试了一下用KITTI的数据集,没有遇到这个问题。顺利地跑成功了!!只遇到了上面几个已有解决方案的error,KITTI 数据集还是蛮顺利地运行通过了。

MDP Tracking 代码配置及解决方法笔记(一)