主要内容

开始使用图像标签器

图片标志应用程序提供了一个简单的方法来交互创建各种形状标记为感兴趣的区域(ROI)标签。您可以在图像或图像序列中创建矩形、折线、像素和多边形ROI标签和场景标签。

您可以使用标记数据来验证或训练算法,如图像分类器、对象检测器以及语义和实例分割网络。在选择标签绘图工具来创建ROI标签时,请考虑您的应用程序。有关如何为应用程序选择正确的标签类型和绘图工具的详细信息,请参见ROI标签、子标签和属性

这个例子让你开始使用应用程序,向你展示如何:

  • 加载未标记的数据

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

  • 自动标签跨图像帧使用自动化算法。

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

ROI和场景标签定义

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

  • 一个现场标签描述场景的性质,如“晴天”。您可以将此标签与框架关联。

加载未标记的数据

您可以从一个文件夹加载存储在数据存储中的图像,或者加载以前的标签程序会话。图像必须可读imread

以编程方式加载数据

以编程方式从数据存储加载图像:

  1. 从图像文件夹创建一个数据存储:

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

  2. 加载数据存储:

    imageLabeler (imd)

以编程方式加载一个图像文件夹:

imageFolder = fullfile(toolboxdir('vision'),'visiondata','bookcovers')

直接从应用程序加载数据

在本例中,您从应用程序交互式地启动和加载图像应用程序选项卡,在图像处理与计算机视觉“,.点击进口加载图像或单击公开会议打开已保存的会话。

若要加载本示例中使用的图像,请单击进口然后选择从文件.选择boats.png图片:

matlab工具箱/视觉/ visiondata / boats.png

创建标签定义

定义你要画的标签。在本例中,直接在应用程序中定义标签。要从MATLAB定义标签®命令行,使用labelDefinitionCreator

创建ROI标签

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

  • 矩形-在图像中的物体(如车辆、船只、建筑物)周围绘制二维矩形包围框标签。

  • 预计长方体-在图像中的物体(如车辆、船只、建筑物)周围绘制3d包围框标签。

  • —绘制线性roi以标记线路,例如车道边界。

  • 像素标签-绘制像素标记各种类别,如道路或天空,用于语义分割。有关像素标记的详细信息,请参见标记像素进行语义分割

  • 多边形-在物体周围绘制多边形标签。您可以标记同一个类的不同实例。有关绘制多边形ROI标签(例如和语义分割网络)的更多信息,请参见使用多边形标记对象

有关这些ROI标签定义的详细信息,请参见ROI标签、子标签和属性

在本例中,您定义了组用于标记船只类型,然后创建矩形投资回报率标签帆船和一个油轮.若要控制贴标时显示ROI标签名称,请选择在徘徊总是,或从来没有显示ROI标签下拉菜单。

  1. ROI标签窗格中,单击标签

  2. 创建一个矩形标签类型命名帆船

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

  4. 集团下拉菜单,选择新组…给这个组命名

  5. 点击好吧

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

  6. 添加第二种类型的标签,选择组,然后按标签.命名标签油轮.点击好吧

  7. 选择帆船子标签,然后用鼠标在帆船周围画一个矩形ROI。选择油轮子标签绘制油船周围的ROI。

    前景是帆船,背景是油轮

创建Sublabels

一个sublabel是一种对应于父ROI标签的ROI标签类型。类中定义的特定标签,每个子标签必须属于或为其子标签ROI标签窗格。例如,在海洋场景中,帆船标签可能有帆的子标签。有关子标签的详细信息,请参见ROI标签、子标签和属性

为帆定义子标签。

  1. ROI标签窗格的左侧,单击帆船标签。

  2. 点击Sublabel

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

    子标签出现在ROI标签窗格。子标签嵌套在所选ROI标签下,帆船,默认情况下与父标签的颜色相同。

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

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

  5. 在图像帧中,选择帆船标签。选中后标签变为黄色。您必须选择帆船标签(父ROI),然后才能为它绘制子标签。

    每个帆的子标签。

    画sublabel

子标签不能有自己的子标签,并且只能与矩形或折线ROI标签一起使用。

显示或隐藏标签和子标签

属性可以显示或隐藏已标记图像中的标签或子标签眼睛图标图标。ROI标签窗格。的眼睛图标仅在定义标签或子标签后显示。默认情况下,应用程序显示所有标签和子标签。

要隐藏标签或子标签,单击眼睛图标图标放在标签或子标签名称旁边。应用程序隐藏相应的标签或子标签,并显示隐藏图标图标。

显示或隐藏选项仅适用于矩形多边形,预计长方体ROI标签。

显示标签

隐藏的标签

创建ROI属性

一个ROI属性指定关于ROI标签或子标签的附加信息。例如,在驾驶场景中,属性可能包括车辆的类型或颜色。在海洋场景中,属性可能包括帆船的类型或帆的数量。您可以定义这些类型的ROI属性。

  • 数值—指定数值标量属性,例如有标签的车辆上的门数或帆船上的帆数。

  • 字符串—指定一个字符串标量属性,例如车辆或船只的颜色。

  • 逻辑-指定一个逻辑上的true或false属性,例如一辆车是否在运动,或者一艘船是否在让路。

  • 列表-指定预定义字符串的下拉列表属性,例如车辆或船只的制造商或型号。

有关这些属性类型的详细信息,请参见ROI标签、子标签和属性

为标签添加属性。

  1. ROI标签窗格的左侧,选择帆船标记并单击属性

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

  3. 列表项节,类型不同的帆船,如单体船双体船,多体船,每个都在自己的线上。可以选择为属性提供描述,然后单击好吧.您可以将出现在属性字段旁边的信息图标悬停,以显示添加的描述。

  4. 选择一个帆船ROI标签。在属性和子标签窗格中,选择适当的sailboatType该车辆的属性值。

您还可以向子标签添加属性。属性的属性子标签用来标明它是前帆还是主帆。

  1. ROI标签窗格的左侧,选择子标签和单击属性

  2. 属性名称框,输入sailRaised.将属性类型设置为逻辑.离开默认值设置为,可选填写描述,单击好吧

  3. 在场景中选择一个帆。在右边窗格中,设置适当的属性值,或将属性值设置为

    “Attributes and subblabels”窗格显示选择了“True”的sailRaised属性

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

创建场景标签

一个现场标签定义整个场景的附加信息。使用场景标签来描述条件,如照明和天气,或事件,如车道变化或航行点。

创建应用于图像的场景标签。

  1. 在应用程序的左窗格中,选择现场标签旁边是ROI标签选项卡。

  2. 点击定义新的场景标签,而在标签名称框中,输入一个名为白天

  3. 将标签定义的颜色更改为浅蓝色,以反映场景标签的性质。下颜色参数时,单击颜色预览并选择标准浅蓝色。然后,单击好吧关闭颜色选择窗口。

  4. 离开集团参数设置为的默认值没有一个并点击好吧.的现场标签窗格显示场景标签定义。

  5. 点击应用于图像申请白天标签到场景。场景标签会出现一个选中标记。

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

标记基本事实

您可以手动标记图像、使用合适的内置自动化算法、创建新算法或导入算法。

手动标记Ground Truth

ROI和Scene标签是为整个会话和所有图像定义的,但是必须为每个图像绘制标签和子标签,并更新属性信息。

使用自动化算法标记Ground Truth

为了加快标记过程,您可以使用自动化算法来标记图像的其余部分。从应用程序工具条中选择这些类型的自动化算法之一自动贴标>选择算法部分。

  • 内置自动化算法-选择合适的算法。按照右边窗格中出现的步骤操作。

  • 添加算法-创建一个自动化。有关如何定义自己的automatino算法的详细信息,请参见创建自动标记算法

  • 进口算法—导入自定义自动化算法。导入自动化算法的详细信息,请参见创建自动标记算法

在使用自动化算法之后,您可以用子标签和属性信息手动标记剩余的帧。

为了进一步评估标签,您可以查看标记的基本事实的可视化摘要。从应用程序工具条中选择视图标签摘要.使用这个摘要来比较帧、标签频率和场景条件。详情请参见Ground Truth标签的查看摘要.此摘要不显示子标签或属性。

出口标签的事实

您可以将标记的基本真理导出到mat文件或MATLAB工作区中的变量。在这两种情况下,标记的基本真理被存储为groundTruth对象。您可以使用该对象来训练基于深度学习的计算机视觉算法。详情请参见目标检测和语义分割的训练数据

请注意

如果导出像素数据,像素标签数据和地面真相数据保存在单独的文件中,但在同一个文件夹中。有关使用导出像素标签时的注意事项,请参见标签应用程序如何存储导出像素标签

在本例中,将标记的ground truth导出到MATLAB工作区。从应用程序工具条中选择出口标签>到工作空间.导出的MATLAB变量为gTruth

显示导出文件的属性groundTruth对象。导出对象中的信息可能与此处显示的信息不同。

gTruth
gTruth = groundTruth with properties: DataSource: [1×1 groundTruthDataSource] LabelDefinitions: [2x6 table] LabelData: [531×3 schedule]

数据源

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

gTruth。数据源
来源:matlab\toolbox\vision\visiondata\visiontraffic。avi时间戳:[531×1 duration]

标签定义

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

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

gTruth。标签Definitions
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:矩形描述:"

显示有关头灯sublabel。

gTruth.LabelDefinitions.Hierarchy {1} .headlight
ans = struct with fields:类型:矩形描述:"颜色:[0.5862 0.8276 0.3103]isOn: [1×1 struct]

显示有关carType属性。

gTruth.LabelDefinitions.Hierarchy {1} .carType
ans = struct with fields: ListItems: {3×1 cell}说明:"

保存应用会话

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

在会话期间的任何时间,您都可以进行选择新会话开始一个新的会话。您可以选择保存当前会话或取消会话。

应用程序会话MAT-file与您选择时导出的ground truth MAT-file是分开的出口>从文件.为共享已标记的地面真相数据,作为最佳实践,请共享包含groundTruth对象,而不是应用程序会话mat文件。详情请参见共享和存储标记地面真相数据

另请参阅

应用程序

对象

相关的话题