当前位置: 首页 > news >正文

【深度学习:Synthetic Training Data 】合成训练数据简介

在这里插入图片描述

【深度学习:Synthetic Training Data 】合成训练数据简介

    • 计算机视觉模型的视频标签
      • 视频注释与图像注释
        • ‍Data 数据
        • ‍Annotation process ‍标注流程
        • ‍Accuracy 准确性
    • ‍注释视频的优点
      • 易于数据收集
      • 时间背景
      • 实用功能
    • 视频注释用例
      • 自动驾驶汽车
      • 姿态估计
      • 交通监控
      • 医学影像
    • ‍视频注释者的作用是什么?
    • 视频标注技术
    • 不同的注释方法
      • Bounding boxes 边界框
      • ‍Polygons ‍多边形
      • ‍Polylines 折线
      • ‍Keypoints 关键点
      • Primitives 基元
    • 如何注释计算机视觉模型训练的视频
      • ‍1.定义目标
      • ‍2.选择正确的工具或服务
      • ‍3.查看注释
    • 视频标注工具
      • ‍CVAT
      • ‍LabelMe
      • ‍Diffgram
    • 视频注释的最佳实践
      • 数据集的质量
      • 使用正确的标签
      • 整理标签
      • ‍插值和关键帧的使用
      • 用户友好的视频注释工具
    • 结论

计算机视觉有许多很酷的应用,例如自动驾驶汽车、姿势估计以及医学成像领域的许多其他应用,这些应用使用视频作为数据。因此,视频注释在训练计算机视觉模型中起着至关重要的作用。

注释图像是一个相对简单且直接的过程。另一方面,视频数据标签是完全不同的野兽!它增加了一层复杂性,但如果您知道自己在做什么并使用正确的工具,则可以从中提取更多信息。

在本指南中,我们将从了解视频注释、其优点和用例开始。然后我们将了解视频注释的基本要素以及如何注释视频。然后,我们将了解视频注释工具并讨论改进计算机视觉项目视频注释的最佳实践。

计算机视觉模型的视频标签

为了训练计算机视觉人工智能模型,视频数据用标签或掩模进行注释。这可以手动执行,或者在某些情况下使用人工智能辅助视频标记来执行。标签可用于从简单的物体检测到识别复杂的动作和情绪的各种用途。

视频注释工具有助于管理这些大型数据集,同时确保标记过程的高精度和一致性。

视频注释与图像注释

正如人们可能认为的那样,视频和图像注释在很多方面都很相似。但两者之间也存在相当大的差异。我们主要从三个方面来讨论:

‍Data 数据

与图像相比,视频具有更复杂的数据结构,这也是它每单位数据可以提供更多信息的原因。

例如,显示的图像不提供有关车辆移动方向的任何信息。另一方面,视频不仅可以提供方向,还可以提供信息来估计其与图像中其他对象相比的速度。注释工具允许您将这些额外信息添加到数据集中,以用于训练机器学习模型。

视频数据还可以使用先前帧的数据来定位可能被部分遮挡或包含遮挡的对象。在图像中,这些信息将会丢失。

‍Annotation process ‍标注流程

与图像注释相比,视频注释还有一个额外的难度。在标记时,必须同步并跟踪帧之间各种状态的对象。通过自动化可以加快此过程。

‍Accuracy 准确性

在标记图像时,必须对整个数据集中的同一对象使用相同的注释。这可能很困难并且容易出错。另一方面,视频提供了跨帧的连续性,限制了出错的可能性。在注释过程中,工具可以帮助您记住整个视频中的上下文,这反过来又有助于跨帧跟踪对象。这确保了比图像标记更高的一致性和准确性,从而提高机器学习模型的预测准确性。

计算机视觉应用确实依赖图像来训练机器学习。虽然在某些用例中,例如对象检测或逐像素分割,带注释的图像是首选。但考虑到图像标注是一个繁琐且昂贵的过程,如果您从头开始构建数据集,让我们看看视频标注相对于图像数据收集和标注的一些优势。

‍注释视频的优点

视频注释可能比图像注释更耗时。但使用正确的工具,它可以提供附加功能以实现高效的模型构建。以下是带注释的视频提供的一些功能:

易于数据收集

如您所知,几秒钟的视频包含多个单独的图像。因此,整个场景的视频包含足够的数据来构建强大的模型。注释过程也变得更加容易,因为您不需要注释每一帧。标记对象的第一次出现和对象出现的最后一帧就足够了。中间帧的其余注释可以进行插值。

时间背景

视频数据可以提供更多关于形态运动的信息,而静态图像无法帮助机器学习模型。例如,标记视频可以提供有关被遮挡对象的信息。它通过帮助 ML 模型了解对象的运动及其随时间的变化情况,为 ML 模型提供时间上下文。

这有助于开发人员通过实施时间滤波器和卡尔曼滤波器等技术来提高网络性能。时间滤波器帮助 ML 模型根据相邻帧中特定对象的存在或不存在(遮挡)来过滤错误分类。卡尔曼滤波器使用相邻帧的信息来确定后续帧中对象最可能的位置。

实用功能

由于带注释的视频为机器学习模型提供了细粒度的信息,因此它们会带来更准确的结果。此外,它们比图像更准确地描述现实世界场景,因此可用于训练更高级的机器学习模型。因此,视频数据集在功能上更加实用。

视频注释用例

现在我们了解了带注释的视频数据集的优势,让我们简要讨论一下它如何帮助计算机视觉的实际应用。

自动驾驶汽车

自动驾驶汽车的机器学习模型仅依靠标记视频来了解周围环境。主要用于识别街道上的物体以及汽车周围的其他车辆。它还有助于在车辆中构建碰撞制动系统。这些数据集不仅用于构建自动驾驶汽车,还可以用于监控驾驶以防止事故发生。例如,监控驾驶员的状况或监控不安全驾驶行为,以确保道路安全。

姿态估计

鲁棒姿势估计具有广泛的应用,例如在游戏、增强现实和虚拟现实、人机交互等中跟踪身体部位。在构建用于姿势估计的鲁棒机器学习模型时,人们可能会面临由于高可变性而出现的一些挑战使用图像时的人类视觉外观。这些可能是由于视角、照明、背景、不同身体部位的不同尺寸等造成的。精确注释的视频数据集允许 ML 模型识别每个帧中的人物,并跟踪他们及其在后续帧中的运动。这反过来将有助于训练机器学习模型来跟踪人类活动并估计姿势。

在这里插入图片描述

交通监控

世界各地的城市正在适应依靠智能交通管理系统来改善交通状况。随着人口的增长,智能交通管理变得越来越必要。带注释的视频可用于构建用于交通监控的机器学习模型。这些系统可以监控事故并快速向当局发出警报。它还可以通过将流量路由到不同的路线来帮助引导流量摆脱拥堵。

医学影像

机器学习正在进入医学领域。许多诊断依赖于视频。为了通过机器学习模型使用这些数据进行诊断,需要进行注释。例如,在内窥镜检查中,医生必须通过视频才能发现异常情况。通过注释这些视频和训练 ML 模型,可以快速推进此过程。机器学习模型可以实时检测异常情况并充当医生的助手。这也将确保更高的准确性,因为有第二种过滤方法用于检测。要更深入地了解视频注释如何帮助胃肠病学领域的医生,请查看我们的博客“医生标记数据的止痛”。

在这里插入图片描述

在医学诊断领域,医学图像的高精度注释对于构建可靠的机器学习模型至关重要。为了详细了解稳健有效的医学图像注释的重要性及其在医疗行业中的使用,请阅读我们的博客机器学习医学图像标记简介。

尽管这里讨论的用例主要集中在计算机视觉领域的对象检测和分割任务,但值得注意的是,视频数据集的用例并不仅限于这些任务。

虽然注释视频而不是图像有很多好处,并且单独注释视频数据集的许多用例,但这个过程仍然费力且困难。负责对这些视频进行注释的人员必须了解正确工具和工作流程的使用。

‍视频注释者的作用是什么?

视频注释器的作用是向为特定任务策划的视频数据集添加标签和标记。这些标记数据集用于训练 ML 模型。向数据添加标签的过程称为注释,它可以帮助机器学习模型识别数据集中的特定对象或模式。

如果您不熟悉该过程,最好的做法是了解视频注释技术。这将有助于理解和使用特定任务的理想注释类型。让我们首先了解注释视频的不同过程,然后深入研究注释视频的不同方法。

视频标注技术

主要有两种不同的方法可以对视频进行注释:

  • Single frame annotation 单帧标注

这更像是一种传统的标记方法。视频被分离或分成不同的帧或图像并单独标记。当数据集包含动态对象运动较少的视频并且小于传统的公开可用数据集时,请选择此选项。否则,由于给定大型视频数据集,视频必须注释大量图像数据,因此既耗时又昂贵。

  • 多帧或流注释

在这种方法中,注释器使用数据注释工具将对象标记为视频流,即必须在视频播放时逐帧跟踪对象及其坐标。这种视频注释方法明显更快、更高效,尤其是当有大量数据需要处理时。对象的标记更加准确和一致。随着视频注释工具的使用越来越多,多帧方法变得更加广泛。

视频标签工具的连续帧方法现在可以自动化该过程,这使其变得更加容易并有助于保持连续性。它是这样完成的:逐帧机器学习算法可以自动跟踪对象及其位置,从而保持信息的连续性和流动性。该算法评估前一帧和下一帧中的像素并预测当前帧中像素的运动。这些信息足以让机器学习算法准确地检测到首先出现在视频开头、消失几帧然后再次出现的移动物体。

为了选择正确的注释方法,必须了解数据集所针对的任务。例如,在人体姿态估计中,需要使用关键点方法来标记人体的关节。使用边界框不会为机器学习模型提供足够的数据来识别每个关节。因此,让我们详细了解为视频添加注释的不同方法!

不同的注释方法

Bounding boxes 边界框

边界框是最基本的注释类型。使用矩形框包围感兴趣的对象。它可用于某些背景元素不会干扰 ML 模型的训练和解释的对象。边界框主要用于对象保留任务,因为它们有助于识别视频中感兴趣对象的位置和大小。对于矩形物体,它们提供精确的信息。如果感兴趣的对象具有任何其他形状,则应首选多边形。

在这里插入图片描述

使用边界框注释图像

‍Polygons ‍多边形

当感兴趣的对象具有不规则形状时,使用多边形进行注释。当不需要任何背景元素时也可以使用此方法。

在这里插入图片描述

对于大型数据集来说,通过多边形进行注释的过程可能会很烦人。但借助注释工具中的自动分段功能,这可以变得更容易。

‍Polylines 折线

折线在视频数据集中非常重要,用于标记本质上静态但在帧之间移动的对象。例如,在自动驾驶车辆数据集中,道路使用折线进行注释。

在这里插入图片描述

多边形和折线注释

‍Keypoints 关键点

关键点有助于注释感兴趣的对象,而这些对象的几何形状对于训练 ML 模型并不重要。它们勾勒出或精确指出感兴趣物体的地标。例如,在姿势估计中,关键点用于标记人体的地标或关节。这里的这些关键点代表人体骨骼,可用于训练模型来解释或监控视频中人体的运动。

在这里插入图片描述

关键点注释

Primitives 基元

它们也称为骨架模板。基元用于对模板形状(如 3D 长方体、旋转边界框等)进行专门注释。它在标记视频中需要 3D 结构的对象时特别有用。基元对于注释医疗视频非常有帮助。

在这里插入图片描述

创建骨架模板(基元)

现在我们已经了解了视频注释的基础知识,让我们看看如何注释视频!

如何注释计算机视觉模型训练的视频

尽管视频注释很有效,但考虑到数据集中的视频数量巨大,对注释者来说标记它们仍然很乏味。这就是为什么设计视频注释管道可以简化注释者的任务。管道应包括以下组件:

‍1.定义目标

在开始注释过程之前,必须明确定义项目的目标。在注释过程开始之前,应考虑整理的数据集和 ML 模型的目标。这确保了注释过程支持构建强大的机器学习模型。

‍2.选择正确的工具或服务

选择视频注释工具时应考虑数据集的类型和要使用的技术。为了便于注释,该工具应包含以下功能:

  • 高级视频处理
  • 易于使用的注释界面
  • 动态和基于事件的分类
  • 自动对象跟踪和插值
  • 团队和项目管理

要详细了解视频注释工具中需要的功能,您可以阅读博客“视频注释工具中需要的 5 种功能”。

在这里插入图片描述

‍3.查看注释

应不时地检查注释,以确保数据集按照要求进行标记。在注释大型数据集时,可能会错误或遗漏一些内容。定期检查注释可以确保这种情况不会发生。注释工具提供了操作仪表板,可将其合并到您的数据管道中。这些管道也可以实现自动化,以实现大规模连续、弹性的数据交付。

视频标注工具

有许多可用的视频注释平台,其中一些是付费的,而另一些则是免费的。

付费标注平台主要由从事商业计算机视觉项目的机器学习和数据运营团队使用。为了处理大型数据集并管理整个机器学习生命周期,您需要项目中使用的所有工具的额外支持。以下是 Encord 提供的一些免费注释工具所没有的功能:

  • 强大的本体功能支持标签的复杂子分类
  • 渲染和注释任意长度的视频和图像序列
  • 支持所有注释类型、框、多边形、折线、关键点和图元。
  • 可定制的审查和注释管道,用于监控注释器的性能并自动分配标记任务
  • 能够使用 Encord 的微模型方法自动进行注释

还有免费的视频注释工具。它们适合学者、机器学习爱好者和在本地寻找解决方案但无意扩展解决方案的学生。

因此,让我们看一下一些开源视频注释工具,用于为计算机视觉和数据科学项目标记数据。

‍CVAT

CVAT 是一款免费、开源、基于网络的注释工具,用于标记计算机视觉数据。它支持监督学习的主要任务:对象检测、分类和图像分割。

‍Features 特征

  • 提供四种基本注释技术:框、多边形、折线和点
  • 提供半自动注释
  • 支持关键帧之间的形状插值
  • 基于网络和协作
  • 易于部署。可以使用 Docker 安装在本地网络中,但随着扩展而难以维护

‍LabelMe

LabelMe 是一款数字图像在线注释工具。它是用 Python 编写的,并使用 Qt 作为其图形界面。

‍Features 特征

  • 视频应转换为图像以进行注释
  • 提供基本注释技术:多边形、矩形、圆、线和点
  • 用于分类和清理的图像标记注释
  • 注释只能保存为JSON格式(支持广泛用于实验的VOC和COCO格式)

‍Diffgram

Diffgram 是一个开源平台,提供注释、目录和工作流服务来创建和维护 ML 模型。

‍Features 特征

  • 通过其接口提供高分辨率、高帧率和多个序列的快速视频注释
  • 注释可以自动化
  • 简化人工审核流程以提高培训数据和项目管理效率
  • 虚拟存储数据集;企业产品的无限存储空间
  • 轻松获取预测数据
  • 提供自动错误突出显示,以简化调试和修复问题的过程。

视频注释的最佳实践

为了使用视频数据集训练稳健且精确的 ML 模型,您必须确保数据上的标签准确。选择正确的注释技术很重要,不应被忽视。除此之外,注释视频数据时还需要考虑一些事项。

那么,如何有效地进行注释呢?

对于那些想要训练计算机视觉模型的人,这里有一些针对视频注释者的提示。

数据集的质量

数据集的质量对于任何机器学习模型构建都至关重要。在开始注释过程之前应清理整理的数据集。应识别并删除低质量和重复的数据,以免对模型训练产生不利影响。

如果正在使用注释工具,那么您必须确保它使用无损帧压缩,以便该工具不会降低数据集的质量。

使用正确的标签

注释者需要了解数据集将如何用于 ML 模型的训练。如果项目目标是对象检测,则需要使用边界框或正确的注释技术来标记它们以获取对象的坐标。如果目标是对对象进行分类,则应事先定义类标签,然后应用。

整理标签

使用定制的标签结构并使用准确的标签和元数据对于防止手动标注工作完成后对对象进行错误分类具有重要意义。因此,标签结构及其所属的类应该预先定义。

‍插值和关键帧的使用

在为视频添加注释时,您可能会遇到可预测地移动且在整个视频中不会改变形状的对象。在这些情况下,识别包含足够重要数据的帧非常重要。通过识别这些关键帧,您无需标记整个视频,而是使用它们进行插值和注释。这在保持质量的同时加快了流程。因此,您越早在视频中找到这些关键帧,注释过程就越快。

用户友好的视频注释工具

为了创建稍后用于训练 ML 模型的精确注释,注释者需要功能强大、用户友好的注释工具。正确的工具将使这个过程变得更容易、更具成本效益和更高效。注释工具提供了许多功能,可以帮助简化过程。

例如,提供自动注释功能(例如自动分段)的工具。手动注释视频数据集中的分段比标记类或绘制用于对象检测的边界框更耗时。自动分割功能允许注释者只需在感兴趣的对象上绘制轮廓,该工具就会自动“捕捉”到对象的轮廓,从而节省注释者的时间。

同样,视频注释工具也有许多功能可以帮助注释者。在选择工具时,还必须考虑自动化等功能,这些功能与注释的目标一致,并使流程更加高效。

结论

计算机视觉系统是围绕图像和视频构建的。因此,如果您正在从事计算机视觉项目,那么在构建模型之前了解您的数据及其创建方式至关重要。我讨论了使用图像和视频之间的区别,以及为 ML 模型使用视频的优势。然后我们更深入地研究了视频注释和技术,并简要讨论了可用的工具。最后,我们研究了一些视频注释的最佳实践。

相关文章:

  • 做数据缓存,Map 比List更具有优势
  • 直播预告丨看零售场,如何玩转 MaaS
  • UDP传输总丢包?常用的解决方式在这里!
  • 在Linux系统中创建虚拟串口
  • Go+快速开始详细指南
  • 十三、Three场景物体增加发光特效
  • EVE-NG的环境导入IOL组件
  • 算法竞赛备赛进阶之数位DP训练
  • 跨境电商多账号防关联攻略分享,盘点那些可以多账号登录的指纹浏览器
  • React18-树形菜单-递归
  • electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法
  • QT笔记 - 加载带有提升为自定义部件类的“.ui“文件 - 重写QUiLoader::createWidget()函数
  • MySQL进阶篇(六)InnoDB 引擎
  • 宏集案例 | 楼宇管理新智慧:Panorama SCADA楼宇管理系统应用实例
  • Java异常处理--异常处理的方式2:throws
  • @jsonView过滤属性
  • 77. Combinations
  • Android开源项目规范总结
  • C++类的相互关联
  • css属性的继承、初识值、计算值、当前值、应用值
  • Debian下无root权限使用Python访问Oracle
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Hibernate【inverse和cascade属性】知识要点
  • rc-form之最单纯情况
  • React组件设计模式(一)
  • SAP云平台里Global Account和Sub Account的关系
  • Vue--数据传输
  • 闭包--闭包作用之保存(一)
  • 记一次和乔布斯合作最难忘的经历
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #android不同版本废弃api,新api。
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • ${factoryList }后面有空格不影响
  • (MATLAB)第五章-矩阵运算
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (编译到47%失败)to be deleted
  • (第27天)Oracle 数据泵转换分区表
  • (二)windows配置JDK环境
  • (原)Matlab的svmtrain和svmclassify
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 使用配置文件
  • .net(C#)中String.Format如何使用
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET命名规范和开发约定
  • @NestedConfigurationProperty 注解用法
  • @vue/cli 3.x+引入jQuery
  • [20190416]完善shared latch测试脚本2.txt
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [CSS] 点击事件触发的动画
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [ESP32] 编码旋钮驱动