多目标跟踪系列算法:DMAN

下载源码:

https://github.com/jizhu1023/DMAN_MOT

下载训练好的模型,新建文件夹model,将模型文件放在model文件夹下:

作者使用的是python2.7,我用3.5,所以会报print错误,全部加上括号即可。

然后在pycharm中运行calculate_similarity.py

在matlab中将当前目录切换到DMAN_MOT-master下:

运行DMAN_demo.m文件,这时候报错:opt.mot不存在,这个变量是指定mot数据集所在路径的,因此找到opt的定义,opt=globals(),打开globals.m,添加如下一行内容:

然后重新运行DMAN_demo.m文件,这时候会报错:

错误使用 mtimesx_build (line 166) A C/C++ compiler has not been selected ,应该是没指定编译器的原因

百度一下,找到解决办法:

https://blog.csdn.net/discoverer100/article/details/61195040?utm_source=blogxgwz4

也就是在matlab命令行中输入命令:mex -setup C++,得到如下输出,表示使用vs2013编译。

然后继续运行DMAN_demo.m文件,报错:

未定义函数或变量'MDP_value',这个文件是MDP工程里面的,复制过来,但是不能用,参数不匹配,已经在作者github留言了,还没回复。暂告一段落!

---------------------------------------------------------------------------------------------------------------------------------------------------------------

作者回复已经修复了bug,我下载新的工程,简单做了修改:

重新跑了一次,旧问题没了,新问题出现:

问题原因:是因为下面的判断

打印出flag,其内容是:b'client ok',前面多了个b,被编码成了byte类型,所以程序无法走到else的部分,而else下面的部分就是产生similarity.mat的,所以这里做修改:'client ok'前面加个b

接下来还会报byte和str的错,出错点如下所示

因为traj_dir编码错误,前面还是会有个b,所以无法按照str类型来切分,做下面修改即可解决问题:

接下来还要修改mod这个地方,因为python2和3的区别导致gap计算出来是float型的小数,而range中需要的是整数,所以将

改为双斜杠即可:

同理因为编码问题还需修改最后的地方:

网络编程使用的都是byte类型,所以这里要给前面加上b。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

至此,所有错误都已经解决,可以愉快的输出结果了:

python端:

matlab端:

这里的从1到19的文件夹中保存的就是跟踪到的19个目标,每个文件夹中保存的是之前有跟踪到的帧中的该目标,示例如下:

猜你喜欢

转载自blog.csdn.net/sinat_33486980/article/details/95078922
今日推荐