如何评价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/'), # Location of GT data
'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/mot_challenge/'), # Trackers location
'OUTPUT_FOLDER': None, # Where to save eval results (if None, same as TRACKERS_FOLDER)
'TRACKERS_TO_EVAL': None, # Filenames of trackers to eval (if None, all in folder)
'CLASSES_TO_EVAL': ['pedestrian'], # Valid: ['pedestrian']
'BENCHMARK': 'MOT16', # Valid: 'MOT17', 'MOT16', 'MOT20', 'MOT15'
'SPLIT_TO_EVAL': 'train', # Valid: 'train', 'test', 'all'
'INPUT_AS_ZIP': False, # Whether tracker input files are zipped
'PRINT_CONFIG': True, # Whether to print current config
'DO_PREPROC': True, # Whether to perform preprocessing (never done for MOT15)
'TRACKER_SUB_FOLDER': '', #'data', # Tracker files are in TRACKER_FOLDER/tracker_name/TRACKER_SUB_FOLDER 修改,去掉'data',少一级子目录data
'OUTPUT_SUB_FOLDER': '', # Output files are saved in OUTPUT_FOLDER/tracker_name/OUTPUT_SUB_FOLDER
'TRACKER_DISPLAY_NAMES': None, # Names of trackers to display, if None: TRACKERS_TO_EVAL
'SEQMAP_FOLDER': None, # Where seqmaps are found (if None, GT_FOLDER/seqmaps)
'SEQMAP_FILE': None, # Directly specify seqmap file (if none use seqmap_folder/benchmark-split_to_eval)
'SEQ_INFO': None, # If not None, directly specify sequences to eval and their number of timesteps
'GT_LOC_FORMAT': '{gt_folder}/{seq}/gt/gt.txt', # '{gt_folder}/{seq}/gt/gt.txt'
'SKIP_SPLIT_FOL': False, # If False, data is in GT_FOLDER/BENCHMARK-SPLIT_TO_EVAL/ and in
# TRACKERS_FOLDER/BENCHMARK-SPLIT_TO_EVAL/tracker/
# If True, then the middle 'benchmark-split' folder is skipped for both.
}
进一步的尝试:仍用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,切记切记。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)