开始使用图像标签器
的图片标志应用程序提供了一个简单的方法来交互创建各种形状标记为感兴趣的区域(ROI)标签。您可以在图像或图像序列中创建矩形、折线、像素和多边形ROI标签和场景标签。
您可以使用标记数据来验证或训练算法,如图像分类器、对象检测器以及语义和实例分割网络。在选择标签绘图工具来创建ROI标签时,请考虑您的应用程序。有关如何为应用程序选择正确的标签类型和绘图工具的详细信息,请参见ROI标签、子标签和属性.
ROI和场景标签定义
一个ROI标签对应于感兴趣的矩形、折线、像素或多边形区域。这些标签包含两个组件:标签名称(如“cars”)和您创建的区域。
一个现场标签描述场景的性质,如“晴天”。您可以将此标签与框架关联。
加载图片
若要开始新的项目或打开现有项目,请选择开放项目.您可以加载未标记或部分标记的图像,或加载准备检查的图像。
需要标记的图像可以存储在数据存储或文件夹中。图像必须可读imread
.以前的标记会话可以从已保存的项目中加载。
以编程方式加载数据
下面的代码以编程方式从数据存储中加载书籍封面的图像:
从图像文件夹创建一个数据存储:
imageFolder = fullfile(toolboxdir("vision"),"visiondata","bookcovers") imds = imageDatastore(imageFolder)
加载数据存储:
imageLabeler (imd)
以编程方式加载一个图像文件夹:
imageFolder = fullfile(toolboxdir("vision"),"visiondata","bookcovers")
直接从应用程序加载数据
在本例中,您从应用程序交互式地加载图像。要开始,请从应用程序选项卡,在图像处理与计算机视觉“,.点击进口从工作空间中的文件或数据存储中加载图像。
若要加载本示例中使用的图像,请单击进口然后选择从文件.选择boats.png
图片:
matlab工具箱/视觉/ visiondata / boats.png
图像标签应用程序的布局
这些是图片标志应用:
第一个图像显示在画布上,所有加载的图像显示在图片浏览器在应用程序的底部。
的视觉的总结浏览器显示项目中图像的ROI分布和场景标签。
该应用程序有两个选项卡,控制工具栏上可用的选项集。的图片标志选项卡默认显示,提供文件管理、标签定义选项、自动标签选项、监控、查看快捷方式和教程的按钮出口按钮。的可视化这些选项可以通过修改应用程序布局,控制如何显示ROI标签(例如,悬停,始终显示,或从不显示),如何显示ROI,按颜色(同一标签的所有ROI显示在相同的颜色)或按实例(ROI标签的每个实例显示在不同的颜色),以及标签不透明度的变化来更容易地使用标签。
的ROI标签窗格显示用于项目的ROI标签定义。
的现场标签窗格显示要用于项目的场景标签定义。
的查看标签、子标签和属性窗格显示标记的roi和场景的详细信息。
创建标签定义
定义你要画的标签。在本例中,直接在应用程序中定义标签。要从MATLAB定义标签®命令行,使用labelDefinitionCreator
.所有标签名称必须为一个单词。
创建ROI标签
一个ROI标签是一个标签,对应于图像中的感兴趣区域(ROI)。您可以定义这些ROI标签类型。
矩形
-在图像中的物体(如车辆、船只、建筑物)周围绘制二维矩形包围框标签。点
-画一个点来识别一个物体。预计长方体
-在图像中的物体周围绘制3d包围框标签。行
—绘制线性roi以标记线路,例如车道边界。多边形
-在物体周围绘制多边形标签。您可以标记同一个类的不同实例。有关绘制多边形ROI标签(例如和语义分割网络)的更多信息,请参见使用多边形标记对象像素标签
-绘制像素标记各种类别,如道路或天空,用于语义分割。有关像素标记的详细信息,请参见标记像素进行语义分割.
有关这些ROI标签定义的详细信息,请参见ROI标签、子标签和属性.
在本例中,您定义了船
组用于标记船只类型,然后创建矩形
投资回报率标签帆船
和一个油轮
.若要控制贴标时显示ROI标签名称,请选择在徘徊,总是,或从来没有从显示ROI标签下拉菜单。
点击标签在标签定义部分的工具条。
创建一个
矩形
标签类型命名帆船
.可选地,通过单击预览颜色更改标签颜色。
从
集团
下拉菜单,选择新组…
给这个组命名船
点击好吧.
的船组名出现在ROI标签带有标签的窗格帆船创建。通过左键单击并向上或向下拖动标签,可以将列表中的标签移动到列表中的不同位置或组。
添加第二种类型的船标签,点击标签然后
矩形
.命名标签油轮.点击好吧.选择帆船子标签,然后使用鼠标在帆船周围绘制矩形roi。选择油轮子标签绘制油船周围的ROI。单击远离ROI的图像以取消选择。所选roi显示为黄色轮廓。
创建Sublabels
一个sublabel是一种对应于父ROI标签的ROI标签类型。类中定义的特定标签,每个子标签必须属于或为其子标签ROI标签窗格。例如,在海洋场景中,帆船标签可能有帆的子标签。有关子标签的详细信息,请参见ROI标签、子标签和属性.
为帆定义子标签。
在ROI标签窗格的左侧,单击帆船标签。
点击Sublabel在标签定义部分的工具条。
选择
矩形
并命名子标签帆
.可选地,选择一种颜色(默认情况下,子标签的颜色与其父标签相同),并编写描述。点击好吧.的帆子标签出现在ROI标签窗格。子标签嵌套在所选ROI标签下,帆船.
您可以在一个标签下添加多个子标签。您还可以拖放子标签以在列表中重新排列它们,您可以单击任何标签,然后单击编辑额外的编辑。
在ROI标签窗格中,选择帆sublabel。
在图像帧中,选择帆船标签。选中后标签变为黄色。您必须选择帆船标签(父ROI),然后才能为它绘制子标签。
画一个帆每个帆的子标签。
子标签不能有自己的子标签,并且只能与矩形或折线ROI标签一起使用。注意标签、子标签和属性窗格为创建的标签提供计数和堆叠顺序。
显示或隐藏标签和子标签
属性可以显示或隐藏已标记图像中的标签或子标签图标。ROI标签窗格。的仅在定义标签或子标签后显示。默认情况下,应用程序显示所有标签和子标签。
要隐藏标签或子标签,单击图标放在标签或子标签名称旁边。应用程序隐藏相应的标签或子标签,并显示图标。
创建ROI属性
一个ROI属性指定关于ROI标签或子标签的附加信息。例如,在驾驶场景中,属性可能包括车辆的类型或颜色。在海洋场景中,属性可能包括帆船的类型或帆的数量。您可以定义这些类型的ROI属性。
数值
—指定数值标量属性,例如有标签的车辆上的门数或帆船上的帆数。字符串
—指定一个字符串标量属性,例如车辆或船只的颜色。逻辑
-指定一个逻辑上的true或false属性,例如一辆车是否在运动,或者一艘船是否在让路。列表
-指定预定义字符串的下拉列表属性,例如车辆或船只的制造商或型号。
有关这些属性类型的详细信息,请参见ROI标签、子标签和属性.
为标签添加属性。
在ROI标签窗格的左侧,选择帆船标签,然后点击属性在标签定义部分的工具条。选择列表从选项中。
在属性名称框,输入
sailboatType
.在列表项节中,输入三种不同类型的帆船,在新行中输入每一种;
单体船
,双体船
,多体船
.您可以选择为属性提供描述,然后单击好吧.悬停在任何标签或子标签ROI上以查看其名称。
您还可以向子标签添加属性。例如,在本例中,可以为帆子标签用来标明它是前帆还是主帆。或者,在这一步中,添加一个逻辑属性来指示帆是否升起。
在ROI标签窗格的左侧,选择帆sublabel,点击属性,然后按逻辑.
在属性名称框,输入
sailRaised
.离开默认值设置为空
,可选填写描述,单击好吧.在场景中选择一个帆,选中后,ROI显示为黄色。选择属性
sailRaised
以及适当的逻辑。
若要删除某个属性,右键单击ROI标签或子标签,选择要删除的属性。删除属性将从以前创建的所有ROI标签注释中删除属性信息。
创建场景标签
一个现场标签定义场景的附加信息。使用场景标签来描述条件,如照明、天气或事件,如车道变化或航行点。
创建一个场景标签:
选择标签然后场景从场景标签定义部分位于下拉列表的底部。
输入一个名为
白天
.创建名为TimeOfDay
.在同一个组中创建另一个场景标签
夜间
.要将场景标记为白天时间,请单击
白天
场景标签,然后单击应用于图像.出现一个用于场景标签的复选标记。
标签的图片
您可以手动标记图像、使用合适的内置自动化算法、创建新算法或导入算法。
手动标记Ground Truth
ROI和Scene标签是为整个会话和会话中的所有图像定义的。除非使用自动化算法,否则必须标记所有相关图像。
使用自动化算法标记Ground Truth
为了加快标记过程,您可以使用自动化算法来标记图像的其余部分。从应用程序工具条中选择这些类型的自动化算法之一自动贴标>选择算法部分。
自定义自动化功能-定义自定义算法。
使用内置的自动化算法之一-选择一个合适的算法。按照右边窗格中出现的步骤操作。
添加整幅图像算法—您可以自行创建或导入自动化算法。有关这两个选项的详细信息,请参见创建自动化算法.
添加阻塞图像算法—您可以自行创建或导入镜像阻塞自动化算法。有关这两个选项的详细信息,请参见在图像标签器中标记大图像.
在使用自动化算法之后,您可以用子标签和属性信息手动标记剩余的帧。
若要进一步评估标签,您可以查看标签图像的可视化摘要。的视觉的总结信息显示在应用程序的图像窗格下方。使用这个摘要来比较帧,标签的频率和场景条件。详情请参见查看ROI和场景标签摘要.此摘要不显示子标签或属性。
导出标记图像
您可以将标记的基本真理导出到mat文件或MATLAB工作区中的变量。在这两种情况下,标记的基本真理被存储为groundTruth
对象。
您可以使用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文件。详情请参见共享和存储标记地面真相数据.
另请参阅
应用程序
对象
groundTruth
|imageDatastore
|groundTruthDataSource
|labelDefinitionCreator
|vision.labeler.AutomationAlgorithm