多目标跟踪的问题是这样的:有一段视频,视频是由 N 个 连续帧构成的。从第一帧到最后一帧,里面有多个目标,不断地有出有进,不断地运动。我们的目的是对每个目标,能跟其他目标区分开,维持他们的ID、记录他们的轨迹。
所以MOTchallenge上的大多数算法直接使用数据集里标注的检测结果,而不是自己检测,他们的主要精力在:Occlusions,similar appearance,complex motion,false alarms方面。
MOT16提供了标注好的检测结果。各个算法基本不自己做检测。
MOT16是2016年提出的多目标跟踪MOT Challenge系列的一个衡量多目标检测跟踪方法标准的数据集。
官方网站:https://motchallenge.net/
论文可见:https://arxiv.org/abs/1603.00831
理解数据集过程参考了这篇博客。
解压MOT16后在文件夹下面有两个目录:test和train。分别代表训练集和测试集。
这两个目录分别有7个子目录。每个子目录下都是一段视频的抽帧图片及标注。由于train里面的内容比较全,train里面的数据比test多了一个ground truth,所以下面以train为例介绍。
在“MOT16\train\MOT16-02”目录下有三个目录和一个文件,三个目录分别是:det、gt和img1。一个文件是seqinfo.ini.
det目录下只有一个det.txt文件,每行一个标注,代表一个检测的物体。
内容摘抄为:
1,-1,1359.1,413.27,120.26,362.77,2.3092,-1,-1,-1
1,-1,571.03,402.13,104.56,315.68,1.5028,-1,-1,-1
1,-1,650.8,455.86,63.98,193.94,0.33276,-1,-1,-1
1,-1,721.23,446.86,41.871,127.61,0.27401,-1,-1,-1
1,-1,454.06,434.36,97.492,294.47,0.20818,-1,-1,-1
1,-1,1254.6,446.72,33.822,103.47,0.14776,-1,-1,-1
1,-1,1301.1,237.38,195.98,589.95,0.051818,-1,-1,-1
.....
其格式为:
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <x>, <y>, <z>
每行10个数字,第一个代表第几帧,第二个代表轨迹编号(在这个文件里总是为-1)
bb开头的4个数代表物体框的左上角坐标及长宽。conf代表置信度,最后3个是MOT3D用到的内容,2D检测总是为-1.
总结:有用的字段主要是frame, bb_left, bb_top, bb_width, bb_height, conf
这个目录下就是把视频一帧帧抽取出来的图片,总共600张。文件名则是从000001.jpg到000600.jpg。
这个目录下有一个gt.txt文件,内容和上面的det.txt很像。
内容摘抄如下:
1,1,912,484,97,109,0,7,1
2,1,912,484,97,109,0,7,1
3,1,912,484,97,109,0,7,1
4,1,912,484,97,109,0,7,1
5,1,912,484,97,109,0,7,1
6,1,912,484,97,109,0,7,1
7,1,912,484,97,109,0,7,1
.......
第一个值含义同上,第二个值为目标运动轨迹的ID号,第三个到第六个值的同上,第七个值为目标轨迹是否进入考虑范围内的标志,0表示忽略,1表示active。第八个值为该轨迹对应的目标种类(种类见下面的表格中的label-ID对应情况),第九个值为box的visibility ratio,表示目标运动时被其他目标box包含/覆盖或者目标之间box边缘裁剪情况。
第8个值得含义参考下图:
内容摘抄如下:
[Sequence]
name=MOT16-02
imDir=img1
frameRate=30
seqLength=600
imWidth=1920
imHeight=1080
imExt=.jpg
主要介绍视频的帧率、分辨率等基本信息。
即使有了一个online的MOT跟踪算法,在MOTchanllenge上获得了好成绩,也不是立马可投入生产了。如果想要做一个实时的多目标跟踪器,还需要一个实时的图像检测器程序。这两部分需要足够块,才能适应实时的生产环境。