评估算法的效果,无疑会涉及到很多数据集上的测试
Online Object Tracking:A Benchmark 一文中,把之前先进的跟踪算法都集成了起来,通过Precision plot和Success plot来直观展示不同trackers的效果对比。贡献在于:
1、建立了50个全注释的datasets来评估算法性能。
2、集成了大多数公开可用的跟踪器,并设置了统一的输入和输出格式,以便于大规模性能评估。目前,它包括29个跟踪算法。
3、初始bounding boxs从时间和空间上进行采样来评估trackers的鲁棒性等性能。
这篇文献的资料以及代码可以从这里下载
前人的贡献很伟大啊,这样我们就不用自己收集数据集了,而且,对算法的效果的评估也就有了统一的Bench,算法效果好不好,run一下画出图来,非常直观,谁的方法更好,用图说话~(友情提示: 即使采用OPE方法,在50个数据集上进行测试,时间也是很漫长的,所以......利用晚上吧.....你的电脑不能休息~(⊙﹏⊙))
所以,如果我们用了一个新的算法,最终也需要这样和之前的算法进行对比,套用这套代码就可以啦,但需要修改一些内容。
修改步骤:
1、在\until\configTracker.m中添加trackNew,如图:
2、在\trackers\下新建NewStruck文件夹,文件夹里新建run_NewStruck.m 这个run_NewStruck.m其实就是对你的算法的main文件进行修改而成,它是调用你的源程序的接口,里面不免会用到addpath(genpath('路径'))来导入算法目录。如图:
function res = run_NewStruck (seq, res_path, bSaveImage)
%res_path是预测结果.mat保存的路径
close all;
addpath(genpath('D:\MenghanZhou\matlab_work\ICCV11_struck-matlab\ICCV11_struck-matlab\'));
all_images = seq.s_frames;
当然,你可能会有更好的方法,希望共同分享~
那么的输出应该怎么写呢?这是套用这套代码的关键,先看一下整套代码的结构......
tracker_benchmark_v1.0这份代码的组织结构是这样的:
涉及到的文件很多,我的记性不好使,所以自己大体列了一下每个文件都是干啥的......
* '.\results\results_SRE_CVPR13' '.\results\results_TRE_CVPR13'所有跟踪结果的存放目录
* '.\anno' 注释文件(边界框和属性)的目录
* '.\initOmit'包含由于遮挡或目标超出视野而被省略的用于跟踪初始化的帧的注释 的目录
* '.\results' 跟踪结果的存放目录
* '.\rstEval' 包含了很多用于计算跟踪性能或者画出结果的脚本的目录
* '.\trackers' 包含了很多跟踪器代码的目录
* '.\tmp' 用来存放临时结果或者日志文件的目录
* '.\util' 包含主函数里用到的脚本的目录
* main_running.m用于跟踪测试的主函数
-Note that OPE is the first trial of TRE
OPE是TRE的第一个试验
-It also has the function to validate the results.
还具有验证结果的功能
* perfPlot.m用于画图的主函数
调用genPerfMat.m来生成用于plot的值
* drawResultBB.m用于画每个帧上不同跟踪器的边界框的主函数
*.\figs\overall\ 最终曲线图存放
*. \perfMat\overall\ 存每个tracker对每个dataset的平均结果重叠率以及平均结果误差率
*.tmp\imgs\ 存 每个帧上不同tracker跟踪到的boundingbox
!!!重点来啦!!!
*.results\results_OPE_CVPR13\ 存这种tracker对这种datasets的跟踪结果,例:CarDark_VR.mat
这个.mat的数据结构是这样的 1×段数cell
每个元胞的结构1×1 struct是这样的:
.res就是每帧的跟踪结果(boundingbox的位置信息 xywh)
高亮!!!!统一的输入格式就是上图那个形式!!!!套用这套代码的关键就是把你的算法的输出结构整成上面那样就可以啦~~~
评价基准有了,接下来,我们就可以安心思考我们的算法了,想看是否提高了效果性能,在这个Bench上run一下就可以啦~~~