合成数据喂养大模型,怎么做
美国质量协会(ASQ)的数据显示,制造商因缺陷而遭受的损失可占其销售总收入的近 20%。用户日常使用的电话、汽车、电视和电脑等产品都须通过精密制造产出,方能在各类条件和场景中发挥作用。
基于 AI 的计算机视觉应用正在以更快、更有效的方式帮助制造业检测制造流程中存在的缺陷,以帮助企业提高产量、保持产品质量的稳定性并减少误报。事实上,根据谷歌云制造业报告所示,当前已有 64% 的制造企业通过部署 AI 来帮助其开展日常活动,其中有 39% 的制造企业将 AI 用于质量检查。
驱动相关视觉应用的 AI 模型必须经过训练和调优,以预测众多用例中存在的特定缺陷,例如:
· 汽车制造缺陷:如裂纹、车漆瑕疵或误装等
· 半导体和电子产品缺陷:如印刷电路板(PCB)元件错位、断裂、存在多余的焊点或存在灰尘或头发等异物
· 电信设施缺陷:如蜂窝塔和电线杆上存在裂缝或被腐蚀等
这类感知 AI 模型的训练需要采集存在特定缺陷的图像来完成。但这类图像采集在生产环境中很难做到且成本高昂。
NVIDIA Omniverse Replicator 可生成用于训练 AI 模型的合成数据,来帮助企业克服数据挑战。NVIDIA Omniverse 是一个基于通用场景描述(USD)的计算平台,可赋能个人和团队开发 3D 工作流和应用。NVIDIA Omniverse Replicator 是 Omniverse 平台中的一项可扩展的基础应用。
开发人员可基于 Omniverse Replicator,通过改变各项参数(如缺陷类型、位置、环境照明等),轻松生成不同的数据集来启动和加快模型训练与迭代。用户可通过访问 Develop on NVIDIA Omniverse 了解更多有关信息。
(https://developer.nvidia.cn/omniverse)
本文将介绍如何充分利用合成数据来训练对象检测模型、使用有限的真值数据来进一步提高准确性以及使用模型处理中从未出现过的图像来对模型进行验证。本文将基于该方法来展示合成数据在克服真实数据缺失方面存在的价值,以及如何通过模型训练缩小仿真与现实之间的差距。
开发缺陷检测模型
以下示例是在车身(锥形前脸)上生成划痕(如图 1 所示)。需要注意的是,该工作流程需要使用 Adobe Substance 3D Designer 或存在预先生成的划痕库、NVIDIA Omniverse 以及所下载的 USD 格式的样本。
图 1:该模型基于犹他州 Sierra Cars 所设计和制造的汽车而构建,该公司主要制造结构坚实的越野车
此工作流以在 Adobe Substance 3D Designer 中创建一组缺陷开始,也就是本示例中的「划痕」,然后将缺陷与 CAD 零件导入 NVIDIA Omniverse 中,再将 CAD 零件置于特定场景中(例如生产线或车间)并在相应位置放置传感器或摄像头。
场景设置完毕后,基于 NVIDIA Omniverse Replicator,以程序性的方式将缺陷置于 CAD 零件上,来生成用于模型训练和评估的注释数据。整体的迭代流程将持续进行,直至模型达到预期的关键绩效指标(KPI)为止。
图 2:基础计算机视觉模型训练流程
创建草图
磨损和划痕是制造业常见的表面缺陷。制造业中会使用名为法线贴图的纹理映射技术在 3D 环境中展现这些纹理。法线贴图利用 RGB 图像来表示高度信息,可直接对应 3D 空间中相对于一个表面所对应的 X、Y 和 Z 轴。
本例中使用的法线贴图是在 Adobe Substance 3D Designer 中所创建的。此外,Blender 或 Autodesk Maya 等多数建模软件也可用于生成法线贴图。
图 3:在 Adobe Substance 3D Designer 中创建的划痕实例
虽然开发人员可先将划痕导入 Omniverse,而后再随机调整其大小和位置。但最好是建立一个完整的法线图库并将其以文件形式保存,并用以生成一组具有鲁棒性的合成数据。开发人员所生成的法线贴图应该包含各类形状和大小,以代表不同程度的划痕。
场景设置
接下来该进行场景设置了。首先,借助 Omniverse Code 导入相关零件的 CAD 模型。该示例中是导入了一个「SOLIDWORKS.SLDPRT」文件,该文件是 Sierra Cars RX3 赛车的前脸面板模型。
图 4:Sierra RX3 的完整 CAD 装配体
在将 CAD 文件导入 Omniverse 后,可对场景背景进行设置以便能尽可能接近基于真值数据构建的环境。本示例是使用了车间的激光雷达扫描图。
图 5:在 Omniverse 中组装 USD 格式的场景,并将不同材质应用于面板中并将其置于车间扫描图中
为方便复制,此示例中还将背景和 CAD 模型整合成为了可在 Omniverse Exchange 中下载的 USD 场景。
使用扩展程序来构建随机化划痕
为了给该模型创建一个多样化的训练数据集,开发人员需要生成各种合成划痕以反映不同划痕可能留下的不同类型的痕迹。该示例使用了基于 Omniverse Kit 构建的参考扩展程序以随机化划痕的位置、大小和角度。详情请访问 GitHub 上的 NVIDIA-Omniverse/kit-extension-sample-defectsgen 了解。
图 6:Omniverse 中的 Defects Sample Extension
需注意的是,该参考扩展程序用于操作可将法线贴图作为纹理投射到 CAD 零件表面的 proxy 对象。改变扩展程序中的参数实际上是在改变投射纹理的立方体大小和形状。
图 7:示例 - 在 CAD 零件表面程序性生成划痕
利用所需参数运行扩展程序后,将能够输出一组带注释的参考图像并将以 .png、.json 和 .npy 文件格式保存至一个可利用扩展程序进行定义的文件夹中。
模型训练和验证
Omniverse 扩展程序输出的是可用于大量本地或云端模型训练平台的标准文件格式。此外,开发人员还可以通过构建自定义写入器来格式化相关数据,以便将其用于特定的模型和平台之中。
该示例中开发人员建立了一个可将输出结果导入 Roboflow 的自定义 COCO JSON 写入器。Roboflow 是一个可用于训练和部署计算机视觉模型的网络平台。
图 8:Roboflow 中完整的合成数据集
开发人员首先是在 Roboflow 用户界面中使用了一组包含 1000 张合成图像数据集来训练 YOLOv8 模型,以加快对象检测速度。这项操作的主要目的在于查看模型在该数据集中的表现情况,这仅仅只是一个开始。模型训练是一个迭代过程,因此训练伊始可以使用规模较小的数据集,而后在迭代中持续扩大数据集的规模并提升数据集的多样性。
图 9:合成数据生成所产出的初步结果显示模型准确率为 74%、34% 和 39%
虽然初始模型展示的结果较好,但并不完美(如图 9 所示)。在初始模型中仍存在以下缺陷:
· 未有效检测出长划痕
· 捕捉了反光边缘
· 车间地板上的划痕也被包含在内
为解决这些问题,可以采取以下解决措施:
· 调整扩展程序参数以涵盖长度更长的划痕
· 在所生成的场景中加入零件的更多角度
· 改变照明和背景场景
另一个办法是使用真值图像来强化合成数据。虽然 Replicator 会对文件进行自动注释,但该示例中仍使用了 Roboflow 的内置工具来进行手动注释。
图 10:Roboflow 内置用于手动注释图像的工具
通过上述调整可训练该模型于每张验证图像中发现更多的划痕,甚至能在置信度阈值更高的情况下来完成此操作。
图 11:通过 Roboflow 用户界面调整模型参数
入门
事实上在现实世界中,并非总是能够获得足够的真值图像。开发人员可以使用 NVIDIA Omniverse Replicator 生成的合成数据来缩小仿真与现实之间的差距。
如若想要自行生成合成数据,开发人员需先下载 NVIDIA Omniverse。
(https://developer.nvidia.cn/omniverse/get-started)
用户可以从 GitHub 下载并安装参考扩展程序,并使用 Omniverse Code 来探索相关工作流,而后通过修改代码来构建自定义的缺陷检测生成工具。此外,用户还可以通过 Omniverse Exchange 上的缺陷检测演示包来访问配套的 USD 文件和样本。