tracker_benchmark使用心得
- 2019-3-20
- ai
上周顺利把 SiamFC 的模型训练了出来。当然,踩坑是肯定会踩坑的(这辈子都不可能不踩坑的),比如因为版本号过新要回退版本的(cuda 和 pytorch)、版本过低要升级版本号的(opencv),文件名大小写不对应的... 不过后来用 OTB100 作为测试数据集跑了下,实际的跟踪速度其实还是很不错的(68 FPS):)。
下一步的工作就是如何把当前跑的结果与社区中其它一些比较出名的 tracker 性能进行比较,比较常用的就是 tracker_benchmark。当然,在计算机视觉领域还有很多其它的 benchmark。我这里使用的是 OTB2013 数据集发布后附带的 tracker_benchmark。
下面简要记录下使用 tracker_benchmark 生成 benchmark 曲线图的一些步骤:
准备工作
- 安装 Python2.7(一般 Linux 发行版自带组件无需另外安装)
- 安装 Matlab (我安装的是 Matlab R2016b 版本)
- 下载 tracker_benchmark
- 训练好的 SiamFC 模型 x1
- OTB50 或 OTB100 测试数据集 x1
起步
测试模型
1 | vim Config.py |
修改 self.net_base_path
为你的模型所在路径、self.seq_base_path
修改测试数据集(需要是 OTB 格式的)为你的 OTB 数据集所在路径,接着运行 run_SiamFC.py
开始测试环节。
1 | python run_SiamFC.py |
全部测试完之后会生成一个 tracking_result
文件夹,里面存的是很多个 txt 文件,每个 txt 其实就是每个视频序列的测试数据,我们下面进行 tarcker benchmark 评估的时候,就需要这些文件。
evaluate
将刚刚生成的 txt 文件复制到 benchmark/evaluation/result100
目录下(result100是自己新建的),并在 result100
目录下新建一个文件夹 1
,用于报错生成的 *.mat
文件。同时修改 evaluation
代码,将其中的 results_base_path
修改为追踪结果 tracker_results.txt
所在的路径,把 groundtruth_base_path
修改为 OTB100 数据集所在的路径。
生成曲线图
首先,删除 benchmark/tracker_benchmark_v1.1/perfMat/overall
目录下所有的 *.mat
文件(如果没有就算了)。
然后把刚刚生成在 result100/1
目录下的 *mat
文件全部复制到 tracker_benchmark_v1.1/results/results_TRE_PAMI15
目录下(如果没有新建一个):
1 | mv * ../../../tracker_benchmark_v1.1/results/results_TRE_PAMI15/ |
最后,运行 perPlot.m
文件即可生成相应的曲线图。
其它细节
仅生成 overall 曲线图
把 perfPlot.m
219 行下面的为每个属性单独绘制曲线的图像的函数注释掉即可
和其它 trackers 做比较
首先修改 utils/configTrackersOur.m
文件,将想要做对比的 trackers 加到 trackersAll 元胞数组中。
无法读取文件
一般是文件名大小写的问题,下面给出两个解决该问题的方法: 1
s.name = lower(s.name)
1 | s.name = [ lower(s.name(1)) s.name(2:end) ] |
还有一种可能可能是路径的斜杠方向问题,Windows 的路径斜杠是反斜杠,Linux 的路径斜杠是顺斜杠。如果把别人在 Windows 上跑得代码拿到 Linux 下来用的话需要把路径中的 \
改成 /
。
控制对比的 trackers
一般是修改 util/configTrackersOur.m
这个文件(当然要根据 perPlot.m
这个文件中指定的情况而确定)。
写的有点乱,也懒得修改了...
感谢
这里,要特别感谢一位超善良超可爱的学姐!100G 的 ImageNet 超大数据集就是从她那里拷的,此外学姐还给我了一份 tracker_benchmark 的代码并现场演示了一遍生成 benchmark 曲线图的操作流程,超棒!
最后,以我最后跑出来的 OPE 曲线图结束此文:

和论文中作者的数据差 0.3 个点