的图片标志,贴标签机视频,地面真相标签(自动驾驶工具箱)应用程序允许您使用各种交互式绘图工具为图像添加标签。使用这些标签为训练算法创建地面真相数据。
您可以在图像或视频帧中的对象周围绘制多边形形状,并使用多边形标记对象。您还可以将多边形标签相互关联,使您能够将不同的对象标记为同一类的实例。导出的多边形标签保存跨标签定义的多边形的堆栈顺序,并与要求的地面真理格式兼容:
语义分割网络使用H——- - - - - -W标签的矩阵。使用多边形维护标签创建或重排序的顺序(使用发送到后台
而且摆在前面
选项)。语义分割需要一个带有标签的图像像素图。要做到这一点,你必须把标签压平(失去标签的分层顺序)。想象一下,将所有多边形标签的不透明度调到最大,并保留所有填充区域作为标签矩阵。
实例分割网络使用H——- - - - - -W——- - - - - -NumObjects面具堆栈。
的原始多边形NumObjects-by-1 cell数组,其中每个cell包含米2点。
在本例中,您将加载一个图像,创建多边形ROI标签,修改与绘制多边形相关的首选项,并对导出的地面真相对象数据进行后处理,以用于实例分割和语义分割训练网络。
您可以从文件夹加载存储在数据存储中的图像,或加载以前的标签程序会话。图像必须是可读的imread
.在本例中,您正在加载包含许多交通工具的数据,包括船只、油轮和飞机。
使用这个过程来编程地从数据存储加载图像:
从映像文件夹创建一个数据存储。例如,如果您有一个名为“boats”的文件夹,其中包含图像,则可以使用此代码创建图像的数据存储。
imageFolder = fullfile(toolboxdir('vision'),'visiondata','boats');imds = imageDatastore(imageFolder);
将数据存储加载到图片标志:
imageLabeler (imd);
或者,您也可以直接加载图像文件夹图片标志:
imageFolder = fullfile(toolboxdir('vision'),'visiondata','boats');imageLabeler (imageFolder);
点击进口加载图像或单击公开会议打开已保存的会话。
为帆船、油轮和飞机创建多边形标签。
在ROI标签窗格的左侧,单击标签.
选择多边形
标签类型并命名它帆船
.
您还可以通过单击预览颜色来更改标签的颜色。
点击好吧.
的帆船标签出现在ROI标签窗格。
重复步骤1到4创建一个油轮标签和飞机标签。您可以通过左键单击并向上或向下拖动标签来移动列表中的标签。
选择帆船标签,然后使用鼠标,在每艘帆船周围画一个多边形ROI。
选择油轮在油船周围标记并绘制一个多边形ROI。
选择飞机标记并绘制飞机周围的多边形ROI。
有许多方法可以修改ROI标签的外观。您还可以设置堆垛顺序用于导出的地面真相文件。堆叠顺序表示一个对象是在另一个对象的前面还是后面,这是解析重叠区域以构建语义标签映射所必需的。
在接下来的步骤中,您将修改标签的颜色、设置标签名称在标记时的外观、修改标签的不透明度、查看标签类的实例以及设置堆叠顺序。
若要修改飞机ROI标签的颜色,请右键单击飞机
标签ROI标签窗格并选择编辑标签.点击颜色预览,选择颜色。
若要在标记时显示ROI标签名称,请选择总是从显示ROI标签的菜单视图部分。
要增加标签的不透明度,请使用多边形的滑块标签不透明度部分。增加不透明度有助于识别场景中哪些标签在其他标签的前面或后面。
油轮标签在帆船标签的前面,但它应该在帆船标签的后面。该位置影响导出的地面真相的叠加顺序。要修改堆叠顺序,右键单击场景中的加油机ROI标签并选择发送回.
若要查看ROI标签实例,请选择通过实例
从ROI的颜色的下拉菜单视图部分。
通过单击导出标记的地面真相数据出口并选择到工作空间.命名地面真相数据MAT文件gTruth
.
您可以使用导出的,标记的地面真理来训练实例分割网络或语义分割网络。
按照以下步骤处理用于语义分割或实例分割的多边形数据。
一步 | 描述 | 过程 |
---|---|---|
1 -显示地面真相数据 |
导出的ground truth对象包含五个对象和三个定义的数据。 |
输入 >> gTruth gTruth = groundTruth with properties: DataSource: [1×1 groundTruthDataSource] LabelDefinitions: [3×5 table] LabelData: [1×3 table] |
2 -获取多边形数据 |
的LabelData属性按标签名称对数据进行分组。的 |
类型 > > gTruth。LabelDataans = 1×3 table Sailboat Tanker Airplane __________ __________ __________ {3×1 cell} {1×1 cell} {1×1 cell} |
3 -叠加地面真相多边形数据 |
帆船和油轮重叠了。这个信息(像素的相对顺序)在这种格式中会丢失。 使用 |
使用 >> out = gatherLabelData(gTruth,[LabelType . polygon],'GroupLabelData','LabelType') out = 1×1 cell array {1×1 table} 显示表的内容。 > >{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 ={'飞机','帆船','加油机'};classIds = 1:numel(classNames);labelIDMap = containers.Map(classNames,classIds); |
提取多边形 |
从输出结构中提取多边形坐标和多边形标签。 |
polyons = out{1}.PolygonData{1}(:,1);polygonLabels = out{1}.PolygonData{1}(:,2); |
3 -将多边形压平,形成语义分割图 |
将标签名称转换为id。 将多边形坐标转换为语义分割映射。 |
polygonLabelIDs = cellfun(@(x)labelIDMap(x) polygonLabels);imageSize = [645 916];% size(boats_im) outputIm = poly2label(polygonLabelIDs,imageSize); |
一步 | 描述 | 过程 |
---|---|---|
为实例分段预分配一个掩码堆栈 |
预分配遮罩堆栈,其高度和宽度等于图像尺寸,通道深度与多边形的数量相同。 |
polyons = out{1}.PolygonData{1}(:,1);numPolygons = size(polygons,1);imageSize = [645 916];% size(boats_im) maskStack = false([imageSize(1:2) numPolygons]); |
将多边形转换为实例掩码 |
将每个多边形转换为单独的蒙版,并将其插入到蒙版堆栈中。 |
for i = 1:numPolygons maskStack(:,:,i) = poly2mask(polygons{i}(:,1),…多边形{我}(:,2),图象尺寸(1)图象尺寸(2));结束 |
groundTruth
|groundTruthMultisignal
(自动驾驶工具箱)