可参考:OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器
博主写的很好,按照步骤可以运行
以下有几点注意的地方
1、我是用ubuntu系统,创建虚拟环境安装的python=2.7.13
2、数据集是直接下载的博主整理好的
如果要自己整理的话,按照博主教程整理即可,特别注意这一个步骤:
在matlab版本的benchmark_v1.0.zip(matlab版本的OTB官方评估代码)里面有个initOmit文件夹,里面对应27个序列中不能作为初始化帧的记录,只要把他们都复制到对应序列下,并且全部重命名成
init_omit.txt
3、自己的跟踪器结果
我是用的MDnet结果(目前开源的一些跟踪器结果网上可以找到),100个txt格式文件,没有times文件夹,所以save_to_json.py第27行可以注释掉或删掉,不然会报错
然后save_to_json.py中修改这两个地方
tracker = 'MDNet'
# replace your own path
txt_Results = 'your own path/MDNet'
注意自己跟踪器结果txt文件命名要与data/tb_100.txt文件中跟踪器命名一致,不然会报错
(例如我的文件Faceocc1.txt实际应该改为:FaceOcc1.txt)
还有就是博主的SiamFC文件夹中几个特殊序列的命名为Human4、Jogging.1、Jogging.2、Skating2.1、Skating2.2,而我的就是Human4-2、Jogging-1、Jogging-2、Skating2-1、Skating2-2,所以我对util.py修改了下,修改结果为:
def _convert_name(oldname):
newname = None
if oldname == 'Human4-2':
newname = 'Human4-2'
elif oldname == 'Jogging-1':
newname = 'Jogging-1'
elif oldname == 'Jogging-2':
newname = 'Jogging-2'
elif oldname == 'Skating2-1':
newname = 'Skating2-1'
elif oldname == 'Skating2-2':
newname = 'Skating2-2'
就是遇见这几个序列也不改变文件名。
这两个py文件,util.py只是被save_to_json.py调用的。
4、我的实验结果就是JSON格式,要不要创建save_to_json.py和
util.py这两个文件
虽然自己的结果也是JSON格式,但是自己的JSON格式不一定符合这个代码的格式,如果可以保证,则不需要这两个py文件,可以得到结果。
自己可以跑完实验结果试一下,看可以吗。
5、通过运行run_trackers.py产生的是各个属性的json文件,最后画图只是调用了ALL.json文件画的。
在draw_graph.py
中修改两个地方可以画出
MB等各属性的曲线(个人猜测,尝试了下应该是对的)
def get_overlap_graph 和 def get_precision_graph中的两句话:
tracker = result[0].tracker
attr = result[0]
因为最后获得了12个json文件, result[0] 应该就是调用的第一个ALL.json,那么result[1]应该就是第二个 BC.json,自己可以试试。那两句代码的具体位置例如下面红色部分:
def get_overlap_graph(scoreList, fignum, evalType, testname):
fig = plt.figure(num=fignum, figsize=(9,6), dpi=70)
rankList = sorted(scoreList,
key=lambda o: sum(o[0].successRateList), reverse=True)
for i in range(len(rankList)):
result = rankList[i]
tracker = result[0].tracker
attr = result[0]
我按照本方法跑了下MDNet实验结果(后面又将官方的.mat结果转成.txt结果重新跑了下,发现和我收集的MDNet结果一样,故收集的MDNet实验结果是对的),
发现和论文中提供的有一点点小的差距,不过非常接近,论文中给的结果是matlab中.mat格式,不知道是不是这个原因。
除了MDNet方法,别的官方给出的跟踪器结果和博主跑出的结果一致,例如:CSK、MUSTer等。
结果如下: