在Matlab下使用指标评估代码对多目标跟踪结果进行评测
多目标跟踪方面,已经读了不少论文,跑过部分开源代码,最近开始也着手实践,首先将指标评估这方面功夫做了下,虽然已有开源代码和作者对代码使用方法的介绍,但还是顺便记录下步骤方便日后工作。
步骤1:下载指标评估代码
首先在MOTChallenge上可以浏览并且下载历年的训练和测试图像序列,根据需要下载,每年的总文件大小5g左右。主要是包括了图像本身,每一种图像序列就有成百上千帧图像,不同大小的都有,所以整个文件是比较庞大的。如果只需要使用到gt和det,可以在网站上点击get detections and labels only,这里就大概10M不到。
然后在https://bitbucket.org/amilan/motchallenge-devkit/上download代码,大概7M。
下载下来的评估代码里有compile.m、evaluateDetection.m、evaluateTracking.m等文件,seqmaps里存放着包含不同年份train、test或all文件名的txt。
下载下来的数据文件就分为不同类型的测试训练图像序列,train的每类分别含有det(存放public detections)、img(存放图像序列)、gt(存放标注),test的每类则去掉了gt。下面以MOT16的train为例:
步骤2:编译+设置路径
首先用matlab进入到指标评估代码路径下,运行compile.m。
其次,作者已经写好了15年16年和17年Det的demo,只需要修改demo里你的benchmark文件存放路径和你已经生成的对应txt文件存放路径,就可以运行起来。下面以MOT16为例:
设置benchmarkGtDir变量为MOT16的训练文件路径(代码会自动在该文件路径下寻找gt.txt),evaluateTracking函数的第一个变量是使用到的图像序列名(包含在seqmaps文件下,不需要修改),第二个变量是你的算法生成的对应跟踪结果存放路径,剩下的两个变量也不用修改。
benchmarkGtDir变量(路径)下包含的文件有:
第二个变量(路径)下包含的文件有:
步骤3:运行demo
只要路径正确,没有缺漏文件,直接运行刚刚步骤2修改的demo就可以得到结果,下面是我的运行结果(使用没有调过参数的MOT17的IOU17算法生成,出自“High-Speed Tracking-by-Detection Without Using Image Information”,详见多目标跟踪竞赛结果摘要:Multiple Object Tracking Challenge 2017 Results):
可以看到这个结果里包含了17个指标参数,参考MOTChallenge提供的主要指标,可以根据以下这张表来选取需要的参数:
如果还没准备好跟踪结果文件,又想试一试多目标跟踪评估代码的,也可以直接使用代码里附带的一组results,就在代码目录下的res文件夹中,根据年份选择。虽然不知道来源何处,但和IOU17的结果也差不多:),如下:
到此为止,根据benchmark对多目标跟踪结果进行评测告一段落~