主要内容

使用多边形标记对象

这个图片标识,视频贴标机,地面实况贴标签机(自动驾驶工具箱)应用程序可以让你使用各种交互式绘图工具来标记图像。使用这些标签为训练算法创建基础真实数据。

关于多边形标签

您可以围绕图像或视频帧中的对象绘制多边形形状,并使用多边形对对象进行标记。还可以将多边形标签相互关联,使您能够将不同的对象标记为同一类的实例。导出的多边形标签保存了多个标签定义的多边形的堆栈顺序,并与ground truth格式兼容:

  • 语义分割网络H——- - - - - -W标签矩阵。使用多边形保持标签的创建或重新排序顺序(使用置后置前选项)。语义分割需要一个带有标签的图像像素图。为此,您必须将标签压平(失去标签的分层顺序)。假设将所有多边形标签的不透明度设置为最大,并将所有填充区域保留为标签矩阵。

  • 实例分割网络使用H——- - - - - -W——- - - - - -天体面具堆栈。

  • 图形中的原始多边形天体-by-1 cell array,其中每个cell包含M2点。

在本例中,您加载一张图像,创建多边形ROI标签,修改与绘制多边形相关的偏好,并对导出的地面真实对象数据进行后处理,以用于实例分割和语义分割训练网络。

加载未标记的数据

您可以从文件夹中加载存储在数据存储中的图像,或加载以前的labeler会话。这些图像必须可由用户读取imread.在本例中,加载的数据包含许多工具,包括船只、加油机和飞机。

加载数据编程

使用此过程以编程方式从数据存储加载图像:

  1. 从图像文件夹创建数据存储。例如,如果您有一个名为“boats”的文件夹,其中包含图像,那么您可以使用此代码创建图像的数据存储。

    imageFolder=fullfile(toolboxdir('vision')、'visiondata'、'Boots');imds=imageDatastore(imageFolder);

  2. 将数据存储加载到图片标识:

    成像标签机(imds);

或者,您可以加载文件夹的图像直接到图片标识:

imageFolder = fullfile (toolboxdir(“愿景”)、“visiondata”,“船”);imageLabeler (imageFolder);

直接从应用程序加载数据

点击进口要加载图像或单击公开会议打开已保存的会话。

创建多边形标签

为帆船、油轮和飞机创建多边形标签。

  1. ROI标签在左侧的窗格中,单击标签

  2. 选择多边形标记类型并命名帆船

  3. 您还可以通过单击预览颜色来更改标签颜色。

  4. 点击好吧

    这个帆船标签出现在ROI标签窗格。

  5. 重复步骤1到步骤4创建油轮标签和飞机标签。通过左键单击并上下拖动标签,可以在列表中移动标签。

绘制多边形ROI标签

  1. 选择帆船标记,然后使用鼠标,围绕每个帆船绘制一个多边形ROI。

  2. 选择油轮标记并在油轮周围绘制多边形ROI。

  3. 选择飞机标记并在飞机周围绘制一个多边形ROI。

    用多边形标记的帆船、油轮和飞机

修改多边形首选项和堆叠顺序

有许多方法可以修改ROI标签的外观堆垛顺序用于导出的地面实况文件。堆叠顺序指示一个对象是在另一个对象的前面还是后面,并且是解析重叠区域以构建语义标签地图所必需的。

在接下来的步骤中,将修改标签的颜色、设置标签名称在添加标签时的外观、修改标签的不透明度、查看标签类的实例以及设置堆叠顺序。

  1. 若要修改飞机ROI标签的颜色,请右键单击飞机标签ROI标签窗格中,选择编辑标签. 单击颜色预览并选择一种颜色。

  2. 若要在贴标签时显示ROI标签名称,请选择总是显示ROI标签菜单的看法部分。

  3. 要增加标签的不透明度,请使用多边形滑动条标签不透明度部分。增加不透明度有助于识别哪些标签在场景中其他标签的前面或后面。

    所有对象都是完全不透明的

  4. 油轮标签在帆船标签的前面,但它应该在帆船标签的后面。位置会影响输出的ground truth的堆叠顺序。修改堆叠顺序,右键单击场景中的油罐ROI标签并选择发回

    在场景中,油轮出现在帆船后面

  5. 要查看ROI标签的实例,请选择通过实例ROI的颜色中的下拉菜单看法部分。

    每个物体都有不同的颜色

  6. 通过单击导出带标签的地面实况数据出口选择到工作空间.将地面真实数据命名为MAT文件格特鲁斯

对实例或语义分段网络导出的标签进行后处理

您可以使用导出的、带标签的地面真相来训练实例分段网络或语义分段网络。

按照以下步骤处理多边形数据以进行语义分割或实例分割。

描述 程序

1 -显示地面真实数据

导出的地面实况对象包含五个对象和三个定义的数据。

进来格特鲁斯在MATLAB®命令行。

>>gTruth gTruth=带属性的groundTruth:数据源:[1×1 groundTruthDataSource]LabelDefinitions:[3×5表]LabelData:[1×3表]

2-获取多边形数据

这个LabelData属性按标签名称对数据进行分组帆船标签单元格数组包含三个元素油轮单元格数组包含一个元素,并且飞机单元格数组包含一个元素。

类型gTruth。标签Data

> > gTruth。LabelDataans = 1×3 table Sailboat Tanker Airplane __________ __________ __________ {3×1 cell} {1×1 cell} {1×1 cell}

3-叠加地面真实多边形数据

帆船和油船重叠在一起。这个信息(像素的相对顺序)在这种格式中会丢失。

使用gatherLabelData对象函数以按标签类型对数据进行分组。这将生成一个包含五个堆叠对象的表。

使用gatherLabelData属性并存储输出。

>>out=gatherLabelData(gTruth,[labelType.Polygon],'GroupLabelData','labelType')out=1×1单元格数组{1×1表}

显示表格的内容。

> >{1}。多边形Data ans = 1×1 cell array {5×2 cell}

4 -根据深度顺序查看地面真实数据

的内容远志,显示堆叠多边形的顺序。订单和贴标订单是一致的,包括你寄到后面的油轮。

现在标签被压平了,在底部是油轮,它上面的帆船覆盖了油轮重叠的地方。

显示多边形数据。

> >{1}。多边形Data{1} ans = 5×2 cell array {12×2 double} {'Airplane'} { 6×2 double} {'Sailboat'} { 7×2 double} {'Sailboat'} {13×2 double} {'Sailboat'} { 9×2 double} {'Tanker' }

转换多边形数据的语义分割

描述 程序

1-创建标签ID映射

创建一个将类名与类id关联起来的映射。

classNames={'planer','Sailboat','cancern'};classIds=1:numel(classNames);labelIDMap=containers.Map(classNames,classIds);

2 -提取多边形

从输出结构中提取多边形坐标和多边形标签。

多边形=从{1}.PolygonData {1} (: 1);polygonLabels =从{1}.PolygonData {1} (:, 2);

3 -平面多边形到语义分割地图

将标签名称转换为ID。

将多边形坐标转换为语义分割贴图。

polygonLabelIDs=cellfun(@(x)labelIDMap(x),polygonLabels);imageSize=[645916];%大小(boats_im)outputIm=poly2label(多边形、多边形标签、图像大小);

转换多边形数据为实例分割

描述 程序

为实例分割预先分配掩码堆栈

预先分配遮罩堆栈,使其高度和宽度等于图像尺寸,通道深度与多边形数相同。
多边形=out{1}.polygonda{1}(:,1);numPolygons=大小(多边形,1);imageSize=[645916];%大小(船_im)maskStack=false([imageSize(1:2)numPolygons]);

将多边形转换为实例遮罩

将每个多边形转换为单独的遮罩,并将其插入遮罩堆栈。

for i = 1: numpolygon maskStack(:,:,i) = poly2mask(polygon {i}(:,1),…多边形{我}(:,2),图象尺寸(1)图象尺寸(2));结束

另见

应用程序

功能

物体

相关的话题