下载源码:
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个目标,每个文件夹中保存的是之前有跟踪到的帧中的该目标,示例如下: