deepsort和MOT16指标评价
如何评价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文本文件,每行包含一个对象,描述其中一帧中的一个跟踪对象,有9个值,用逗号分隔。TrackEval只用到前6个,帧序号,目标ID,跟踪框4个坐标,后3个(目标置信度,目标类别,可见性)不参与运算,可忽略,如下:
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <class>, <visibility>
MOT16-13中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略有差别,号称与MOT16格式“兼容”。“兼容”格式共10个值,其参数间以空格分隔。参与MOT16运算的前6个参数与gt.txt相同,后4个不参与指标运算,均为-1。
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <x>, <y>, <z>
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',少一级子目录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,这里采用DarkLabel视频序列标注程序,仅标注car,形成ground truth文件gt.txt,得到如下MOT指标:
看上去指标提高了不少耶!但这里DarkLabel有一点小缺陷,即帧序列号从0-749,而不是1-750,因此运行run_mot_challenge.py会出错。因为MOT16的ground truth文件gt.txt帧号规定从1开始,而TrackEval算法就执拗地认定帧号不能从0开始,否则非法,目前还没去找在哪里可以改掉这一偏见。无奈之下,只好在excel中修改gt.csv的帧号,将0-749改为1-750, 有点麻烦,但总算可以使用TrackEval。所以,不能直接利用DarkLabel标注的输出,来运行TrackEval中run_mot_challenge.py,切记切记。
MOT官网下载数据说明
从MOT challenge官网可下载MOT16,完整数据约1.9GB。以MOT16-13为例,有三个目录det, gt, img1,其中gt是ground truth,img1有750张1920x1080图片,与gt.txt相对应。就是说,gt.txt对这750张图片进行标注,注意图片坐标是1920x1080。用img1这750张图片可构造一段视频,帧率大小取fps=30或fps=25都可以,只要总帧数=750。
从MOT challenge官网下载对应的视频,为MOT16-13-raw.webm,分辨率为960x540。要保证得到正确的MOT指标,该视频需转换成分辨率1920x1080,与gt.txt分辨率一致。
下面的例子指出,若输入到deepsort中视频不同分辨率的计算结果。其中:
MOT16-13 视频序列分辨率 1920x1080
MOT16-13-720 视频序列分辨率 1280x720
很明显,与gt.txt不一致的视频分辨率得到错误结果,MOT16-13-720中,MOTA为-129.44,为错误的结果!
关于gt.txt和MOT16-13.txt中目标ID的问题。
gt.txt是标注产生的目标ID,而MOT16-13.txt则是deepsort跟踪产生的目标ID,显然同一个目标,两种方式产生的目标ID不同。那么,TrackEval如何判断两个txt文件中不同的目标ID属于同一个目标呢?
原来,TrackEVal根据同一帧图像中,跟踪框的相似性来判断,即用IOU判定。IOU是跟踪框面积相似性判定方法:IOU = 两个矩形交集的面积/两个矩形的并集面积
TrackEval算法将两个txt文件中同一帧图像中跟踪框IOU计算结果得到如下矩阵
以Frame 5为例,gt.txt中有三个目标ID:0,1,3, MOT16-13.txt有两个目标ID:1,2,从矩阵可知gtID0对应trackerID1,而gtID3对应trackerID2。gt.txt目标ID1在MOT16-13.txt中没出现,表明deepsort跟踪丢失。
Frame22, gtID0对应trackID1, gtID1对应trackerID7, gtID3对应trackerID2。deepsort丢失gtID2,且trackerID12是错误的跟踪。
deepsort和MOT16指标评价相关推荐
- 综合指标评价及绩效评价方法
下面是一些主流的会用于综合指标评价以及绩效评价的一些方法: 1. AHP(层次分析)+加权 目前这个方法是对于医保领域评价绩效用的最多的,包括重庆市.天津市.苏北某市.具体相关文献见文件夹&q ...
- 机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)
文章目录 1.机器学习中的评价指标 基础 (一)分类指标评价 1.Accuracy 2.Precision.查准率 3.Recall.查全率 4.F1-score 举个例子: 5.ROC 6.AUC ...
- 长江水质的评价和预测——综合指标评价
原创声明:未经作者允许,不得转载 题目来源:2005年_全国大学生建模比赛_A题 下一篇:<长江水质的评价和预测--主要污染地区> 1. 问题分析 本文的目标是:对长江近两年多的水质情况做 ...
- 软件测试有效性指标,评价软件测试的有效性
摘要:在软件测试过程中,因为多方面的因素,常常会导致一些错误和失效,为了改善测试过程.使测试过程变得更为有效,需要对软件测试过程进行一个补充,那就是对软件测试的有效性进行评价.本文介绍了评价软件测试有 ...
- 【CV-tracking】多目标跟踪-实战(OpenCV+YOLO+DeepSORT)
[CV-tracking]多目标跟踪-实战(OpenCV+YOLO+DeepSORT) 文章目录 1. 参考文献 1.1. 数据集 1.2. 可复现的代码 1.3. YOLO教程 1.4. DeepS ...
- 数据指标体系:指标好坏评价标准
关于指标体系构建的方法论非常多,基于实际业务场景加上方法指导都可以照猫画虎地构建出自己的指标体系.但光有了所谓的指标体系不是终极目标,想要更加高效的数据驱动决策.数据赋能业务运营,指标好坏的评价标准是 ...
- 基金评价专题1:绩效指标
免责声明:本文由作者参考相关资料,并结合自身实践和思考独立完成,对全文内容的准确性.完整性或可靠性不作任何保证.同时,文中提及的基金仅作为举例使用,不构成推荐:文中所有观点均不构成任何投资建议.请读者 ...
- 数据中心能效指标有哪些?怎么计算?
数据中心的概念本来是舶来词汇,直到2005年以后,随着互联网公司的兴起,才大量运用于社会各行各业,特别是互联网IT行业.各种企业自建数据中心(EDC),互联网数据中心(IDC)逐渐开始出现,并在201 ...
- 【土地评价与土地管理】案例:某地区土地农业利用潜力评价
文章目录 一.确定评价单元 二.拟定潜力评价系统表.确定指标权重 三.指标评价 四.评定潜力等级 五.得出潜力评价结果 一.确定评价单元 土地潜力评价单元采用地块作为评价单元,此地块是建立在土地利用现 ...
最新文章
- 1亿级PV网站架构演变
- 【转】 嵌入式C语言编程中Inline函数的应用
- 脚本语言(确认补遗)
- Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
- 最新版 | 2020李沐《动手学深度学习》中文版pdf重磅开源!
- tplink怎么进去_如何进入路由器设置界面 如何登陆无线路由器
- Cannot halt the core解决方法
- 设计区域电网输电线路pscad仿真模型
- php家居门户源码,家居装修门户模板源码discuz模板 php家居装修网论坛源码
- SQL查询表结构相同的两张表中数据的差异
- 不是二进制MAT文件,请尝试执行 load -ASCII 以便以文本形式读取
- 程序员的十层楼,比尔盖茨仅第四层,你能到第几层?
- js如何获取元素内容
- 问卷链接怎么做二维码?如何使用二维码做问卷调查?
- 餐饮连锁店远程视频监控系统设计需求分析
- java 分析类_java--分析简单java类与反射的联系
- java8 list max_Java 在List 上使用.max()和.stream()
- 一个使用Ruby on Rails开发LBS网站的简单实例
- CryEngine3教程合辑
- Netty框架实现TCP/IP通信