主要内容

ROILabelData

地面实况数据ROI标签

自从R2020a

描述

ROILabelData对象存储地面实况数据感兴趣的区域(ROI)为每个信号在一个标签定义groundTruthMultisignal对象。

创建

当你出口groundTruthMultisignal对象从一个地面实况贴标签机应用程序会话,ROILabelData出口对象的属性存储ROI是一个标签ROILabelData对象。创建一个ROILabelData对象编程,使用vision.labeler.labeldata.ROILabelData函数(这里描述)。

描述

例子

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

输入参数

全部展开

信号名称指定为一个字符串数组。指定的名称出现在所有信号groundTruthMultisignal您正在创建的对象。你可以从现有的信号名称groundTruthMultisignal对象通过访问数据源该对象的属性。使用此命令和替换gTruth与你的名字groundTruthMultisignal对象变量。

gTruth.DataSource.SignalName

在一个出口groundTruthMultisignal对象,ROILabelData对象包含一个标签为每个信号数据属性,即使一些信号没有ROI标签数据。

创建的属性ROILabelData对象指定的名称signalNames

例子:[" video_01_city_c2s_fcw_10s”“lidarSequence”)

ROI每个信号,标签数据指定为一个单元阵列的时间表。每个单元阵列中的时间表包含数据的信号在相应的位置signalNames输入。的ROILabelData对象存储每个时间表的属性名称相同的信号。

时间表取决于数据格式为每个信号groundTruthMultisignal对象,导出或创建。

每个时间表包含一列定义存储在每个标签LabelDefinitions财产的groundTruthMultisignal对象。标签定义信号类型不支持被排除在外。万博1manbetx例如,假设您定义一个ROI标签命名“车道”。激光雷达点云的时间表不包括一个信号车道列,因为这些信号不支持万博1manbetxROI标签。在数据源财产的groundTruthMultisignal对象,SignalType每个数据源的属性列表有效信号类型。

时间表的高度是定义的数字时间戳的信号。在数据源财产的groundTruthMultisignal对象,时间戳每个数据源的属性列表信号时间戳。

为每个标签定义,所有ROI标签标记在那个表中时间戳被组合到一个细胞。考虑到ROI标签为视频信号存储在一个数据groundTruthMultisignal对象,gTruth。在每个时间戳,包含三个标签,卡车包含一个标签,车道包含两个标签。

gTruth.ROILabelData.video_01_city_c2s_fcw_10s
ans = 5×4时间表时间汽车卡车巷_____ _______ _______ _______ 0秒{3×4双}{1×4双}}{2×1细胞0.05秒{3×4双}{1×4双}}{2×1细胞0.1秒{3×4双}{1×4双}}{2×1细胞0.15秒{3×4双}{1×4双}}{2×1细胞0.2秒{3×4双}{1×4双}{2×1细胞}

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

标签类型 存储格式的标签在每一个时间戳
labelType.Rectangle

4数值矩阵的形式[x, y, w h],地点:

  • 是标签的帧数。

  • xy指定矩形的左上角。

  • w指定矩形的宽度,也就是沿其长度x设在。

  • h指定矩形的高,这是它的长度沿y设在。

labelType.Cuboid

9数字矩阵的形式[xctr, yctr zctr、xlen ylen, zlen, xrot, yrot, zrot],地点:

  • 是标签的帧数。

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

  • xlen,ylen,zlen指定的长方体的长度x设在,y设在,z分别设在前旋转被应用。

  • xrot,yrot,zrot为长方体沿着指定的旋转角度x设在,y设在,z分别设在。这些角时clockwise-positive在相应的轴的前进方向。

图中显示这些值如何确定一个长方体的位置。

长方体与中心点、长度和旋转角度标记

labelType.ProjectedCuboid

8向量的形式(x1, y1, w1, h1, x2, y2, w2, h2),地点:

  • 是标签的帧数。

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

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

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

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

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

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

图中显示这些值如何确定一个长方体的位置。

标签预计长方体

labelType.Line

1矢量的细胞阵列,是标签的帧数。每个单元包含一个数组N2数值矩阵的形式[(x1, y1;x2 y2;…;xN yN)N分多段线。

labelType.PixelLabel

标签数据的所有像素标签定义存储在一个单一的1PixelLabelData图像或帧。每个元素包含一个像素标签图像文件名。一个像素标签图像描述标签或标签中包含相应的形象。标签可以被描述为一个1 -或3 -频道标签矩阵。使用PixelLabelData贴标签机的任何应用程序,您必须使用一个单通道标签矩阵的值类型uint8。你可以三路像素标签数据矩阵转换为单通道标签矩阵与贴标签机应用程序以编程方式使用。

labelType.Polygon

1矢量的细胞阵列,是标签的数量。每个单元包含一个数组N2数值矩阵的形式[(x1, y1;x2 y2;…;xN yN)N点在多边形。

labelType.Custom

标签中指定的存储完全按照他们的时间表。如果你导入一个groundTruthMultisignal对象包含自定义标签数据地面实况贴标签机应用程序,这些数据不是导入到应用程序。培训时使用自定义数据收集标签数据,结合数据标签应用。

如果数据包括sublabels ROI标签或属性,那么必须指定为标签在每个时间戳结构。结构包括这些字段。

标签结构字段 描述
位置

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

的格式位置取决于类型的标签。这些格式描述在前面的桌子上。

AttributeName1,…, AttributeNameN

父标签的属性

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

SublabelName1,…, SublabelNameN

Sublabels父标签

每个sublabel定义有自己的字段,字段的名称对应于sublabel名字。每个sublabel字段的值是一个结构,它包含所有的数据标记sublabels这个名字在给定的时间戳。

此表描述了这个sublabel结构的格式。

Sublabel结构领域 描述
位置

在给定位置的sublabels时间戳

的格式位置取决于类型的标签。这些格式描述在前面的桌子上。

AttributeName1,…, AttributeNameN

sublabels的属性

每个sublabel定义有自己的字段,字段的名称对应于属性名称。的属性值是一个特征向量列表字符串属性,一个数字的标量数字属性,或逻辑标量逻辑属性。如果你离开一个属性不明,属性值是一个空向量。

属性

全部展开

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

当出口ROILabelData对象从一个地面实况贴标签机应用程序会话属性名对应的信号名称存储在数据源导出的属性groundTruthMultisignal对象。

当创建一个ROILabelData对象编程,signalNameslabelData输入参数定义创建对象的属性的名称和值。

假设您希望创建一个groundTruthMultisignal对象包含一个视频信号和激光雷达点云序列信号。在一个字符串数组,指定的信号signalNames

signalNames = [“video_01_city_c2s_fcw_10s”“lidarSequence”];

存储视频ROI标签,可视数据激光雷达点云序列ROI的标签,lidarData在一系列细胞的时间表,labelData。每个时间表包含的数据对应的信号signalNames

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

ROILabelData对象,roiData,将这些数据存储在属性名称与相应的信号。您可以指定roiDataROILabelData财产的groundTruthMultisignal对象。

roiData = vision.labeler.labeldata.ROILabelData (signalNames labelData)
roiData = ROILabelData属性: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)负载timestamps.matrmpath (pcSeqFolder) lidarSourceData =负载(fullfile (pcSeqFolder,“timestamps.mat”));sourceName = pcSeqFolder;sourceParams =结构;sourceParams。时间戳s = timestamps; pcseqSource = vision.labeler.loading.PointCloudSequenceSource; pcseqSource.loadSource(sourceName,sourceParams);

结合信号来源到一个数组中。

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

创建一个表的标签定义地面实况数据通过使用labelDefinitionCreatorMultisignal对象。

  • 标签定义出现两次。尽管被定义为一个矩形,您可以绘制矩形只对图像信号,如视频。的labelDefinitionCreatorMultisignal对象创建一个额外的行激光雷达点云的信号。在这些信号类型,你可以画画标签是长方体。

  • 标签定义没有描述和指定颜色,所以描述LabelColor列是空的。

  • 标签定义没有分配组,对于所有标签定义相应的细胞集团列被设置为“没有”

  • 是一个像素标签定义,那么表包括一个PixelLabelID列。

  • 没有标签定义sublabels或属性,所以表不包括层次结构列来存储这些信息。

ldc = labelDefinitionCreatorMultisignal;addLabel (ldc,“汽车”,“矩形”);addLabel (ldc,“卡车”,“ProjectedCuboid”);addLabel (ldc,“车道”,“行”);addLabel (ldc,“路”,“PixelLabel”);addLabel (ldc,“阳光”,“现场”);labelDefs =创建(ldc)
labelDefs = 7 x7表名SignalType LabelType组描述LabelColor PixelLabelID _____ __________售予________ ___________ __________ _______{‘汽车’}图像矩形{‘没有’}{‘}{0 x0 char} {0 x0双}{‘汽车’}PointCloud长方体{‘没有’}{‘}{0 x0 char} {0 x0双}{“卡车”}形象ProjectedCuboid{‘没有’}{‘}{0 x0 char} {0 x0双}{“车道”}图像行{‘没有’}{‘}{0 x0 char} {0 x0双}{“车道”}PointCloud行{‘没有’}{‘}{0 x0 char} {0 x0双}{‘路’}形象PixelLabel{‘没有’}{‘}{0 x0 char}{[1]}{‘阳光’}时间场景{‘没有’}{‘}{0 x0 char} {0 x0双}

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

numVideoFrames =元素个数(vidSource.Timestamp {1});carData =细胞(numVideoFrames, 1);laneData =细胞(numVideoFrames, 1);truckData =细胞(numVideoFrames, 1);carData {1} = [304 212 37 33];laneData {1} = (70 458;311 261);truckData{1} =[309215, 33岁,24330211年,33岁的24);可视数据=时间表(vidSource.Timestamp {1}, carData, laneData,“VariableNames”,{“汽车”,“车道”});

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

numPCFrames =元素个数(pcseqSource.Timestamp {1});carData =细胞(numPCFrames, 1);carData {1} = [27.35 18.32 -0.11 4.25 4.75 3.45 0 0 0);lidarData =时间表(pcseqSource.Timestamp {1}, carData,“VariableNames”,{“汽车”});

结合ROI标签数据的来源。

signalNames = [dataSource.SignalName];roiData = vision.labeler.labeldata.ROILabelData (signalNames{可视数据,lidarData})
roiData = ROILabelData属性:video_01_city_c2s_fcw_10s: [204 x2时间表]lidarSequence: [34 x1时间表)

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

sunnyData =秒(10 [0]);labelNames = [“阳光”];sceneData = vision.labeler.labeldata.SceneLabelData (labelNames {sunnyData})
sceneData = SceneLabelData属性:阳光:[0秒10秒)

创建一个地面实况对象的信号来源,标签定义和ROI和现场标签数据。你可以将这个对象导入地面实况贴标签机应用手动标记或标签自动化运行算法。您还可以从这个对象中提取训练数据的深度学习模型通过使用gatherLabelData函数。

gTruth = groundTruthMultisignal(数据源、labelDefs roiData, sceneData)
gTruth = groundTruthMultisignal属性:数据源:[1 x2 vision.labeler.loading。米ultiSignalSource] LabelDefinitions: [7x7 table] ROILabelData: [1x1 vision.labeler.labeldata.ROILabelData] SceneLabelData: [1x1 vision.labeler.labeldata.SceneLabelData]

版本历史

介绍了R2020a