的贴标签机视频app提供了一种简单的方法来标记视频或图像序列中的矩形感兴趣区域(ROI)标签、折线感兴趣区域标签、像素感兴趣区域标签和场景标签。
您可以使用标记的数据来验证或训练算法,例如图像分类器,对象检测器和语义和实例分段网络。选择标签绘图工具创建ROI标签时,请考虑您的应用程序。有关如何为应用程序选择正确的标签类型和绘图工具的详细信息,请参阅ROI标签,子标签和属性.
这个例子告诉你如何开始使用应用程序:
手动标签图像帧从一个视频。
自动标签跨图像帧使用自动化算法。
导出标记的地面真理数据。
ROI和场景标签定义
一个ROI标签对应于矩形,折线,像素或多边形区域的目标。这些标签包含两个组件:标签名称,例如“汽车”和您创建的区域。
一个现场标签描述了一个场景的性质,例如“晴朗”。您可以将此标签与框架相关联。
按程序打开应用程序并加载视频。视频必须是可读的文件格式录像机
.
videoLabeler (“visiontraffic.avi”)
探索视频。点击播放按钮播放整个视频,或使用滑块在帧之间导航。
要加载具有相应时间戳的图像序列,请选择进口>图像序列.该应用程序支持支金宝app持的所有图像文件格式imread
.要阅读其他文件格式,可以创建一个imageDatastore
并使用ReadFcn
财产。
加载无法读取的自定义数据源录像机
或imread
,请参阅使用自定义图像源阅读器进行标记.
定义要绘制的标签。在这个例子中,你直接在应用程序中定义标签®命令行,使用LANENDEFINITIONCREATOR.
.
你可以对整个视频进行标记,也可以从视频的一部分开始。在本例中,您在加载的视频中标记了一个5秒的时间间隔。在视频下方的文本框中,以秒为单位输入时间:
在当前时间框,输入5
并按进入.
在开始时间框,输入5
滑块在时间间隔的开始处。
在结束时间框,输入10
.
可以选择,要调整时间间隔,单击并拖动红色间隔标志。
整个应用程序现在被设置为专注于这个特定的时间间隔。视频只在这个间隔内播放,标记和自动化算法只适用于这个间隔。您可以通过移动标志随时更改间隔。
若要扩展时间间隔以填充整个回放部分,请单击放大时间间隔.
一个ROI标签是对应于图像中感兴趣区域(ROI)的标签。您可以定义这些ROI标签类型。
长方形
-围绕图像中的物体,如车辆、船只、建筑,绘制2d矩形边框标签。
预计长方体
-在图像中绘制物体的三维包围框标签,如车辆,船只,建筑。
行
—绘制线性roi标记线,如车道边界。
像素标签
-绘制像素来标记不同的类,如道路或天空,用于语义分割。有关像素标记的更多信息,请参见标记像素用于语义分割.
多边形
-在物体周围绘制多边形标签。你可以给同一个类的不同实例标上标签。有关绘制多边形ROI标签和语义分割网络的更多信息,请参见使用多边形标记对象
有关这些ROI标签定义的更多详细信息,请参阅ROI标签,子标签和属性.
在这个例子中,您定义了a车辆
组用于标记车辆类型,然后创建长方形
ROI标签车
和一个卡车
.创建标签后,可以使用显示ROI标签下拉菜单选择在徘徊,总是,或从来没有控制在贴标签时ROI标签名称的显示方式。默认情况下,当您将鼠标悬停在ROI上时,名称将出现。
在ROI标签窗格在左侧,单击标签.
创建一个长方形
标签命名车
.
还可以通过单击预览颜色来更改标签颜色。
来自集团
下拉菜单,选择新组
命名这个组车辆
点击好吧.
的车辆组名出现在ROI标签带有标签的窗格车创建。通过左键单击和上下拖动标签,可以将列表中的标签移动到列表中的不同位置或组。
要添加第二个标签,请单击标签.名字的标签卡车并确保车辆组被选中。点击好吧.
使用鼠标绘制矩形车罗伊斯在两辆车里。
一个sublabel是一种与父ROI标签对应的ROI标签。每个子宫标签必须属于或作为一个特定标签所定义的孩子ROI标签窗格。例如,在驾驶场景中,车辆标签可能有车灯、牌照或车轮的子标签。有关子标签的详细信息,请参见ROI标签,子标签和属性.
为前灯定义Sublabel。
在ROI标签窗格中,单击车标签。
点击Sublabel.
创建一个长方形
sublabel命名头灯
也可以选择写一篇描述。点击好吧.
的头灯子标签出现在ROI标签窗格。子标签嵌套在选定的ROI标签下,车,并且与其父标签的颜色相同。
您可以在一个标签下添加多个子标签。您还可以拖放子标签以在列表中重新排序。右击任何标签以进行其他编辑。
在ROI标签窗格中,选择头灯sublabel。
在图像框架中,选择车标签。选中时标签会变成黄色。您必须选择车在您可以将sublabel添加到它之前,标签(父ROI)。
画头灯每辆车的子标签。
重复前面的步骤,标记另一辆车的前灯。要更精确地绘制标签,请使用位于标签窗口右上角的平移和缩放选项。
子标签只能与矩形或折线ROI标签一起使用,不能有自己的子标签。有关使用子标签的详细信息,请参见使用子标签和属性标签地面真实数据.
一个ROI属性指定有关ROI标签或子标签的附加信息。例如,在驾驶场景中,属性可能包括车辆的类型或颜色。在海洋场景中,属性可能包括帆船的类型或帆的数量。您可以定义这些类型的ROI属性。
数值
- 指定数字标量属性,例如标记车辆上的门数或帆船上的帆数。
字符串
-指定一个字符串标量属性,例如车辆或船只的颜色。
逻辑
-指定一个逻辑上的真或假属性,例如车辆是否在运动或船只正在让路。
列表
-指定预定义字符串的下拉列表属性,例如车辆或船只的制造或模型。
有关这些属性类型的详细信息,请参见ROI标签,子标签和属性.
为车辆类型添加一个属性。
在ROI标签窗格在左侧,选择车标签并点击属性.
在属性名称框,输入carType
.将属性类型设置为列表
.
在列出项目节、型、车等不同类型轿车
,掀背车
,运动型多功能车
,马车
在美国,每条线路都有自己的线路。可以选择给属性一个描述,然后单击好吧.
选择一个车ROI标签。在属性和Sublabels窗格中,选择适当的carType该车辆的属性值。
重复前面的步骤分配carType属于另一辆车。
您还可以向子标签添加属性。的属性头灯指示前灯是否亮着的子标签。
在ROI标签窗格在左侧,选择头灯sublabel并点击属性.
在属性名称框,输入关
.将属性类型设置为逻辑
.离开默认值设置为空的
,也可以写描述,然后单击好吧.
在视频帧中选择一个前照灯。设置合适的关属性值,或将属性值保留为空的
.
重复上一步以设置关其他车灯的属性。
若要删除某个属性,请右键单击ROI标签或子标签,然后选择要删除的属性。删除属性将从所有先前创建的ROI标签注释中删除属性信息。
一个现场标签定义整个场景的附加信息。使用场景标签来描述条件,如光照和天气,或事件,如车道变化。
创建一个场景标签应用于图像。
在应用程序的左窗格中,选择现场标签旁边的ROI标签标签。
点击定义新的场景标签,并在标签名称框中,输入一个名为白天
.
更改标签定义的颜色为浅蓝色,以反映场景标签的性质。下颜色参数,点击颜色预览并选择标准的浅蓝色。然后,单击好吧关闭颜色选择窗口。
离开集团参数设置为默认值没有一个
并点击好吧.的现场标签窗格显示场景标签定义。
点击适用于图像应用白天
标记到现场。场景标签将出现一个复选标记。
要编辑或删除场景标签,右键单击标签并选择编辑标签或删除标签.
到目前为止,您只标记了视频中的一帧。要标记剩余的帧,请选择其中一个选项。
单击向右箭头键进行前进到下一帧时,前一帧的ROI标签不会携带。只有阳光明媚的场景标签适用于每个帧,因为此标签应用于整个时间间隔。
通过帧提前框架并手动绘制标签和子标签ROI。还更新这些ROI的属性信息。
为了加快标签过程,你可以在应用程序中使用自动化算法。你可以定义自己的自动化算法,参见创建标签的自动化算法和颞自动化算法,或使用内置的自动化算法。在本例中,您使用内置的点跟踪算法标记地面真相。
在本例中,只自动标记车ROI标签。内置的自动化算法不支持子标签和属性自动化。金宝app
选择要自动执行的标签。在视频的第一帧中,按Ctrl.然后单击以选择两个车标签注释。标签以黄色突出显示。
从应用程序工具条,选择选择算法>点跟踪器.该算法使用kade - lucas - tomasi (KLT)算法在短时间内跟踪一个或多个矩形roi。
(可选)配置自动化设置。例如,确保导入选定的roi,以便车您选择的标签将被导入到自动化会话中。
点击自动化打开自动化会话。算法指令出现在右窗格中,并且可以自动使用所选标签。
点击跑来跟踪选定的roi。
检查运行算法的结果。
进入场景的车辆稍后是未标记的。未标记的车辆没有初始ROI标签,因此算法没有跟踪它们。点击撤销运行.使用滑块找到每个车辆首次出现的框架。画车辆每辆车周围都有roi,然后点击跑一次。
逐帧前进,手动移动、调整大小、删除或添加roi,以提高自动化算法的结果。
当对算法结果满意时,单击接受.或者,要丢弃在会话期间生成的标签并手动标记,请单击取消.的取消按钮只取消算法会话,而不取消应用程序会话。
还可以选择,您现在可以用子标签和属性信息手动标记其余的帧。
为了进一步评估您的标签,您可以查看已标记ground truth的可视化摘要。从应用程序工具条,选择视图标签的总结.使用此摘要来比较帧、标签频率和场景条件。有关详细信息,请参见查看Ground Truth标签摘要.此摘要不支持子标签或属性。金宝app
您可以将标记的ground truth导出到mat文件或MATLAB工作区中的变量。在这两种情况下,被标记的ground truth被存储为groundTruth
对象。您可以使用这个对象来训练基于深度学习的计算机视觉算法。有关详细信息,请参见目标检测和语义分割的训练数据.
请注意
如果导出像素数据,则像素标签数据和地面真理数据将保存在单独的文件中,但在同一文件夹中。有关使用导出的像素标签时的考虑,请参阅标签应用商店如何导出像素标签.
在本例中,将已标记的ground truth导出到MATLAB工作区。从应用程序工具条,选择出口标签>到工作空间.导出的MATLAB变量为GTRUTH.
.
显示导出的属性groundTruth
对象。导出对象中的信息可能与此处显示的信息不同。
GTRUTH.
gtruth =带有属性的地面:DataSource:[1×1 TountTruthDataSource] LabEldefinitions:[2x6表] Labeldata:[531×3时间表]
数据源
是A.groundTruthDataSource
对象,该对象包含图像或视频和时间戳的路径。显示这个对象的属性。
gtruth.datasource.
ANS =带有属性的视频文件的TountTruthDataSource:... Matlab \ Toolbox \ Vision \ VisionData \ VisionTraffic.avi时间戳:[531×1持续时间]
LabelDefinitions
是一个包含有关标签定义的信息的表。此表不包含有关在视频帧上绘制的标签的信息。要在自己的Mat文件中保存标签定义,请从App ToolStrip中选择保存>标签定义.然后,您可以通过选择将这些标签定义导入其他应用程序会话中导入文件.
显示标签定义表。每一行包含有关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: Type: Rectangle Description: " Color: [0.5862 0.8276 0.3103] isOn: [1×1 struct]
显示有关的信息carType
属性。
gTruth.LabelDefinitions.Hierarchy {1} .carType
ans = struct with fields: listtitem: {3×1 cell}
LabelData
是一个时间表,包含在整个视频中每个时间戳绘制的ROI标签的信息。时间表包含每个标签一栏。
显示时间表的前几行。前几个时间戳表明没有检测到车辆,并且阳光明媚的
现场标签假
.这些结果是因为这部分视频没有被标记。只标记了5-10秒的时间间隔。
labelData = gTruth.labelData;头(labelData)
ans = 8×3时间表时间汽车卡车阳光明媚 __________ ____________ ____________ _____ 5.005秒[1×2 struct][1×0 struct]真正的5.0384秒[1×2 struct][1×0 struct]真正的5.0717秒[1×2 struct][1×0 struct]真正的5.1051秒[1×2 struct][1×0 struct]真正的5.1385秒[1×2 struct][1×0 struct]真正的5.1718秒[1×2 struct][1×0 struct]真正的5.2052秒[1×2struct] [1×0 struct] true 5.2386 sec [1×2 struct] [1×0 struct] true
从包含标签的5-10秒间隔显示前几行。
gTruthInterval = labelData (timerange (“00:00:05”,“00:00:10”):);头(gTruthInterval)
ans = 8×3时间表时间汽车卡车阳光明媚 __________ ____________ ____________ _____ 5.005秒[1×2 struct][1×0 struct]真正的5.0384秒[1×2 struct][1×0 struct]真正的5.0717秒[1×2 struct][1×0 struct]真正的5.1051秒[1×2 struct][1×0 struct]真正的5.1385秒[1×2 struct][1×0 struct]真正的5.1718秒[1×2 struct][1×0 struct]真正的5.2052秒[1×2struct] [1×0 struct] true 5.2386 sec [1×2 struct] [1×0 struct] true
为每一个车
标签,该结构包括边界框的位置和有关其子制造和属性的信息。
在时间间隔开始时显示车辆的边界框位置。您的边界箱子位置可能与此处显示的位置不同。
只需使用:gTruthInterval (1) . car {1} .Position% [x y宽度高度],以像素为单位
Ans = 1×4 single row vector 415.8962 82.4737 130.8474 129.3805 Ans = 1×4 single row vector 235.2182 1.0000 117.0611 55.3500
从应用程序工具条,选择保存并保存应用程序会话的mat -文件。保存的会话包括数据源、标签定义和已标记的ground truth。它还包括您的会话首选项,如应用程序的布局。要更改布局选项,请选择布局.
在会话期间的任何时间,您都可以选择新会议开始一个新的会话。您可以选择保存或取消当前会话。
当您选择时,应用程序会话mat -文件与导出的ground truth mat -文件是分开的出口>从文件.要将标记为基本的数据分享,作为最佳实践,分享包含该的地面真实垫文件groundTruth
对象,而不是应用会话的MAT-file。有关详细信息,请参见分享和存储标记的地面真理数据.
groundTruth
|groundTruthDataSource
|LANENDEFINITIONCREATOR.
|vision.labeler.AutomationAlgorithm
|vision.labeler.mixin.Temporal