如何评价deepsort跟踪性能,常用的有MOT challenge提供的数据集,根据训练数据集的ground truth文件,对比deepsort跟踪窗口位置和跟踪ID,可以得到一系列评价指标。网上有很多有关MOT评价指标介绍和算法,近来找到一个纯采用python的算法代码,在此分享。 github网站在此:https://github.com/JonathonLuiten/TrackEval 克隆到本地
git clone https://github.com/JonathonLuiten/TrackEval
以MOT16-13为例,将使用过程记录如下。 下载MOT16,取训练数据集中的MOT16-13,取出其中的gt/gt.txt,这是MOT16-13.mp4的ground truth标注文件。img1目录下有750张1920x1080图片,将其组成视频文件MOT16-13.mp4。 运行deepsort程序,得到兼容MOT16格式的跟踪数据文件MOT16-13.txt。下面组织文件目录结构如下: 说明: 评估程序目录TrackEval下建立data子目录,下设gt和trackers子目录,将gt.txt和MOT16-13.txt放到图示子目录下,其中seqinfo.ini从MOT16-13数据集中得到,该文件描述MOT16-13视频序列。MOT16-train.txt描述指标评估中所采用的视频序列名称,其内容如下(这里只用了一个视频序列):
name
MOT16-13
在此看看gt.txt和MOT16-13.txt文件格式 gt.txt文件是CSV文本文件,每行包含一个对象,描述其中一帧中的一个跟踪对象,有10个值,用逗号分隔。TrackEval只用到前6个,帧序号,目标ID,跟踪框4个坐标,后4个(目标置信度,xyz中心坐标)忽略,如下:
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <x>, <y>, <z>
gt.txt文件如下:
1,1,1376,485,37,28,0,11,1
2,1,1379,486,37,28,0,11,1
3,1,1382,487,38,29,0,11,1
4,1,1386,488,38,29,0,11,1
5,1,1389,490,38,29,0,11,1
6,1,1393,491,38,30,0,11,1
MOT16-13.txt格式与gt.txt相同,用空格分隔,后4个不参与MOT16指标运算,故均为-1。
5 1 1634 561 63 123 -1 -1 -1 -1
5 2 1383 511 33 110 -1 -1 -1 -1
5 4 496 542 38 95 -1 -1 -1 -1
5 5 1551 556 48 127 -1 -1 -1 -1
准备好目录结构和数据文件后,即可以运行评估程序
cd TrackEval/scripts
python run_mot_challenge.py --BENCHMARK MOT16 --METRICS CLEAR HOTA
运行结果,得到HOTA和CLEAR两类metrics指标 一点说明,trackval\datasets\mot_challenge_2d_box.py中,修改
'TRACKER_SUB_FOLDER': 'data',
为
'TRACKER_SUB_FOLDER': ''
以适应以上构造的目录结构,若不修改则会多增加一级data目录。
def get_default_dataset_config():
"""Default class config values"""
code_path = utils.get_code_path()
default_config = {
'GT_FOLDER': os.path.join(code_path, 'data/gt/mot_challenge/'),
'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/mot_challenge/'),
'OUTPUT_FOLDER': None,
'TRACKERS_TO_EVAL': None,
'CLASSES_TO_EVAL': ['pedestrian'],
'BENCHMARK': 'MOT16',
'SPLIT_TO_EVAL': 'train',
'INPUT_AS_ZIP': False,
'PRINT_CONFIG': True,
'DO_PREPROC': True,
'TRACKER_SUB_FOLDER': '',
'OUTPUT_SUB_FOLDER': '',
'TRACKER_DISPLAY_NAMES': None,
'SEQMAP_FOLDER': None,
'SEQMAP_FILE': None,
'SEQ_INFO': None,
'GT_LOC_FORMAT': '{gt_folder}/{seq}/gt/gt.txt',
'SKIP_SPLIT_FOL': False,
}
进一步的尝试:仍用MOT16-13,而ground truth不用原来的gt.txt,该gt.txt只针对行人。现修改为针对小汽车car,这里采用DarkLab视频序列标注程序,仅标注car,形成ground truth文件gt.txt,得到如下MOT指标: 看上去指标提高了不少耶!但这里DarkLab有一点小缺陷,即帧序列号从0-749,而不是1-750,因此运行run_mot_challenge.py会出错。因为MOT16的ground truth文件gt.txt帧号规定从1开始,而TrackEval算法就执拗地认定帧号不能从0开始,否则非法,目前还没去找在哪里可以改掉这一偏见。无奈之下,只好在excel中修改gt.csv的帧号,将0-749改为1-750, 有点麻烦,但总算可以使用TrackEval。所以,不能直接利用DarkLab标注的输出,来运行TrackEval中run_mot_challenge.py,切记切记。
|