主要内容

ROILabelData

ROI标签的地面真实数据

描述

ROILabelData对象中存储每个信号的感兴趣区域(ROI)标签定义的地面真值数据地面多路信号对象。

创造

当您导出地面多路信号来自地面真理贴标机应用程序会话,ROILabelData属性将ROI标签存储为ROILabelData对象。创建ROILabelData对象编程时,使用vision.labeler.labeldata.ROILabelData函数(这里描述)。

描述

例子

roiLabelData=vision.labeler.labeldata.ROILabelData(信号名唇形目创建包含多个信号的ROI标签数据的对象。创建的对象,roiLabelData,包含具有中列出的信号名称的属性信号名.这些属性存储了指定的相应ROI标签数据唇形目

输入参数

全部展开

信号名称,指定为字符串数组。中出现的所有信号的名称地面多路信号对象。您可以从现有的名称获取信号名称地面多路信号通过访问数据源属性。使用此命令并替换格特鲁斯写着你的名字地面多路信号对象变量。

gTruth.DataSource.SignalName

在一个出口地面多路信号对象,ROILabelData对象包含每个信号的标签数据属性,即使某些信号没有ROI标签数据。

所创建的属性ROILabelData对象中指定的名称信号名

例子:[“视频\u 01\u城市\u c2s\u fcw\u 10s”“lidarSequence”]

每个信号的ROI标签数据,指定为时间表的单元格数组。单元格数组中的每个时间表都包含位于相应位置的信号数据信号名输入。的ROILabelData对象将每个时间表存储在与该信号具有相同名称的属性中。

每个信号的时间表格式取决于来自地面多路信号导出或正在创建的对象。

每个时间表包含存储在中的每个标签定义的一列LabelDefinitions财产地面多路信号对象。排除信号类型不支持的标签定义。例如,假设您定义了金宝appROI标签命名为“莱恩”.激光雷达点云信号的时间表不包括车道列,因为这些信号不支持金宝appROI标签。在数据源财产地面多路信号对象,SignalType属性列出有效的信号类型。

时间表的高度是由信号中的时间戳的数量定义的。在数据源财产地面多路信号对象,时间戳属性列出信号时间戳。

对于每个标签定义,在该时间戳标记的所有ROI标签将组合到表中的单个单元格中。考虑存储在地面多路信号对象,格特鲁斯.在每个时间戳,汽车包含三个标签,卡车包含一个标签,和车道包含两个标签。

gTruth.ROILabelData.video_01_city_c2s_fcw_10s
5×4 4个时间表时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间时间汽车、卡车、汽车、汽车、卡车、汽车、卡车、汽车、汽车、汽车、卡车、汽车、汽车、汽车、汽车、汽车、卡车、汽车、汽车、汽车、卡车、汽车、汽车、汽车、汽车、UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\\\\厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄{2×1细胞}0.15秒{3×4双细胞}{1×4双细胞}{2×1细胞}0.2秒{3×4双细胞}{1×4双细胞}{2×1细胞}

ROI标签数据的存储格式取决于标签类型。

标签类型 标签在每个时间戳的存储格式
labelType。矩形

- × 4形式的数字矩阵[x, y, w, h],其中:

  • 是帧中标签的数量。

  • xy指定矩形的左上角。

  • w指定矩形的宽度,即矩形沿边框的长度x-轴心国。

  • h指定矩形的高度,即矩形沿边框的长度y-轴心国。

labelType。长方体

-具有以下形式行的by-9数值矩阵[xctr、yctr、zctr、xlen、ylen、zlen、xrot、yrot、zrot],其中:

  • 是帧中标签的数量。

  • xctryctr,zctr指定长方体的中心。

  • 克斯伦伊伦,兹伦指定长方体沿直线的长度x-轴心国,y-轴线,以及z-axis,在应用旋转之前。

  • xrotyrot,兹罗特指定长方体的旋转角度x-轴心国,y-轴线,以及z分别设在。这些角度是顺时针正的,当看在他们相应的轴向前的方向。

该图显示了这些值如何确定长方体的位置。

labelType.ProjectedCuboid

这个形式的- × 8向量[x1,y1,w1,h1,x2,y2,w2,h2],其中:

  • 是帧中标签的数量。

  • (x1, y1)指定了xy投影长方体正面左上位置的坐标

  • w1指定投影长方体正面的宽度。

  • h1指定投影长方体正面的高度。

  • x2,y2指定了xy投影长方体背面左上位置的坐标。

  • w2指定投影长方体背面的宽度。

  • h2指定投影长方体背面的高度。

该图显示了这些值如何确定长方体的位置。

标签预计长方体

labelType。行

单元格数组的-by-1向量是帧中标签的数量。每个单元格数组包含一个N-形式的by-2数值矩阵[x1-y1;x2-y2;…;xN-yN]N折线上的点。

labelType。PixelLabel

所有像素标签定义的标签数据存储在一个单独的-by-1PixelLabelData专栏图像或帧。每个元素都包含一个像素标签图像的文件名。像素标签图像描述包含在相应图像中的一个或多个标签。标签可以用1通道或3通道的标签矩阵来描述。使用PixelLabelData对于任何labeler应用程序,必须使用单通道标签矩阵,其中的值为类型uint8. 您可以通过编程方式将3通道像素标签数据矩阵转换为单通道标签矩阵,以便与labeler应用程序一起使用。

labelType。多边形

单元格数组的-by-1向量为标签的数量。每个单元格数组包含一个N-形式的by-2数值矩阵[x1-y1;x2-y2;…;xN-yN]N多边形中的点。

labelType。自定义

标签的存储方式与时间表中指定的完全相同。如果导入地面多路信号对象中包含自定义标签数据的地面真理贴标机app,此数据不导入app。在收集标签数据进行训练时,使用自定义数据,并将其与app中的标签数据相结合。

如果ROI标签数据包括子标签或属性,则每个时间戳处的标签必须指定为结构。

标签结构字段 描述
位置

父标签在给定时间戳处的位置

格式位置取决于标签类型。上表介绍了这些格式。

AttributeName1,…,AttributeNameN

父标签的属性

每个定义的子标签都有自己的字段,字段的名称对应于属性名。属性值是一个字符向量列表字符串属性的数值标量数字属性的逻辑标量逻辑属性。如果属性未指定,则属性值为空向量。

SublabelName1,…,SublabelNameN

父标签的子标签

每个定义的子标签都有自己的字段,字段的名称对应于子标签的名称。每个子标签字段的值是一个结构,其中包含给定时间戳下所有具有该名称的标记子标签的数据。

该表描述了子标签结构的格式。

Sublabel结构领域 描述
位置

子标签在给定时间戳处的位置

格式位置取决于标签类型。上表介绍了这些格式。

AttributeName1,…,AttributeNameN

子标签的属性

每个定义的子标签都有自己的字段,字段的名称对应于属性名。属性值是一个字符向量列表字符串属性的数值标量数字属性的逻辑标量逻辑属性。如果不指定属性,则属性值为空向量。

性质

全部展开

ROI标签数据,指定为时间表。的ROILabelData对象的每个信号包含一个属性,其中每个属性包含相应于该信号的ROI标签数据的时间表。

当出口ROILabelData来自地面真理贴标机应用程序会话中,属性名称与存储在数据源出口货物的财产地面多路信号对象。

当创建一个ROILabelData对象编程,信号名唇形目输入参数定义所创建对象的属性名称和值。

假设你想创建一个地面多路信号对象,包含视频信号和激光雷达点云序列信号。在字符串数组中指定信号,信号名

signalNames = [“video_01_city_c2s_fcw_10s”“lidarSequence”];

存储视频ROI标签,可视数据,激光雷达点云序列ROI标签,利多卡因,在一个时间表单元数组中,唇形目.每个时间表都包含相应的输入信号的数据信号名

labelData ={可视数据,lidarData}
1×2单元阵列{204×2时间表}{34×1时间表}

ROILabelData对象,roiData,将此数据存储在具有相应信号名称的属性中。您可以指定roiDataROILabelData财产的地面多路信号对象。

roiData = vision.labeler.labeldata.ROILabelData (signalNames labelData)
roiData = ROILabelData with properties: video_01_city_c2s_fcw_10s: [204×2时刻表]lidarSequence: [34×1时间表]

例子

全部折叠

为视频信号和激光雷达点云序列信号创建地面真实数据,捕获相同的驾驶场景。指定信号源、标签定义、ROI和场景标签数据。

从一个MP4文件创建视频数据源。

sourceName ='01_city_c2s_fcw_10s.mp4';sourceParams = [];vidSource = vision.labeler.loading.VideoSource;vidSource.loadSource (sourceName sourceParams);

从点云数据(PCD)文件的文件夹中创建点云序列源。

pcSeqFolder = fullfile (toolboxdir (“开车”),“drivingdata”“lidarSequence”);目录(pcSeqFolder)负载时间戳rmpath(pcSeqFolder) lidarSourceData = load(fullfile(pcSeqFolder),“timestamps.mat”)); sourceName=pcSeqFolder;sourceParams=struct;sourceParams.timestaps=时间戳;pcseqSource=vision.labeler.loading.PointCloudSequenceSource;pcseqSource.loadSource(sourceName,sourceParams);

将信号源组合成一个阵列。

数据源=[vidSource pcseqSource]
dataSource = 1x2异构MultiSignalSource (VideoSource, PointCloudSequenceSource)数组属性:SourceName SourceParams SignalName SignalType Timestamp NumSignals

创建一个标签定义表为地面真值数据使用labelDefinitionCreatorMultisignal对象。

  • 汽车标签定义出现两次。尽管汽车定义为矩形,则只能为图像信号(如视频)绘制矩形。的labelDefinitionCreatorMultisignal对象为激光雷达点云信号创建额外的行。在这些信号类型中,您可以绘制汽车标签仅为长方体。

  • 标签定义没有描述,也没有指定的颜色,因此描述LabelColor列是空的。

  • 标签定义没有指定的组,因此对于所有标签定义,标签中的对应单元格集团列设置为“没有”

  • 是一个像素标签定义,所以表格包括PixelLabelID

  • 没有标签定义有子标签或属性,因此表不包括等级制度用于存储此类信息的列。

ldc=labelDefinitionCreatorMultisignal;添加标签(ldc,“汽车”“矩形”);添加标签(ldc,“卡车”“ProjectedCuboid”);添加标签(ldc,“车道”“行”);添加标签(ldc,“路”“像素标签”);添加标签(ldc,“阳光灿烂”“现场”);labelDefs =创建(ldc)
labelDefs = 6 x7表名SignalType LabelType组描述LabelColor PixelLabelID  _________ __________ _______________ ________ ___________ __________ ____________ {' 汽车的}图像矩形{”没有 '} {' '} { 0 x0 char} {0 x0双}{‘汽车’}PointCloud长方体{”没有 '} {' '} { 0 x0 char} {0 x0双}{“卡车”}形象ProjectedCuboid{‘没有’}{' '}{0x0 char} {0x0 double} {'Lane'} Image Line {'None'} {' '} {0x0 char} {0x0 double} {'Road'} Image PixelLabel {'None'} {' '} {0x0 char} {'Sunny'} Time Scene {'None'} {' '} {0x0 char} {'Sunny'} {'None'} {' '} {0x0 char} {' 0x0 char} {' 0x0 double}

创建视频第一帧的ROI标签数据。

numVideoFrames=numel(vidSource.Timestamp{1});carData=cell(numVideoFrames,1);laneData=cell(numVideoFrames,1);truckData=cell(numVideoFrames,1);carData{1}=[304 212 37 33];laneData{1}=[70 458;311 261];truckData{1}=[309215,33,24330211,33,24];videoData=timegram(videoData.Timestamp{1,1,carData),laneData,...“VariableNames”, {“汽车”“车道”});

为序列中的第一个点云创建ROI标签数据。

numPCFrames=numel(pcseqSource.Timestamp{1});carData=单元(numPCFrames,1);卡达塔{1}=[27.35 18.32-0.11 4.25 4.75 3.45 0 0];lidarData=时间表(pcseqSource.Timestamp{1},carData,“VariableNames”, {“汽车”});

合并两个源的ROI标签数据。

signalNames=[dataSource.SignalName];roiData=vision.labeler.labeldata.ROILabelData(signalNames,{videoData,lidarData})
roiData = ROILabelData with properties: video_01_city_c2s_fcw_10s: [204x2时间表]lidarSequence: [34x1时间表]

为驾驶场景的前10秒创建场景标签数据。

sunnyData = seconds([0 10]);labelNames = [“阳光”];sceneData=vision.labeler.labeldata.SceneLabelData(labelNames,{sunnyData})
sceneData=具有以下属性的SceneLabelData:Sunny:[0秒10秒]

从信号源、标签定义、ROI和场景标签数据创建地面真实值对象。您可以将此对象导入地面真理贴标机App用于手动贴标或在其上运行自动贴标算法。您还可以从该对象中提取训练数据,用于深度学习模型gatherLabelData函数。

gTruth = groundTruthMultisignal(数据源、labelDefs roiData, sceneData)
gTruth=groundTruthMultisignal,具有以下属性:数据源:[1x2 vision.labeler.loading.MultiSignalSource]LabelDefinitions:[6x7表格]ROILabelData:[1x1 vision.labeler.labeldata.ROILabelData]SceneLabelData:[1x1 vision.labeler.labeldata.SCENABELDATA]
介绍了R2020a