开始使用图像标签器

图片标志app提供了一种简单的方法来标记感兴趣的矩形区域(ROI)标签、折线ROI标签、像素ROI标签以及视频或图像序列中的场景标签。这个例子让你开始使用这个应用程序,告诉你如何:

  • 从图像集合中手动标记图像帧。

  • 使用自动算法自动标记图像帧。

  • 导出标记的地面真实数据。

ROI和场景标签定义

  • 一个ROI标签对应于感兴趣的矩形、折线或像素区域。这些标签包含两个组件:标签名称(如“cars”)和创建的区域。

  • 一个现场标签描述一个场景的性质,如“晴天”。You can associate this label with a frame.

无标号数据加载

打开应用程序并加载一组图像。您可以从文件夹或以前的标签会话加载存储在数据存储中的图像。图像必须是可读的imread

imageFolder = fullfile(toolboxdir('vision'),'visiondata','stopSignImages') imds = imageDatastore(imageFolder) imageLabeler(imds)
imageFolder = fullfile(toolboxdir('vision'),'visiondata','stopSignImages') imageLabeler(imageFolder)

或者,从。打开应用程序应用程序选项卡,在图像处理和计算机视觉。然后,从负载菜单中,加载图像数据源。

创建标签定义

定义您打算绘制的标签。在本例中,您直接在应用程序中定义标签。从MATLAB中定义标签®命令行,而是使用labelDefinitionCreator

创建ROI标签

一个ROI标签是一个对应感兴趣区域(ROI)的标签。您可以定义这些类型的ROI标签。

ROI标签 描述 例如:驾驶场景
矩形 在对象周围绘制矩形ROI标签(包围框)。

车辆、行人、路标

画线性ROI标签表示直线。要绘制折线ROI,请使用两个或多个点。

车道边界,护栏,路边石

像素标签 为像素分配标签进行语义分割。您可以使用多边形、画笔或洪水填充手动标记像素。有关像素标记的更多信息,请参见标签像素的语义分割

车辆、路面、树木、路面

在本例中,定义了a车辆分组对车辆类型进行标识,然后创建一个矩形a的ROI标签和一个卡车。可选地,您可以使用显示ROI标签要选择的下拉菜单在徘徊,总是,或从来没有控制在贴标过程中ROI标签名称的显示方式。默认情况下,当您将鼠标悬停在ROI上时,名称将出现。

  1. ROI标签左边的窗格,单击标签

  2. 创建一个矩形标签命名

  3. 可选地,通过单击预览颜色来更改标签颜色。

  4. 集团下拉菜单,选择新组并命名组车辆

  5. 点击好吧

    车辆组名出现在ROI标签有标签的窗格创建。可以通过左键单击并向上或向下拖动标签,将列表中的标签移动到列表中的不同位置或组。

  6. 添加第二个标签。点击标签。名字的标签卡车确保车辆小组被选中。点击好吧

  7. 用鼠标画一个矩形ROIs在两辆车周围。

创建Sublabels

一个sublabel是对应于父ROI标签的ROI标签的一种类型。类中定义的特定标签的子标记ROI标签窗格。例如,在驾驶场景中,车辆标签可能包含用于前灯、车牌或车轮的子标签。

为前灯定义一个子标签。

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

  2. 点击Sublabel

  3. 创建一个矩形sublabel命名头灯也可以写一个描述。点击好吧

    头灯子标签出现在ROI标签窗格。子标签嵌套在选定的ROI标签下,,其颜色与其父标签相同。

    您可以在一个标签下添加多个子标签。您还可以拖放子标签,以便在列表中重新排序。右键单击任何标签以进行其他编辑。

  4. ROI标签窗格中,选择头灯sublabel。

  5. 在图像框中,选择标签。标签被选中时变为黄色。您必须选择标签(父投资回报率)之前,你可以添加一个子项给它。

    头灯每辆车的子标签。

  6. 重复前面的步骤来标记另一辆车的前灯。要更精确地绘制标签,请使用位于标签窗口右上角的平移和缩放选项。

子标签只能与矩形或折线ROI标签一起使用,不能有自己的子标签。有关使用子菜单的更多细节,请参见使用子标签和属性来标记地面真实数据

创建属性

一个属性提供ROI标签或子标签的进一步分类。属性指定可绘制标签的附加信息。例如,在驾驶场景中,属性可能包括车辆的类型或颜色。

您可以定义这些类型的属性。

属性类型 样本属性定义 样本的默认值

数值

字符串

逻辑

列表

为车辆类型添加属性。

  1. ROI标签在左侧的窗格中,选择标签,然后单击属性

  2. 属性名称框,输入carType。将属性类型设置为列表

  3. 列表项节,类型不同类型的车,如轿车,掀背车,马车每个人都有自己的路线。可选地为属性提供一个描述,然后单击好吧

  4. 在视频的第一帧,选择aROI标签。在属性和Sublabels窗格中,选择适当的carType该车辆的属性值。

  5. 重复前面的步骤来分配acarType属于另一辆车。

您还可以向子菜单添加属性。属性添加一个属性头灯分标签,告诉是否大灯是亮的。

  1. ROI标签在左侧的窗格中,选择头灯sublabel并单击属性

  2. 属性名称框,输入。将属性类型设置为逻辑。离开默认值设置为,可选地编写一个描述,然后单击好吧

  3. 在视频帧中选择一个大灯。设置合适的属性值,或将属性值设置为

  4. 重复前面的步骤来设置属性设置为其他前灯。

要删除一个属性,右键单击一个ROI标签或子标签,然后选择要删除的属性。删除属性将从以前创建的所有ROI标签注释中删除属性信息。

创建场景标签

一个现场标签定义整个场景的附加信息。使用场景标签来描述条件,比如灯光和天气,或者事件,比如车道改变。

创建一个场景标签在视频中使用。

  1. 选择现场标签在左边。

  2. 单击定义新的场景标签按钮,并创建一个名为的场景标签阳光明媚的。确保集团被设置为没有一个。点击好吧

    现场标签窗格显示场景标签定义。

  3. 您可以仅将标签应用于当前帧或帧间隔。与阳光明媚的场景标签定义仍然选中现场标签窗格中,选择时间间隔

  4. 单击添加标签。的复选标记出现阳光明媚的场景标签,表示该标签现在适用于时间间隔内的所有帧。

  5. 要编辑或删除场景标签,右键单击标签并选择其中之一编辑标签删除标签

标签地面实况

到目前为止,你在视频中只标记了一帧。要标记其余的帧,请选择以下选项之一。

手工标记地面真相

当您单击右箭头键前进到下一帧时,上一帧的ROI标签将无法继续。只有阳光明媚的场景标签适用于每一帧,因为这个标签适用于整个时间间隔。

逐帧前进,手动绘制标签和子标签。还要更新这些roi的属性信息。

使用自动算法标记地面真相

为了加快标记过程,您可以在应用程序中使用自动化算法。您可以定义自己的自动化算法,参见创建自动标记算法颞自动化算法,或者使用内置的自动化算法。在本例中,您使用内置的点跟踪算法来标记地面真相。

在本例中,您将仅对ROI标签。内置的自动化算法不支持子标记和属性自动化。万博1manbetx

  1. 选择要自动化的标签。在视频的第一帧,按下Ctrl然后单击以选择这两个标签注释。标签用黄色突出显示。

  2. 从app工具栏中选择选择算法>点跟踪器。该算法使用kanadi - lucas - tomasi (KLT)算法在短时间间隔内跟踪一个或多个矩形roi。

  3. (可选)配置自动化设置。例如,确保导入选定的roi是这样选择的您选择的标签将被导入到自动化会话中。

  4. 点击自动化打开一个自动化会话。算法说明显示在右侧窗格中,所选的标签可用于自动化。

  5. 点击运行在间隔内跟踪所选roi。

  6. 检查运行算法的结果。

    随后进入现场的车辆没有标识。未标记的车辆没有初始ROI标签,因此算法没有跟踪它们。点击撤销运行。使用滑块找到每辆车第一次出现的帧。画车辆ROIs在每辆车周围,然后点击运行一次。

  7. 通过一帧一帧的推进和手动移动、调整大小、删除或添加roi来改进自动化算法的结果。

    当您对算法结果满意时,单击接受。或者,要放弃在会话期间生成的标签,而手动创建标签,请单击取消。的取消按钮只取消算法会话,而不取消应用程序会话。

现在,您可以选择使用子blabel和属性信息手动标记其余的帧。

要进一步评估您的标签,您可以查看已标记的ground truth的可视摘要。从app工具栏中选择视图标签的总结。使用这个摘要来比较帧、标签的频率和场景条件。有关更多细节,请参见查看地面真相标签摘要。此摘要不支持子菜单或属性。万博1manbetx

导出标记的地面真相

您可以将标记的ground truth导出到一个mat文件或MATLAB工作空间中的一个变量。在这两种情况下,标记的ground truth都存储为agroundTruth对象。您可以使用这个对象来训练一个基于深度学习的计算机视觉算法。有关更多细节,请参见用于目标检测和语义分割的训练数据

请注意

如果您导出像素数据,像素标签数据和地面真实数据将保存在不同的文件中,但在同一个文件夹中。有关使用导出的像素标签时的注意事项,请参阅如何标签应用商店出口像素标签

在本例中,您将标记的ground truth导出到MATLAB工作区。从app工具栏中选择出口标签>到工作空间。导出的MATLAB变量为gTruth

显示导出的属性groundTruth对象。导出对象中的信息可能与这里显示的信息不同。

gTruth
gTruth = groundTruth with properties: DataSource:[1×1 groundTruthDataSource]标签定义:[2x6表]标签数据:[531×3时间表]

数据源

数据源是一个groundTruthDataSource对象,其中包含到图像或视频的路径和时间戳。显示此对象的属性。

gTruth.DataSource
说明:ans = groundTruthDataSource for a video file with properties Source:…matlab\toolbox\vision\visiondata\visiontraffic。avi时间戳:[531×1时长]

标签定义

LabelDefinitions是包含有关标签定义的信息的表。此表不包含有关在视频帧上绘制的标签的信息。要将标签定义保存在它们自己的mat文件中,从app工具栏中选择保存>标签定义。然后您可以通过选择将这些标签定义导入到另一个应用程序会话中导入文件

显示标签定义表。每行包含关于ROI标签定义或场景标签定义的信息。如果导出像素标签数据,则LabelDefinitions表中还包括PixelLabelID列,其中包含每个像素标签定义的ID号。

gTruth.LabelDefinitions
ans = 3×6表名称类型LabelColor组描述层次结构替其___________ _______{‘汽车’}矩形{1×3双}{‘汽车’}{0×0字符}{1×1 struct}{“卡车”}矩形{1×3双}{‘汽车’}{0×0字符}{0×0双}{‘阳光’}场景{1×3双}{‘天气’}{0×0字符}{0×0双}

LabelDefinitions,层次结构列存储关于父ROI标签的子标签和属性定义的信息。

属性的子标记和属性信息标签。

gTruth.LabelDefinitions.Hierarchy {1}
ans = struct with fields: numDoors:[1×1 struct] color:[1×1 struct] inMotion:[1×1 struct] carType:[1×1 struct] headlight:[1×1 struct] Type:[1×1 struct] Type: "矩形描述:"

显示有关头灯sublabel。

gTruth.LabelDefinitions.Hierarchy {1} .headlight
描述:" Color: [0.5862 0.8276 0.3103] isOn:[1×1 struct]

显示有关carType属性。

gTruth.LabelDefinitions.Hierarchy {1} .carType
结构与字段:ListItems:{3×1 cell}

保存应用程序会话

从app工具栏中选择保存保存app会话的一个mat文件。保存的会话包括数据源、标签定义和标签ground truth。它还包括您的会话首选项,如应用程序的布局。要更改布局选项,请选择布局

当您选择时,应用程序会话的mat文件与导出的ground truth mat文件是分开的出口>从文件。要共享标记的地面真值数据,作为最佳实践,共享包含地面真值的mat文件groundTruth对象,而不是应用程序会话mat文件。有关更多细节,请参见共享和存储标记的地面真实数据

另请参阅

应用程序

对象

相关的话题