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
MOT16-14
... ...

这里有几个视频序列就添加几个,同时在gt/mot_challenge/MOT16-train目录下添加MOT16-14目录,且与MOT16-13相同,将MOT16-14对应的gt.txt放到MOT16-14/gt目录下。同样,将MOT16-14的seqinfo.ini放入。
在此看看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目录。如果有多个跟踪器参与指标运算,则不用修改此文件。而在trackers/mot_challenge/MOT16-train下面增加不同跟踪器的目录,如下图。在每个跟踪器下面的data中,放入跟踪器输出MOT16-13.txt, MOT16-14.txt等等。
在这里插入图片描述

进一步的尝试:仍用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,为错误的结果!

以下是三个跟踪器deepocsort, deepsort, strongsort对MOT16-13车辆跟踪的指标情况:
在这里插入图片描述
插入
在这里插入图片描述

关于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是错误的跟踪。

  • 20
    点赞
  • 209
    收藏
    觉得还不错? 一键收藏
  • 164
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 164
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值