虽然机器学习在基于视觉的自动化中的应用正在增长,但许多行业都面临着挑战,并难以在其计算机视觉应用中实施它。这在很大程度上是由于需要收集许多图像,以及与准确注释这些图像中的不同产品相关的挑战。
该领域的最新趋势之一是利用合成数据来加快数据收集和训练过程。合成数据通常被视为由计算机模拟生成的任何数据。
然而,将合成数据用于视觉用例需要合成图像生成方面的专业知识,并且可能很复杂、耗时且成本高昂。此外,虽然已经存在一些在现实生活中使用合成数据训练的机器学习模型的技术和最佳实践,但这些技术尚未普遍使用。
需要有一种有效的方法来连接视觉系统传统上所需的技能,以便对其进行训练和部署。这些技能包括数据收集和注释、机器学习模型训练和验证,以及集成到完整的自动化系统中。
提供一种自动化的方式来解决上述任务是扩大技术规模并使其易于访问且具有成本效益的关键。好消息是,有一种方法可以做到这一点!请继续阅读,了解如何操作。
合成数据在基于机器学习的视觉系统中的潜力
到 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 生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通标志检测、施工机械检测、车辆检测、行人检测、船舶检测等。