的图片标志应用程序提供了一种简单的方法来标记视频或图像序列中的矩形兴趣区域(ROI)标签(ROI)标签,折线ROI标签,像素ROI标签和场景标签。此示例通过向您展示如何:
手动标记图像集合中的图像帧。
使用自动化算法自动跨图像帧标记。
导出标记的地面真理数据。
ROI和场景标签定义
一个ROI标签对应于感兴趣的矩形、多段线或像素区域。这些标签包含两个组件:标签名称(如“汽车”)和您创建的区域。
一个场景标签描述场景的性质,例如“sunny”。您可以将此标签与帧关联。
打开应用程序并加载一组图像。您可以从文件夹中加载存储在数据存储中的图像,或加载以前的贴标程序会话。图像必须可读伊姆雷德
.
imageFolder=fullfile(toolboxdir('vision')、'visiondata'、'stopSignImages')imds=imageDatastore(imageFolder)imageLabeler(imds)
imageFolder=fullfile(toolboxdir('vision')、'visiondata'、'stopSignImages')图像标签机(imageFolder)
或者,从中打开应用程序应用程序选项卡,在图像处理与计算机视觉.然后,来自负载菜单,加载图像数据源。
定义要绘制的标签。在这个例子中,你直接在应用程序中定义标签®命令行代替,使用labelDefinitionCreator
.
一个ROI标签是对应于感兴趣区域(ROI)的标签。您可以定义这些类型的ROI标签。
ROI标签 | 描述 | 示例:驾驶场景 |
---|---|---|
长方形 |
在对象周围绘制矩形ROI标签(边界框)。 | 车辆、行人、路标 |
投影长方体 |
绘制立方体ROI标签(三维包围盒)。 |
|
行 |
画线性ROI标签来表示直线。要绘制折线ROI,请使用两个或多个点。 | 车道边界,护栏,路缘 |
像素标签 |
为像素指定标签以进行语义分割。可以使用多边形、笔刷或整体填充手动标记像素。有关像素标签的详细信息,请参见标记像素用于语义分割. | 车辆、路面、树木、路面 |
在这个例子中,您定义了a车辆
用于标记类型的车辆,然后创建一个长方形
ROI标签车
和卡车
.也可以使用显示ROI标签下拉菜单选择在徘徊,总是或从未控制在标记期间ROI标签名称的显示方式。默认情况下,当您将鼠标悬停在ROI上时,名称将显示。
在ROI标签在左侧的窗格中,单击标签.
创建一个长方形
标签命名车
.
(可选)通过单击预览颜色来更改标签颜色。
从团体
下拉菜单,选择新组
命名这个组车辆
点击好啊.
的车辆组名出现在ROI标签带有标签的窗格车创建。您可以通过左键单击或向下或向下拖动标签,将列表中的标签移动到列表中的其他位置或组。
添加第二个标签。单击标签.名字的标签卡车并确保车辆组被选中。单击好啊.
使用鼠标绘制矩形车两辆车周围的ROI。
一个sublabel是一种与父ROI标签对应的ROI标签。每个子宫标签必须属于或作为一个特定标签所定义的孩子ROI标签窗格。例如,在驾驶场景中,车辆标签可能具有前照灯、车牌或车轮的子标签。
定义前照灯的子标签。
在ROI标签在左侧的窗格中,单击车标签。
点击Sublabel.
创建一个长方形
子标签命名头灯
并且可选地写下描述。点击好啊.
的头灯子标签出现在ROI标签窗格。子标签嵌套在选定的ROI标签下,车,并具有与其父标签相同的颜色。
您可以在标签下添加多个子标签。您还可以拖放Sublabels以在列表中重新排序。右键单击任何标签以获取其他编辑。
在ROI标签窗格中,选择头灯sublabel。
在图像框架中,选择车标签。选择后,标签将变为黄色。您必须选择车在您可以将sublabel添加到它之前,标签(父ROI)。
画头灯每辆车的子标签。
重复前面的步骤,标记另一辆车的前灯。要更精确地绘制标签,请使用位于标签窗口右上角的平移和缩放选项。
Sublabels只能与矩形或折线ROI标签一起使用,不能拥有自己的子标签。有关使用Sublabels的更多详细信息,请参阅使用sublabels和属性来标记地面真理数据.
一个属性提供对ROI标签或子标签的进一步分类。属性指定关于可绘制标签的附加信息。例如,在驾驶场景中,属性可能包括车辆的类型或颜色。
您可以定义这些类型的属性。
属性类型 | 示例属性定义 | 示例默认值 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
为车辆类型添加属性。
在ROI标签在左侧的窗格中,选择车标记并单击属性.
在属性名盒子,类型车辆类型
。将属性类型设置为列表
.
在清单项目节、型、车等不同类型轿车
,掀背车
,及马车
,每个都在自己的线上。可选地给出属性描述,然后单击好啊.
在视频的第一帧中,选择一个车ROI标签。在属性和子标签窗格中,选择相应的车辆类型该车辆的属性值。
重复前面的步骤分配车辆类型属于另一辆车。
您还可以向子标签添加属性。的属性头灯Sublabel,讲述了前灯是否打开。
在ROI标签在左侧的窗格中,选择头灯sublabel并点击属性.
在属性名盒子,类型关
。将属性类型设置为逻辑
.离开默认值设置为空的
,可选地编写描述,然后单击好啊.
在视频帧中选择一个前照灯。设置合适的关属性值,或将属性值设置为空的
.
重复上一步以设置关其他大灯的属性。
要删除属性,请右键单击ROI标签或子标签,然后选择要删除的属性。删除该属性将从以前创建的所有ROI标签批注中删除属性信息。
一个场景标签定义整个场景的附加信息。使用场景标签来描述条件,如照明和天气,或事件,如车道变化。
创建要在视频中使用的场景标签。
选择场景标签左侧选项卡。
点击定义新的场景标签按钮,并创建一个名为阳光明媚
.确保团体被设定为没有任何
.点击好啊.
的场景标签窗格显示场景标签定义。
您可以仅将标签应用于当前帧或帧间隔阳光明媚
场景标签定义仍然选中场景标签窗格中,选择时间间隔.
点击添加标签.将出现一个复选标记阳光明媚
场景标签,表示该标签现在适用于时间间隔内的所有帧。
要编辑或删除场景标签,请右键单击标签,然后选择编辑标签或删除标签.
到目前为止,您只标记了视频中的一帧。要标记其余帧,请选择以下选项之一。
单击向右箭头键进行前进到下一帧时,前一帧的ROI标签不会携带。只有阳光明媚场景标签适用于每个帧,因为此标签应用于整个时间间隔。
逐帧推进并手动绘制标签和子标签ROI。同时更新这些ROI的属性信息。
为了加快标签过程,你可以在应用程序中使用自动化算法。你可以定义自己的自动化算法,参见创建标签的自动化算法或使用内置自动化算法。在此示例中,您使用内置算法标记地面真实性。
在使用自动化算法之后,您可以用子标签和属性信息手动标记剩余的帧。
为了进一步评估您的标签,您可以查看已标记ground truth的可视化摘要。从应用程序工具条,选择视图标签的总结.使用此摘要来比较帧、标签频率和场景条件。有关详细信息,请参见查看地面真理标签摘要.此摘要不支持子标签或属性。万博1manbetx
您可以将标记的ground truth导出到mat文件或MATLAB工作区中的变量。在这两种情况下,被标记的ground truth被存储为地面
对象您可以使用此对象来训练基于深度学习的计算机视觉算法。有关详细信息,请参阅目标检测和语义分割的训练数据.
请注意
如果导出像素数据,则像素标签数据和地面真理数据将保存在单独的文件中,但在同一文件夹中。有关使用导出的像素标签时的考虑,请参阅标签应用商店如何导出像素标签.
在本例中,将已标记的ground truth导出到MATLAB工作区。从应用程序工具条,选择出口标签>到工作空间. 导出的MATLAB变量为GTRUTH.
.
显示导出对象的属性地面
对象。导出对象中的信息可能与此处显示的信息不同。
GTRUTH.
gtruth =带有属性的地面:DataSource:[1×1 TountTruthDataSource] LabEldefinitions:[2x6表] Labeldata:[531×3时间表]
数据来源
是A.地下adatasource.
对象,该对象包含图像或视频和时间戳的路径。显示这个对象的属性。
gtruth.datasource.
ans=具有以下属性的视频文件的groundTruthDataSource源:…matlab\toolbox\vision\visiondata\visiontraffic.avi时间戳:[531×1持续时间]
标签定义
是一个包含有关标签定义信息的表。此表不包含有关在视频帧上绘制的标签的信息。若要将标签定义保存在其自己的MAT文件中,请从app toolstrip中选择拯救>标签定义.然后,您可以通过选择将这些标签定义导入其他应用程序会话中导入文件.
显示标签定义表。每行包含有关ROI标签定义或场景标签定义的信息。如果导出像素标签数据,则标签定义
表格还包括PixelLabelID
包含每个像素标签定义的ID号的列。
gTruth.LabelDefinitions
ans = 3×6表名称类型LabelColor组说明层次结构______________________________________________________ 3 double} {'车辆'} {0×0 char} {1×1结构} {'卡车'}矩形{1×3双} {'车辆'} {0×0 char} {0×0 double} {'sunny'}场景{1×3 double} {'天气'} {0×0 char} {0×0双}
之内标签定义
,等级制度
列存储关于父ROI标签的子标签和属性定义的信息。
显示sublabel和属性信息车
标签。
gTruth.LabelDefinitions.Hierarchy {1}
ans=struct,带字段:numDoors:[1×1 struct]颜色:[1×1 struct]动态:[1×1 struct]carType:[1×1 struct]头灯:[1×1 struct]类型:矩形说明:“”
显示有关头灯
sublabel。
gTruth.LabelDefinitions.Hierarchy{1}
ans = struct with fields: Type: Rectangle Description: " Color: [0.5862 0.8276 0.3103] isOn: [1×1 struct]
显示有关车辆类型
属性。
gTruth.LabelDefinitions.Hierarchy {1} .carType
ans = struct with字段:listItems:{3×1 cell}描述:''
从应用程序工具条,选择拯救并保存应用程序会话的MAT文件。已保存的会话包括数据源,标签定义和标记的地面真相。它还包括您的会话偏好,例如应用程序的布局。要更改布局选项,请选择布局.
在会话期间的任何时候,您都可以选择新会议启动新会话。您可以选择保存当前会话或取消。
App会话Mat文件与您选择时导出的地面真实垫文件分开出口>从文件。若要共享带标签的地面实况数据,作为最佳做法,请共享包含以下内容的地面实况MAT文件:地面
对象,而不是应用会话的MAT-file。有关详细信息,请参见共享和存储标记的地面实况数据.