合成数据加速机器视觉学习

 

虽然机器学习在基于视觉的自动化中的应用正在增长,但许多行业都面临着挑战,并难以在其计算机视觉应用中实施它。这在很大程度上是由于需要收集许多图像,以及与准确注释这些图像中的不同产品相关的挑战。

该领域的最新趋势之一是利用合成数据来加快数据收集和训练过程。合成数据通常被视为由计算机模拟生成的任何数据。

然而,将合成数据用于视觉用例需要合成图像生成方面的专业知识,并且可能很复杂、耗时且成本高昂。此外,虽然已经存在一些在现实生活中使用合成数据训练的机器学习模型的技术和最佳实践,但这些技术尚未普遍使用。

需要有一种有效的方法来连接视觉系统传统上所需的技能,以便对其进行训练和部署。这些技能包括数据收集和注释、机器学习模型训练和验证,以及集成到完整的自动化系统中。

提供一种自动化的方式来解决上述任务是扩大技术规模并使其易于访问且具有成本效益的关键。好消息是,有一种方法可以做到这一点!请继续阅读,了解如何操作。

合成数据在基于机器学习的视觉系统中的潜力

到 25 年,机器视觉市场的 AI 预计将达到 $2023B,复合年增长率为 26.3%(来源:MarketsandMarkets)。该市场包括行业用例,例如配套、分拣、拣选、车间安全、吞吐量分析、质量检查等等。例如,视觉系统利用异议检测算法自动识别物体的位置并引导机器人拾取它们。

机器人料箱拣选

机器人根据摄像头输入从垃圾箱中拾取金属部件。

物体检测的步骤是什么?

为了了解合成数据的潜力,让我们回顾一下部署典型目标检测视觉系统的工作流程:

部署基于视觉的目标检测系统的典型工作流程。

合成数据可以通过解决数据收集和注释阶段中的一些痛点来帮助缩短此工作流程并使其更加健壮:

  • 数据收集 – 从理论上讲,无需设置物理环境即可提供无限量的合成数据。这对于数据受限的方案特别有益,即可以收集的实际数据量仅限于不存在或很难获得。例如,如果必须停止现有生产线以收集训练数据,则可能会造成潜在的生产损失。合成数据还可以提供比收集真实数据时通常观察到的更大的变化。例如,在虚拟 3D 环境中,很容易创建不同的光线或其他物理条件,而在真实环境中,对这些参数的控制通常有限。因此,利用合成数据可以提高机器学习模型在以前从未遇到过的环境中部署时的泛化能力。
  • 注释 – 手动注释数据通常被视为一项重复的、平凡的任务。或者,正如谷歌研究院最近的一篇文章中所说的那样:“每个人都想做模型工作,而不是数据工作”。通常,注释对象的人工缺乏领域专业知识或适当的指导,这会导致注释不准确或完全错误。另一方面,合成数据总是被准确地注释,因为注释(边界框、对象轮廓等)是根据对合成数据如何形成的完整了解自动生成的。这样可以减少手动注释项目中常见的注释错误。

弥合合成与真实之间的差距

虽然 3D CAD 和仿真工具已经成熟了很长时间,但最近的进展在将仿真中学到的功能转化为现实方面取得了重大进展。这些计算机视觉技术通常被称为“Sim2Real”。

有一些现有的方法来生成合成数据,这些方法可以训练机器学习模型在输入真实数据时表现良好。

域随机化

合成数据生成方法介于“接近真实”和“域随机化”之间。

所有这些方法都介于接近真实模拟和域随机化之间。

接近真实 – 在这种方法中,您需要努力使模拟尽可能接近真实的预期场景。以瓶子包装线为例,假设您需要在封盖和运输之前对瓶子进行基于视觉的自动计数。在开始生成合成数据之前,某些属性是已知的:

  • 相机属性 – 确切位置、视野、分辨率等。
  • 照明条件
  • 瓶子和周围材料的特性——颜色、纹理、反射、折射、透明度等。
  • 瓶子在测试站中的可能位置
  • 由于相机的光学和电子特性而产生的典型噪声或伪影

给定其中一些属性,您可以手动创建模拟其中许多属性的 3D 模拟场景。

  • 优点:
  • 经过训练的机器学习模型可能在高度相似的场景中表现良好。
  • 缺点:
  • 对变化和扰动敏感。
  • 需要更高的努力才能准确模拟场景。
  • 在其他有细微差异的方案中更难自动化或重用。

域随机化 (DR) – 在这里,您可以随机化许多环境属性,从对象的数量及其位置到材质属性、相机属性、周围环境等。当基于这种随机数据集训练机器学习模型时,生成的训练模型将知道如何忽略随机化的属性,并专注于非随机化的属性(例如零件几何形状)。这样,经过训练的模型可以泛化到各种环境和领域,包括实际的预期环境。

  • 优点:
  • 可以轻松实现自动化。
  • 节省宝贵的工程时间。
  • 对环境变化不太敏感。
  • 缺点:
  • 需要更多数据,因为随机化会导致更高的方差(环境外观的更多选项)。
  • 在某些情况下,机器学习模型在真实环境中的表现不够好,需要一些手动调整,例如,设置相机位置、视野、图像分辨率和对象纹理。

域随机化示例

域随机化示例 – 对象位置、外观和光照条件被随机化,以便模型学会忽略这些属性并专注于几何形状。图像来源:Fangyi Zhang et al. – Adversarial Discriminative Sim-to-real Transfer of Visuo-motor policies

  • 微调 – 我们用来采用以前针对特定任务在某个数据集上训练的机器学习模型,并继续在不同的数据集上训练它,可能使用不同的参数和不同的任务。在纯粹基于合成数据训练模型后,有时模型可以立即在真实数据中表现得足够好。在某些情况下,根据环境和任务的不同,机器学习模型可能需要使用少量真实(通常带注释的)图像进行一些微调,然后才能正常运行。
  • 域适应 (DA) – 能够在一个或多个“源域”中训练的算法应用于不同(但相关)的“目标域”。在我们的例子中,合成数据集是我们的源域,我们希望训练一个模型在现实生活中表现良好。

域转移

“域转移”技术有助于缩小数据集源域与不同但相关的目标域之间的差距。

有几种技术可以缩小这种差距(通常称为“域转移”)。一些技术使用 GAN 来生成看起来更接近目标域的图像。其他方法使用基于导数的方法来生成逼真的图像。一般来说,DA是一个广泛而迷人的研究领域。

在工业用例中采用合成数据的挑战

您可以使用游戏引擎或模拟器,如 Blender、Unity3D、Unreal、Gazebo 等,并创建自定义 3D 模拟以生成合成注释数据集。通常,要使用这些工具实现您的目标,需要 3D 环境和编程方面的特定专业知识和知识。您需要知道如何创建场景,在不同图像之间创建方差(随机化),调整虚拟摄像机和其他传感器,最后创建图像,并以所需的格式进行注释。

合成数据专业知识

很少能找到具有使用某些常用工具所需的各种专业知识的工程师。

除了所需的专业知识外,与任何其他工程或开发过程一样,此过程需要时间。特别是如果您选择对接近真实的模拟进行建模。这通常非常耗时。有时甚至达到这样的程度:创建模拟的工作量远高于手动收集和注释真实数据的工作量。

最后,即使您选择自己创建数据集,也需要在域随机化和微调的上下文中使用正确的方法创建和训练数据集。对于没有此类方法经验的工程师,培训结果可能不理想。

UnrealSynth软件如何提供帮助

UnrealSynth 虚幻合成数据生成器 利用虚幻引擎的实时渲染能力搭建逼真的三维场景,为 YOLO 等 AI 模型的训练提供自动生成的图像和标注数据。UnrealSynth 生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通标志检测、施工机械检测、车辆检测、行人检测、船舶检测等。

转载:合成数据加速机器视觉学习 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/131716.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Github】git clone命令下载文件中途停止

方法一: 使用git clone命令下载github上的源代码时,有时文件下载到一定百分比时就停止不动, 这是因为我们所下载的文件很大,超过了git预先分配的Postbuffer容量,所以一直卡在那里。可以使用以下命令查看当前Postbuffe…

景联文科技加入中国人工智能产业发展联盟(AIIA),与行业各方共促AI产业发展

近日,景联文科技加入中国人工智能产业发展联盟(AIIA),与行业各方共同挖掘人工智能数据的更多价值,破解中国人工智能AI数据短缺难题。 中国人工智能产业发展联盟(简称AIIA)是在国家发改委、科技部…

省钱攻略:三大运营商保号套餐办理攻略,不再当冤大头!

现在的朋友都是相当的聪明,都不想直接在营业厅办理套餐,而是选择保号套餐流量卡。 今天,小编主要介绍的就是三大运营商的保号套餐,以及如何办理! 如图所示: ​  电信最低可改5元套餐,移动、联…

计蒜客详解合集(2)期

目录 T1126——单词倒排 T1617——地瓜烧 T1612——蒜头君的数字游戏 T1488——旋转单词 T1461——校验信用卡号码 T1437——最大值和次大值 T1126——单词倒排 超级水的一道题,和T1122类似但更简单,分割后逆序输出即可~ 编写程序,读入…

51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)

PCF8591数字电压表数码管显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲解视…

收藏!7个国内「小众」的程序员社区

技术社区是大量开发者的集聚地,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。 国内知名的技术社区有CSDN、博客园、开源中国、51CTO,还有近两年火热的掘金&#xff…

【Kurbernetes集群】Pod资源、Pod资源限制和Pod容器的健康检查(探针)详解

Pod资源 一、Pod概述1.1 Pod的定义1.2 一个Pod能包含几个容器?1.3 Pod的分类1.3.1 控制器管理的Pod1.3.2 自主式Pod1.3.3 静态Pod 1.4 Pod中容器的分类1.4.1 Pause容器1.4.2 初始化容器1.4.3 应用容器 1.5 Pod常见的状态 二、Pod中的策略2.1 镜像拉取策略2.2 Pod中容…

【计算机网络】HTTPS

文章目录 前言为什么会出现 HTTPSHTTPS 是如何进行加密的1. 对称加密非对称加密中间人攻击3. 引入证书 前言 前面我们学习了应用层中使用比较常见的 HTTP 协议,但是呢?在实际的使用中,浏览器和服务器之间的通信其实很少使用到 HTTP&#xff…

Google Firebase PHP实现消息推送

获取key的方法: 登录谷歌开发者后台 https://console.firebase.google.com/?hlzh-cn function firebaseNotice($title,$body){$token_arr[token1,token2]; //用户的firebasetoken列表$notify_msg ["notification" > ["title" > $title…

C++入门 1——命名空间,缺省参数

C入门 一.前言二.命名空间2.1命名空间的定义2.2命名空间的使用 三.C的输入&输出四.缺省参数4.1概念4.2缺省分类 五.函数重载5.1概念5.2函数重载条件及代码 六.引用6.1概念6.2引用特性6.3常引用6.4使用6.5引用和指针的区别和联系 七.内联函数7.1概念7.2特性 一.前言 今天就…

[ Linux Busybox ] nandwrite 命令解析

文章目录 相关结构体nandwrite 函数实现nandwrite 实现流程图 文件路径:busybox-1.20.2/miscutils/nandwrite.c 相关结构体 MTD 相关信息结构体 struct mtd_info_user {__u8 type; // MTD 设备类型__u32 flags; // MTD设备属性标志__u32…

(免费版?)CLion Nova 强势登陆 C 和 C++ 开发领域

系列文章目录 文章目录 系列文章目录前言一、CLion Nova二、目标三、优势和改进四、显著差异五、如何安装 CLion Nova六、分享您的反馈意见总结 阿纳斯塔西娅-卡扎科娃 2023 年 11 月 9 日 前言 今天,我们宣布推出免费的 CLion 早期预览版,它使用 ReSh…

400G OSFP SR8光模块最新解决方案

数字化时代,意味着网络速度、能效和成本成为数据中心和通信网络关注的焦点。为了满足这些需求不断催生和进化新的产品,因此在这一背景下400G OSFP SR8光模块最新解决方案成为了很好的助力。该方案不仅提高了网络速度,还实现了节能降耗&#x…

ARM 基础学习记录 / ARM 裸机编程

汇编程序调用 C 程序详情 在 C 程序和 ARM 汇编程序之间相互调用时必须遵守 ATPCS 规则,其是基于 ARM 指令集和 THUMB 指令集过程调用的规范,规定了调用函数如何传递参数,被调用函数如何获取参数,以何种方式传递函数返回值。 寄存…

95. 费解的开关

题目 思路 因为最优解是每个灯只操作一次所以顺序无所谓只要确定了第一行后&#xff0c;下面都可以确定当前灯不亮就操作它下面的格子即可点亮它我觉得这种方法是唯一不会互相干扰的方法还是不太理解… 代码 #include <cstdio> #include <cmath> #include <c…

2023最新版本 从零基础入门C++与QT(学习笔记) -1- C++输入与输出

&#x1f38f;说在前面 &#x1f388;我预计是使用两个月的时间玩转C与QT &#x1f388;所以这是一篇学习笔记 &#x1f388;根据学习的效率可能提前完成学习,加油&#xff01;&#xff01;&#xff01; 输入(代码如下方代码块) &#x1f384;分析一下构成 &#x1f388;…

Rocksdb LSM Tree Compaction策略

RocksDB读写简介 直接画图说明。这张图取自Flink PMC大佬Stefan Richter在Flink Forward 2018演讲的PPT&#xff0c;笔者重画了一下。 RocksDB的写缓存&#xff08;即LSM树的最低一级&#xff09;名为memtable&#xff0c;对应HBase的MemStore&#xff1b;读缓存名为block cac…

CV计算机视觉每日开源代码Paper with code速览-2023.11.8

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】&#xff08;WACV2024&#xff09;SBCFo…

Vue3-ref函数、reactive函数的响应式

Vue3-ref函数、reactive函数的响应式 在这之前&#xff0c;先讲Vue2的响应式处理 Vue2原本使用的是Object.defineProperty的响应式处理方式 methods方法中的this.name指的是vm.namereturn的name属性在通过this.name的间接调用时&#xff0c;通过了Object.defineProperty响应式…

火山引擎公共云·城市分享会:共享云经验,一起向未来

数智化时代的来临&#xff0c;不仅激发了行业对云计算的资源需求&#xff0c;也重构了云计算的技术架构及产品布局&#xff0c;给业务场景带来更多可能性&#xff0c;让云计算成为企业走向高效治理的一剂“良方”。随着业务的多样化、复杂化&#xff0c;企业应该如何借助云计算…