生成 AI 训练数据
创建大规模、多样化的数据集是训练人工智能模型的关键步骤,尤其是对于图像识别、对象检测和分类等任务。然而,收集和标注真实数据可能耗时、昂贵甚至有时不切实际。这就是合成 AI 训练数据作为强大替代方案的用武之地。
合成 AI 训练数据涉及生成模拟真实世界条件的人工数据。使用 Unity 等仿真环境和 realvirtual.io AI Builder 等工具,开发者可以通过调整对象位置、光照、纹理和相机角度等参数来创建大量合成数据。这一过程有助于生成鲁棒的数据集,提高人工智能模型性能,而无需大量手动收集的数据集。
合成 AI 训练数据的优势
- 成本效益:无需昂贵的数据收集过程,减少手动标注时间。
- 变量控制:允许开发者调整光照、相机视角和对象配置等条件,覆盖广泛场景。
- 更快的迭代:能够快速创建多样化的训练集,加快人工智能模型训练周期。
- 增强鲁棒性:通过模拟边缘情况和不同环境,使用合成数据训练的人工智能模型通常能更好地泛化到真实世界条件。
- 训练管道灵活性:生成的数据集以标准格式导出,兼容各种人工智能训练框架,超越内置的 YOLO 集成。
在 realvirtual.io AI Builder 中,Variators 负责在训练过程中动态调整各种参数,帮助自动生成各种合成数据。这种方法使人工智能模型能够从广泛的输入中学习,并确保模型在不同条件下表现良好。
训练组件
AI Builder 演示场景展示了如何使用 realvirtual.io AI Builder 框架创建合成 AI 训练数据并训练对象检测模型。此演示旨在通过传送带和带有不同颜色乐高砖块的分拣系统来展示关键功能,如相机放置、数据记录和人工智能模型训练。
AI Camera
AI Camera 是合成训练过程中的关键组件。它允许您在场景中放置相机,从不同角度、光照条件和视角拍摄图像。
相机的主要作用是记录合成数据,然后用于训练人工智能模型。
设置完成后,AI Camera 会持续捕捉传送带上对象(如砖块)的图像,这些图像将用于训练人工智能识别和分拣这些对象。
AI Camera 使用简单,无需额外配置。只需将其放置在需要生成合成图像的所需位置。

AI Builder
AI Builder 组件设计用于管理人工智能训练和数据记录的整个过程。

AI Builder 需要根据工作流程的当前阶段设置为所需的模式:
训练模式 (Training Mode):在此模式下,可以使用 AI Camera 生成合成训练数据。记录足够的数据后,可以基于生成的数据启动训练过程。此模式用于为对象检测准备和训练人工智能模型。
检测模式 (Detection Mode):在检测模式下,人工智能基于之前训练的模型执行对象检测。检测仍然使用 AI Camera(而非真实相机),这非常适合在完整的数字孪生中测试和开发整个基于人工智能的流程。这使您能够在部署到物理系统之前测试检测能力并优化人工智能与 PLC 和机器人接口的集成。请参见在数字孪生中测试人工智能部分。
此外,您可以启用 OBB 标志。激活后,系统将使用 Oriented Bounding Boxes 进行数据生成和对象检测。

###
Training Data Recorder
数据记录器位于 AIBuilderDemo 场景的 "Step 1 - Data Recorder" 下,负责捕捉将用于训练人工智能模型的合成数据。该组件从场景中收集标注数据并将其保存到指定文件夹中。
在场景中,数据记录器与 AI Camera 和其他 Variators(如 Sky 和 Light Variators)协同工作,创建各种训练数据。您可以配置关键参数,如时间、采样数量和验证比例,以控制合成数据的生成和存储方式。

在 Training Data Recorder 的 Inspector 面板中,您可以:
- 为捕捉的对象设置标签(例如,乐高砖块类型)。
- 调整时间设置,包括时间缩放和捕捉之间的延迟。
- 指定要收集的样本数量以及数据集的验证比例。
- 选择数据导出的文件夹,确保合成数据被保存供后续训练使用。
此外,Sky 和 Light Variator 等变体器也可以用于引入光照条件的变化,确保人工智能在不同环境下具有鲁棒性。
启动训练过程
要开始 AI 训练过程:
- 在 Unity 中打开场景,确保数据记录器已按照需要配置好标签、时间和样本。
- 通过进入 Play Mode 启动场景。
- 在 Inspector 面板的数据记录器下,点击 Start Recording。

选择后,数据记录器将根据定义的设置开始捕捉合成数据。图片及其对应的标签将保存在指定的文件夹中,供后续训练人工智能模型使用。
Variators
Sky Variator
Sky Variator 负责在合成数据记录过程中改变天空条件。通过改变天空设置,人工智能模型能够接触到不同的光照条件,使其对真实世界的变化更加鲁棒。在 Inspector 中,您可以配置以下选项:
- Apply On Init:在开始记录时启用天空变化。
- Apply On Snapshot:在每次记录合成数据快照时应用天空变化。
- Step:定义记录过程中将应用的不同天空条件数量。
Light Variator
Light Variator 负责在数据记录过程中调整光照条件,帮助将人工智能暴露于各种光照强度和温度下。在 Inspector 中,您可以配置以下选项:
- Apply On Init:在记录开始时启用光照变化。
- Apply On Snapshot:在每次快照期间应用光照变化。
- Min/Max Intensity:定义将应用的光照强度范围。
- Min/Max Temperature:定义将使用的光照温度范围(从冷色调到暖色调)。
- Light:指定要变化的光源,例如场景中的太阳。

Object Variator:
- Apply On Init:此选项未选中,意味着对象的变化不会在场景开始时立即发生。
- Apply On Snapshot:此选项未选中,表明快照时不会自动发生变化。
- Objects:配置了四种类型的对象用于变化:
- 2x2 Brick
- 3x2 Brick
- 4x2 Brick
- 6x2 Brick
- Weights:每个对象的权重均为 0.25,意味着每个对象在变化过程中被选中的机会均等。
Transform Variator:
- Apply On Init:已选中,意味着场景初始化时将应用位置、旋转和缩放的变化。
- Apply On Snapshot:未选中,因此每次快照时不会自动发生变化。
- Position Variation:对象的位置在 X、Y、Z 各轴上可以在 -0.5 到 0.5 单位之间变化。
- Rotation Variation:对象的旋转在 X、Y、Z 各轴上最多可以变化 360 度。
- Scale Variation:对象的缩放保持固定(无缩放变化),如缩放变化值为零所示。
使对象可检测
当 AI Builder 记录训练数据时,它需要知道哪些对象属于哪个类别,并查看它们的边界框以生成训练数据的适当标注。
Detectables
为了使对象可检测(例如砖块),它需要 Detectable 组件。您可以将 Detectable 组件添加到任何 3D 对象上。

添加 detectable 后,您可以通过点击 detectable 组件 Inspector 中的相应按钮来计算对象的三维边界。计算出的边界会显示为围绕对象的黄色 gizmo 线框。在后续过程中,这些三维边界将被投影到 AI Camera 的二维空间中,并在记录训练数据时用作数据标注的边界框。

除了计算目标对象的边界外,系统还需要对象的类别标签信息。要定义此类类别标签,首先需要生成一个 LabelDefinition 对象。在项目窗口中,右键点击并导航到 Create > realvirtual > AiBuilder > LabelDefinition。这将生成 LabelDefinition 对象。

在 LabelDefinition 对象的 Inspector 中,您可以定义类别、命名它们并为它们指定颜色。
设置好 LabelDefinition 对象后,您需要为可检测对象添加标签条件。标准的标签条件是 FixedCondition。该组件为您的可检测对象分配一个固定的类别标签。
其他组件(如 OrientationCondition)根据对象的旋转/方向切换类别标签。例如,如果您想检测砖块是朝上还是翻转的,这可能会很有用。

在 FixedCondition 组件中,您可以设置对象的类别 ID。此 ID 是一个整数,代表上述 LabelDefinition 对象中相应类别的索引。
完成这些步骤后,您的可检测对象就准备好了。系统将在数据记录过程中识别它并自动为其标注。
在 Play 模式下,系统设置为训练模式时,您可以通过数据记录预览验证您的设置。您应该看到相应颜色的包围边界框,标有您在 LabelDefinition 中定义的类别名称。
