主要内容

基于摄像头的进口数据集格式非常贴切的挑战对象跟踪

这个例子展示了如何阅读相机图像序列和转换地面实况和检测传感器融合和跟踪工具箱™格式使用自定义数据集存储地面真理和detetions使用非常贴切的挑战格式[1,2]。您可以修改这个示例使用任何数据存储地面实况的格式非常贴切的挑战。使用另一个数据集和这个例子之前,检查数据集许可,以确保你有足够的权利来为您的应用程序使用的数据集。

概述数据集格式非常贴切的挑战

这个示例中的数据集是基于相机记录的行人。数据集包含了视频图像,注释地面真理,检测和视频元数据。2 d后的数据组织格式非常贴切的挑战[1,2]。下载行人跟踪数据集如下。当运行一个不同的数据集,修改datasetName相应的变量。

datasetName =“PedestrianTracking”;datasetURL =“https://ssd.mathworks.com/金宝appsupportfiles/vision/data/PedestrianTrackingDataset.zip”;如果~存在(datasetName“dir”)disp (“下载行人跟踪数据集(350 MB)”)websave (“PedestrianTrackingDataset”,datasetURL);解压缩(“PedestrianTrackingDataset.zip”);结束
下载行人跟踪数据集(350 MB)

序列图像保存为PNG格式命名顺序下6位文件名img1文件夹中。元数据文本文件,命名seqinfo.ini包含信息,如帧的数量,数量的帧每秒,帧大小和文件扩展名。

类型(datasetName +“\ seqinfo.ini”);
(序列)name = PedestrianTracking imDir = img1帧速率= 1 seqLength = 169 imWidth = 1288 imHeight = 964 imExt = . png

地面真理和检测文件包含逗号分隔值和每一行代表一个对象实例或对象检测如下表所示。

只有地面实况条目包含标识符、有效状态类,和可见性。标识符是一个整数的每个真实的对象在完整的序列。如果一个人(或任何其他类对象)消失了一段时间,那个人被一个新的独特的标识符。类ID是一个数字1 - 12以下定义:

  1. 行人

  2. 人车

  3. 自行车

  4. 摩托车

  5. 非机动车

  6. 静态的人

  7. 错误选择

  8. 遮光板

  9. 遮光板在地上

  10. 遮光板全部

  11. 反射

有效的标志是0或1,一个标记为1意味着这个真理是一个对象实例跟踪感兴趣的任务和评估。可见性是一个百分比值从0到1,代表从完全阻挡完全可见。在这个视频序列,能见度百分比手动填充视觉检查。

检测报告一个条目的信心或分数值。每个检测的分数可以用作参数的跟踪任务。检查地面的前十行真理和检测文件。

dbtype (datasetName + filesep +“gt”+ filesep +“gt.txt”,“1:10”)
1 1925 .61,357.04,61.68,154.38,1,1,1.0 - 2 2 1939 .98,355.44 61.31,160.83,1,1,1.0 - 3 3,1951 .04,354.69 57.98,167.60,1,1,1.0 - 4 4,1979 .43,353.49 69.72,175.43,1,1,1,1.0 - 5 5日1000.44,351.30 64.75,188.71,1,1,1,1.0 6 6日1011.07,351.82 78.49,197.55,1,1,1,1.0 7 7日1051.12,348.04 77.49,209.13,1,1,1,1.0 8 8日1086.59,351.90 73.40,220.54,1,1,1,1.0 9 9日1099.16,353.61 91.99,237.83,1,1,1,1.0十10日1154.00,350.00 85.00,266.00,1,1,1.0
dbtype (datasetName + filesep +“引爆器”+ filesep +“det.txt”,“1:10”)
,155.00 1 1 -1922 .00,355.00,63.00,61.06,1 1 2 2 1,8.00,370.00,100.00 41.00,8.44,1 1 3 2,-1934 .00,355.00,155.00 63.00,87.51,1,1 4个3、-1953 .00,355.00,155.00 63.00,84.78,1 1 5 4,-1460 .00,293.00,129.00 53.00,8.52,1 1 6 4,-1984 .00,354.00,169.00 69.00,88.41,1 1 7 5、1、1002.00,355.00,155.00 63.00,82.14,1 1 8 6,-1460 .00,293.00,129.00 53.00,9.46,1,1,1 9 6日1015.00,357.00,184.00 75.00,79.75,1,1,1 10 7日8.00,370.00,100.00 41.00,7.23,1,1

在[1]中描述的规则来确定每个边界框的大小。每个地面实况实例使用的注释贴标签机视频从计算机视觉的工具箱™。注意,汽车在街上和一些可见的阴影和反射被忽略。总通道特性的检测得到探测器(ACF)人,训练使用数据集。看到法国人peopleDetectorACF函数获取详情。

可视化视频序列

首先,序列信息导入MATLAB结构使用helperReadMOTSequenceInfo这个示例中提供的功能。

sequenceInfo = helperReadMOTSequenceInfo (datasetName + filesep +“seqinfo.ini”)
sequenceInfo =结构体字段:帧速率:1 SequenceLength: 169 ImageWidth: 1288 ImageHeight: 964 ImageExtension:“。png PedestrianTracking \ img1 \“ImagePath:

编写图像视频文件使用VideoWriter对象。这个步骤有助于可视化并检查数据和不需要导入数据集执行对象跟踪。

如果~ (datasetName +存在“Video.avi”,“文件”v = VideoWriter (datasetName +)“Video.avi”);v。帧速率= sequenceInfo.FrameRate;开放(v);我= 1:sequenceInfo.SequenceLengthframeName = sequenceInfo.ImagePath + sprintf(“% 06 d”,我)+ sequenceInfo.ImageExtension;writeVideo (v, imread (frameName));imshow (frameName);结束关闭(v);结束

进口地面实况和检测

接下来,将地面实况数据导入trackCLEARMetrics(传感器融合和跟踪工具箱)格式。非常贴切的挑战训练数据集提供地面实况跟踪算法,允许计算指标,如明确的指标。的创建和评估一个追踪者所示实现简单的在线和实时跟踪(传感器融合和跟踪工具箱)的例子。

使用helperReadMOTGroundTruth函数将地面实况数据集。

真理= helperReadMOTGroundTruth (sequenceInfo);disp(真理);
648×1结构体数组字段:时间ClassID可见边界框(TruthID大小)

接下来,将检测到objectDetection(传感器融合和跟踪工具箱)格式。您可以使用这种格式作为输入传感器融合和跟踪多目标跟踪器的工具箱™。的helperReadMOTDetection函数副本从每个进入边界框的信息测量一个领域objectDetection对象。使用帧数和帧速率来填写时间属性为每个检测。非常贴切的挑战格式储备类信息为地面真理,和每个检测保持默认ObjectClassID的价值0在这种情况下。的ObjectAttributes字段存储每个检测作为结构的分数。SensorIndex,ObjectClassParameters,MeasurementParameters,MeasurementNoise有默认值。你可能需要指定使用检测与跟踪时这三个属性。

检测= helperReadMOTDetection (sequenceInfo);disp(检测);
740×1 objectDetection数组的属性:时间测量MeasurementNoise SensorIndex ObjectClassID ObjectClassParameters MeasurementParameters ObjectAttributes
disp(检测(1));
objectDetection属性:时间:0测量:[922 355 63 155]MeasurementNoise:[4×4双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: {} ObjectAttributes: [1×1 struct]
disp(检测(1).ObjectAttributes);
得分:61.0600

可视化地面真理和检测

注释每一帧与地面的边框真理和检测数据。使用helperAnnotateGroundTruthhelperAnnotateDetection函数来提取帧注释信息。

showDetections =;showGroundTruth =真正的;读者= VideoReader (datasetName +“Video.avi”);groundTruthHistoryDuration = 3 / sequenceInfo.FrameRate;%时间持久性(s)地面真理的轨迹pastTruths = [];我= 1:sequenceInfo.SequenceLength% i帧中找到真理和检测时间=(张)/ sequenceInfo.FrameRate;curDets =检测(ismembertol ([detections.Time]、时间);curTruths =真理(ismembertol ([truths.Time]、时间);帧= readFrame(读者);如果showDetections = helperAnnotateDetection帧(帧,curDets);结束如果showGroundTruth = helperAnnotateGroundTruth帧(帧,curTruths pastTruths);结束pastTruths = [pastTruths; curTruths];% #好< AGROW >pastTruths ([pastTruths.Time] < time-groundTruthHistoryDuration) = [];imshow(框架);结束

结论

在本例中您已经了解了如何导入地面实况和检测数据保存在年检挑战格式到MATLAB。你也可视化真理和检测而写作的边界框的图片视频文件。

参考

[1]米兰,安东,劳拉Leal-Taixe,伊恩·里德斯蒂芬·罗斯和康拉德•辛德勒。“MOT16:多目标跟踪的一个基准。”arXiv预印本arXiv: 1603.00831(2016)。

[2]https://motchallenge.net/