主要内容

gatherLabelData

从ground truth收集同步标签数据

描述

唇形目= gatherLabelData (格特鲁斯信号名labelTypes返回从多信号地面实况数据收集的同步标签数据,格特鲁斯. 这个function returns label data for the signals specified by信号名以及指定的标签类型labelTypes

例子

唇形目时间戳) = gatherLabelData (___另外,使用前面语法中的参数返回与收集的标签数据关联的信号时间戳。

使用时间戳writeFrames函数从地面多路信号对象到磁盘。使用这些帧和相关标签作为机器学习或深度学习模型的训练数据。

___) = gatherLabelData (___,“采样因子”,sampleFactor指定用于对标签数据进行子采样的采样因子。

例子

全部折叠

采集视频信号和激光雷达点云序列信号的标签数据地面多路信号对象。将与该标签数据相关联的信号帧写入磁盘并可视化这些帧。

将点云序列文件夹路径添加到MATLAB®搜索路径。视频已经在MATLAB搜索路径上。

pcSeqDir = fullfile (toolboxdir (“开车”),“drivingdata”...“lidarSequence”); addpath(pcSeqDir);

加载一个地面多路信号对象,该对象包含视频和激光雷达点云序列的标签数据。

data =负载(“多重信号露丝.马特”); gTruth=data.gTruth;

指定收集标签数据的信号。

signalNames = [“video_01_city_c2s_fcw_10s”“lidarSequence”];

视频包含矩形标签,而激光雷达点云序列包含长方体标签。从视频中收集矩形标签,从激光雷达点云序列中收集长方体标签。

labelTypes=[labelType.Rectangle labelType.Cuboid];[labelData,时间戳]=gatherLabelData(gTruth,SignalName,labelTypes);

显示两个信号的前八行标签数据。这两个信号都包含该信号的数据汽车标签。在视频中汽车标签被绘制为一个矩形边界框。在激光雷达点云序列中汽车标签被绘制为长方体边界框。

lidarLabelSample = head(labelData{2})
videoLabelSample =表车  _________________ {[ 299 213 42 33]} lidarLabelSample =表的车  ____________________________________________________ {[ 17.7444 6.7386 3.3291 3.6109 3.2214 3.5583 0 0 0]}

将与收集的标签数据相关联的信号帧写入临时文件夹位置,每个信号一个文件夹。的返回的时间戳gatherLabelData函数指示要写入的信号帧。

outputFolder = fullfile (tempdir, (“videoFrames”“激光雷达框架”]);文件名= writeFrames (gTruth, signalNames outputFolder,时间戳);
从以下信号写入2帧

加载写入的视频信号帧使用图像数据存储对象。控件加载关联的矩形标签数据boxLabelDatastore对象。

imd = imageDatastore(文件名{1});建筑物= boxLabelDatastore (labelData {1});

通过使用fileDatastore对象通过使用boxLabelDatastore对象。

fds=文件数据存储(文件名{2},“ReadFcn”, @pcread);cld = boxLabelDatastore (labelData {2});

通过使用视频播放器对象。通过使用一个pcplayer对象。

videoPlayer=vision.videoPlayer;ptCloud=预览(fds);ptCloudPlayer=pcplayer(ptCloud.XLimits、ptCloud.YLimits、ptCloud.ZLimits);hasdata (imd)读取视频和激光雷达帧。我=读(imd);ptCloud =阅读(fds);%可视化视频和激光雷达帧。放像机(我);视图(ptCloudPlayer ptCloud);结束

删除点云序列文件夹的路径。

rmpath(pcSeqDir);

输入参数

全部折叠

多信号地面真实数据,指定为地面多路信号物体或向量地面多路信号对象。

每一个地面多路信号对象格特鲁斯必须包括信号名输入。

此外,每个对象必须包含每个收集的标签定义至少一个已标记的标签。假设格特鲁斯是一个地面多路信号对象,该对象包含单个视频信号的标签数据video_front_camera. 对象包含对象的标记矩形感兴趣区域(ROI)标签汽车标签定义,但不是卡车标签定义。如果您使用此语法收集类型的标签矩形从这个对象,然后gatherLabelData函数返回错误。

labelData = gatherLabelData (gTruth,“video_front_camera”, labelType.Rectangle);

从中收集标签数据的信号的名称,指定为字符向量、字符串标量、字符向量的单元格数组或字符串向量。信号名称必须是存储在输入多信号地面真值数据中的有效信号名称,格特鲁斯

获取信号名称的方法地面多路信号对象,使用此语法,其中格特鲁斯是对象的变量名:

gTruth.DataSource.SignalName

例子:“视频城市c2s fcw 10s”

例子:“video_01_city_c2s_fcw_10s”

例子:{“video_01_city_c2s_fcw_10s”、“lidarSequence”}

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

从中收集标签数据的标签类型,指定为唇形枚举标量,唇形枚举向量,或单元格数组唇形枚举标量和向量。的gatherLabelData函数为输入指定的每个信号收集标签数据信号名和每个地面多路信号输入指定的对象格特鲁斯. 这个number of elements inlabelTypes必须匹配的信号的数量信号名

为每个信号的单个标签类型收集标签数据

要为每个信号收集单个标签类型的标签数据,请指定labelTypes作为一个唇形枚举标量或向量。在所有地面多路信号对象格特鲁斯,gatherLabelData函数集labelTypes (n)标签的数据signalName (n)哪里n是要收集其标签数据的标签类型和相应信号名称的索引。每个返回表的输出唇形目单元格数组只包含每个信号的一个标签类型的数据。

在这个代码示例中gatherLabelData函数收集类型为的标签矩形从一个名为video_front_camera. 该函数还收集类型为的标签长方体从一个激光雷达点云序列信号存储在一个名为利多卡因. 这个格特鲁斯输入包含地面多路信号要从中收集此数据的对象。

labelData = gatherLabelData (gTruth,...“video_front_camera”“lidarData”],...[labelType.Rectangle, labelType.Cuboid];

要从单独的信号中收集单个标签类型的标签数据,必须为每个信号重复标签类型。在这个代码示例中gatherLabelData函数收集类型为的标签矩形video_left_camera右摄像机视频信号。

labelData = gatherLabelData (gTruth,...“video_left_camera”“视频\右\摄像机”],...[labelType.Rectangle,labelType.Rectangle];

为每个信号收集多个标签类型的标签数据

要为每个信号收集多个标签类型的标签数据,请指定labelTypes作为唇形枚举标量和向量。在所有地面多路信号对象格特鲁斯,gatherLabelData函数集labelTypes {n}标签的数据signalName (n)哪里n是要收集其标签数据的标签类型和相应信号名称的索引。该函数将这些标签类型的数据分组到每个信号的一个表中地面多路信号对象。

在这个代码示例中gatherLabelData函数收集类型为的标签矩形video_front_camera视频信号。该函数还收集类型为的标签长方体从一个激光雷达点云序列信号存储在一个名为利多卡因. 这个格特鲁斯输入包含地面多路信号要从中收集此数据的对象。

labelData = gatherLabelData (gTruth,...“video_front_camera”...“lidarData”],...{[labelType.Rectangle labelType.Line],...labelType.长方体};

有效枚举类型

您可以指定其中一个或多个枚举类型。

  • labelType。矩形-矩形ROI标签

  • labelType。长方体-长方体ROI标签(点云)

  • labelType.ProjectedCuboid-投影长方体ROI标签(图像和视频数据)

  • labelType。行-行ROI标签

  • labelType。PixelLabel-像素ROI标签

  • labelType。多边形-像素ROI标签

  • labelType。场景——现场标签

若要收集场景的标签数据,必须指定labelTypes随着labelType。场景枚举标量。您不能指定任何其他标签类型labelType。场景

用于对标签数据进行子采样的采样因子,指定为正整数。样本因子K包括每一个K信号帧。增加采样系数,从高采样率的信号(如视频)中去掉冗余帧。

例子:“采样因子”,5

输出参数

全部折叠

标签数据,作为-借-N表格的单元格数组,其中:

  • 你的电话号码是多少地面多路信号对象格特鲁斯

  • 什么时候labelTypes包含ROI唇形枚举,N信号的数量是多少信号名和元素的个数labelTypes. 在这种情况下,,labelData{m,n}控件的标签数据表nth的信号信号名这是在th地面多路信号的对象格特鲁斯. 这个table contains label data for only the label types in then第位labelTypes

  • 什么时候labelTypes仅包含labelType。场景枚举,N等于1. 在这种情况下,,labelData {m}控件中所有信号的场景标签数据表th地面多路信号的对象格特鲁斯

对于给定的标签数据表,tbl,桌子是大小的T-借-l,其中:

  • T是标签数据存在的信号中的时间戳数量。

  • l是为该信号收集的标签类型的标签定义的数量。

  • 台(t、l)对象收集的标签数据l标签在t时间戳。

如果一个信号在某个时间戳上没有标签数据,则相应的标签数据表不包含该时间戳的行。

对于表中的每个单元格,返回的标签数据的格式取决于标签的类型。

标签类型 标签在每个时间戳的存储格式
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。场景 逻辑1真正的),否则符合逻辑0

标签数据格式

考虑使用以下方法收集的标签数据的单元格数组gatherLabelData函数。该函数从三个标签中收集标签地面多路信号具有变量名的对象gTruth1gTruth2,gTruth3

  • 为一个视频信号命名video_front_camera,该函数收集类型的标签矩形

  • 为激光雷达点云序列信号存储在名为利多卡因,该函数收集类型的标签长方体

此代码显示对gatherLabelData函数。

[gTruth1 gTruth2 gTruth3],...“video_front_camera”...“lidarData”],...{[labelType.Rectangle labelType.Line],...labelType.长方体};
唇形目输出是表的3×2单元格数组。单元格数组的每一行都包含其中一个单元格的标签数据地面多路信号对象。第一列包含视频信号的标签数据,video_front_camera. 第二列包含点云序列信号的标签数据,利多卡因. 此图显示了唇形目细胞阵列。

该图显示了第三个视频信号的标签数据表地面多路信号对象。的gatherLabelData函数为矩形标签名为汽车和一个标签名为车道. 该表包含信号中四个时间戳处的标签数据。

此图显示了第三个窗口中激光雷达信号的标签数据表地面多路信号对象。的gatherLabelData函数为长方体标签,也称为汽车. 这个汽车标签出现在两种信号类型中,因为它被标记为矩形视频信号和标签长方体激光雷达信号标签。该表包含信号中四个时间戳的标签数据。

信号时间戳,返回为-借-N单元阵列的持续时间向量,地点:

  • 你的电话号码是多少地面多路信号对象格特鲁斯

  • N信号的数量是多少信号名

  • labelData{m,n}对象的时间戳nth的信号信号名这是在th地面多路信号的对象格特鲁斯

如果从多个信号收集标签数据,则信号时间戳与指定的第一个信号的时间戳同步信号名

限制

  • gatherLabelData函数不收集子标签或属性的标签数据。如果标签包含子标签或属性,则在唇形目输出时,该函数仅返回父标签的位置。

介绍了R2020a