com.alibaba.easyexcel导出指定的列_MATLAB开发自动驾驶第五课-导出和导入多个信号的地面真值标签...

9c2f31e599c091bb685eab9fa15f2aa8.png

按照 "为多个信号贴标签 "

小明师兄:MATLAB开发自动驾驶第四课-多信号的地面真相标签​zhuanlan.zhihu.com
f7640846c25f8de5c96e6748e810c9a6.png

程序给信号贴上标签后,导出标签并探索如何存储它们。

设置

打开包含标记信号的 Ground Truth Labeler 应用程序会话。 可以从 MATLAB® 命令行打开会话。例如,如果将该会话保存到名为groundTruthLabelingSession,输入此命令。

groundTruthLabeler groundTruthLabelingSession.mat

在应用程序工具条上,选择 "导出标签">"到工作区"。在 "导出到工作空间 "窗口中,使用默认的导出变量名称 gTruth,然后单击确定。应用程序会将 groundTruthMultisignal 对象 gTruth 导出到 MATLAB工作区。该对象包含从应用程序会话中捕获的地面真相标签。

如果没有将groundTruthMultisignal对象导出到工作区,请从变量gTruth中加载一个预定义对象。用于加载该对象的函数作为辅助文件附在本例中。如果使用自己的对象,标签位置等数据可能与本例中显示的数据不同。

if (~exist('gTruth','var'))
gTruth = helperLoadGTruthGetStarted;
end

显示groundTruthMultisignal对象gTruth的属性。该对象包含有关信号数据源、标签定义以及 ROI 和场景标签的信息。这些信息存储在对象的单独属性中。

gTruth = 
groundTruthMultisignal with properties: 
DataSource: [1x2 vision.labeler.loading.MultiSignalSource] 
LabelDefinitions: [3x7 table]
ROILabelData: [1x1 vision.labeler.labeldata.ROILabelData] 
SceneLabelData: [1x1 vision.labeler.labeldata.SceneLabelData]

在这个例子中,将检查每个属性的内容,以了解对象如何存储地面真相标签。

数据源

DataSource 属性包含有关数据源的信息。此属性包含两个 MultiSignalSource 对象:一个用于视频源,一个用于点云序列源。显示DataSource属性的内容。

gTruth.LabelDefinitions.Hierarchy{1}.brakeLight
ans =
1x2 heterogeneous MultiSignalSource (VideoSource, PointCloudSequenceSource) array with propert 
SourceName
SourceParams 
SignalName 
SignalType 
Timestamp 
NumSignals

这些对象中存储的信息包括数据源的路径、它们所包含的信号名称以及这些信号的时间戳。显示数据源的信号名称。

gTruth.DataSource.SignalName
ans = "video_01_city_c2s_fcw_10s"
ans="lidarSequence" 

标签定义

LabelDefinitions 属性包含了一个关于标签定义的信息表。显示标签定义表。每一行都包含有关 ROI 或场景标签定义的信息。汽车标签定义有两行:一行用于在图像信号上绘制矩形标签,另一行用于在点云信号上绘制立方体标签。

gTruth.LabelDefinitions
ans =

  3x7 table

       Name        SignalType    LabelType       Group        Description     LabelColor      Hierarchy  
    ___________    __________    _________    ____________    ___________    ____________    ____________

    {'car'    }    Image         Rectangle    {'Vehicles'}    {0x0 char}     {1x3 double}    {1x1 struct}
    {'car'    }    PointCloud    Cuboid       {'Vehicles'}    {0x0 char}     {1x3 double}    {1x1 struct}
    {'daytime'}    Time          Scene        {'None'    }    {0x0 char}     {1x3 double}    {0x0 double}

层次列存储了父ROI标签的子标签和属性定义的信息。当汽车标签绘制为矩形时,显示它的子标签和属性信息。该标签包含一个子标签brakeLight,没有属性。

gTruth.LabelDefinitions.Hierarchy{1}
ans =     
   struct with fields:     
   brakeLight: [1x1 struct]           
   Type: Rectangle     Description: ''

显示父车标签的刹车灯子标签的信息。子标签包含一个属性isOn。子标签不能有自己的子标签。

gTruth.LabelDefinitions.Hierarchy{1}.brakeLight
ans = 
      struct with fields: 
      Type: Rectangle 
      Description: ''
      LabelColor: [0.5862 0.8276 0.3103]
      isOn: [1x1 struct]

显示刹车灯子标签的 isOn 属性的信息。这个属性没有默认值,所以DefaultValue字段为空。

gTruth.LabelDefinitions.Hierarchy{1}.brakeLight.isOn 
ans = 
struct with fields: 
DefaultValue: []
Description: ''

ROI标签数据

ROILlabelData 属性包含一个 ROILabelData 对象,其属性包含每个信号的 ROI 标签数据。属性的名称与信号的名称相匹配。显示对象属性名。

gTruth.ROILabelData
ans =
ROILabelData with properties: 
video_01_city_c2s_fcw_10s: [204x1 timetable]
lidarSequence: [34x1 timetable]

每个属性都包含在每个信号时间戳处绘制的 ROI 标签的时间表,每个标签有一列。查看部分视频和激光雷达点云序列时间表。设置一个时间间隔,从8到8.5秒。该时间间隔对应于程序中 "为多个信号标注地面真值 "中标注的时间间隔的开始。视频时间表比点云序列时间表包含更多行,因为视频包含更多标签帧。

timeInterval = timerange(seconds(8),seconds(8.5));
videoLabels = gTruth.ROILabelData.video_01_city_c2s_fcw_10s(timeInterval,:) 
lidarLabels = gTruth.ROILabelData.lidarSequence(timeInterval,:) 
videoLabels = 
10x1 timetable
Time car 
8 sec {1x1 struct}
8.05 sec {1x1 struct}
8.1 sec {1x1 struct}
8.15 sec {1x1 struct}
8.2 sec {1x1 struct}
8.25 sec {1x1 struct}
8.3 sec {1x1 struct}
8.35 sec {1x1 struct}
8.4 sec {1x1 struct}
8.45 sec {1x1 struct}
lidarLabels = 
2x1 timetable
Time            car 
8.0495 sec {1x1 struct} 
8.3497 sec {1x1 struct}

查看时间间隔内第一帧视频的矩形车标签。标签数据存储在一个结构中。

videoLabels.car{1}
ans = 
struct with fields: 
Position: [296 203 203 144] 
brakeLight: [1x2 struct]

Position(位置)字段存储汽车标签的位置。这个框架只包含一个车标,所以在这种情况下,Position只包含一个矩形边界框。边界框位置的形式为[x y w h],其中。

- x和y表示矩形的左上角。

- w指定矩形的宽度,也就是矩形沿x轴的长度。

- h指定矩形的高度,也就是矩形沿y轴的长度,其中:x和y指定矩形的左上角,w指定矩形的宽度,也就是矩形沿x轴的长度。

汽车标签在这个框架上还包含两个刹车灯子标签。查看brakeLight子标签。子标签存储在一个结构数组中,每个子标签在框架上绘制一个结构。

videoLabels.car{1}.brakeLight 
ans = 
1x2 struct array with fields: 
Position isOn

查看子标签的边界框位置。

videoLabels.car{1}.brakeLight.Position
ans = 
304 245 50 46 
ans = 
435 243 54 51

查看每个子标签中isOn属性的值。对于两个子标签,此属性被设置为逻辑1(true)。

videoLabels.car{1}.brakeLight.isOn 
ans = logical
1 
ans = logical
1

现在查看时间间隔内第一个点云序列帧的立方体车标签。点云序列不支持子标签或属性。立方体车标签不存储在结构的位置字段中,而是存储在一个M乘9的矩阵中,其中M是立方体标签的数量。因为这个框架只包含一个立方体标签,在这种情况下,M为1。

lidarLabels.car{1}
ans = 
struct with fields: 
Position: [-1.1559 -0.7944 1.2012 12.6196 5.9278 3.0010 0 0 0]
brakeLight: []

1乘9的边界盒位置的形式为[xctr,yctr,zctr,xlen,ylen,zlen,xrot,yrot,zrot],其中。

- xctr, yctr, and zctr specify the center of the cuboid. xlen, ylen, and zlen, xrot, yrot, zrot],其中:

- xlen, ylen, 和 zlen 分别指定了立方体在应用旋转之前沿 x-, y-, 和 z-轴的长度。

- xrot、yrot和zrot分别指定了立方体沿x轴、y轴和z轴的旋转角度。这些角度在相应轴的正向看时为顺时针正值。

此图显示了这些值如何指定立方体的位置。

场景标签数据

SceneLabelData 属性包含一个 SceneLabelData 对象,其属性包含所有信号的场景标签数据。属性的名称与场景标签的名称相匹配。显示对象属性名:

 gTruth.SceneLabelData
ans = 
SceneLabelData with properties:
daytime: [0 sec 10.15 sec]

日间标签适用于整个时间间隔,约为10秒。

使用 "地面真相 "标签

本例中显示的标签仅用于说明目的。对于自己的标签,在导出标签后,可以使用它们作为对象检测器的训练数据。要从groundTruthMultisignal对象中收集标签数据用于训练,请使用gatherLabelData函数。

要共享已标记的地真数据,请共享包含groundTruthMultisignal对象的地真MAT-文件,而不是包含应用程序会话的MAT-文件。

未经许可,禁止转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值