Omniverse合成数据生成【城市交通场景】

2023-11-23 12:20

本文主要是介绍Omniverse合成数据生成【城市交通场景】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

智慧城市是城市生活的未来。 然而,它们可能给城市规划者带来各种挑战,尤其是在交通领域。 为了取得成功,城市的各个方面—从环境和基础设施到商业和教育—必须在功能上整合。

这可能很困难,因为单独管理交通流量是一个复杂的问题,充满了拥堵、事故应急响应和排放等挑战。

为了应对这些挑战,开发人员正在创建具有现场可编程性和灵活性的人工智能软件。 这些软件定义的物联网解决方案可以为交通管理、车牌识别、智能停车和事故检测等实时环境提供可扩展、可立即部署的产品。

尽管如此,构建有效的人工智能模型说起来容易做起来难。 遗漏值、重复示例、错误标签和错误特征值是训练数据的常见问题,可能导致模型不准确。 对于自动驾驶汽车来说,不准确的结果可能是危险的,还可能导致交通系统效率低下或城市规划不良。

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 

1、实时城市交通的数字孪生

NVIDIA Metropolis 合作伙伴、端到端 AI 工程公司 SmartCow 在 NVIDIA Omniverse 上创建了交通场景的数字孪生。 这些数字孪生生成合成数据集并验证人工智能模型的性能。

该团队通过使用 NVIDIA Omniverse Replicator 生成合成数据,解决了由于缺乏足够数据来构建优化的 AI 训练管道而导致的常见挑战。

所有 Omniverse 扩展的基础是通用场景描述,称为 OpenUSD。 USD 是一种功能强大的交换工具,具有高度可扩展的属性,虚拟世界就建立在其基础上。 智慧城市的数字孪生依赖于高度可扩展和可互操作的 USD 功能来实现准确模拟现实世界的大型高保真场景。

Omniverse Replicator 是 Omniverse 平台的核心扩展,使开发人员能够以编程方式生成带注释的合成数据,以引导 AI 模型感知的训练。 当真实数据集有限或难以获取时,合成数据特别有用。

通过使用数字孪生,SmartCow 团队生成了准确代表现实世界交通场景和违规情况的合成数据。 这些合成数据集有助于验证人工智能模型并优化人工智能训练管道。

2、构建车牌检测扩展

智能交通管理系统面临的最重大挑战之一是车牌识别。 开发一个适用于具有不同规则、法规和环境的多个国家和城市的模型需要多样化且强大的训练数据。 为了为模型提供充足且多样化的训练数据,SmartCow 在 Omniverse 中开发了一个扩展来生成合成数据。

Omniverse 中的扩展是可重用的组件或工具,可提供强大的功能来增强管道和工作流程。 在 Omniverse Kit 中构建扩展后,开发人员可以轻松地将其分发给客户,以便在 Omniverse USD Composer、Omniverse USD Presenter 和其他应用程序中使用。

SmartCow 的扩展名为车牌合成生成器 (LP-SDG),它使用环境随机化器和物理随机化器来使合成数据集更加多样化和真实。

环境随机发生器模拟数字孪生环境中的照明、天气和其他因素(例如雨、雪、雾或灰尘)的变化。 物理随机发生器模拟可能影响模型识别车牌号码的能力的划痕、污垢、凹痕和变色。

3、用Omniverse Replicator 生成合成数据

数据生成过程从在 Omniverse 中创建 3D 环境开始。 Omniverse 中的数字孪生可用于许多模拟场景,包括生成合成数据。 最初的 3D 场景是由 SmartCow 的内部技术艺术家构建的,确保数字孪生尽可能与现实相匹配。

生成场景后,将使用域随机化来改变光源、纹理、相机位置和材质。 整个过程是使用内置的 Omniverse Replicator API 以编程方式完成的。

生成的数据与边界框标注和训练所需的其他输出变量一起导出。

4、模型训练

初始模型使用 3,000 张真实图像进行训练。 目标是了解基线模型性能并验证正确的边界框尺寸和光线变化等方面。

接下来,该团队进行了实验,以比较综合生成的 3,000 个样本、30,000 个样本和 300,000 个样本的数据集的基准。

SmartCow 软件工程师 Natalia Mallia 表示:“凭借 Omniverse 获得的真实感,基于合成数据训练的模型有时会优于基于真实数据训练的模型。” “使用合成数据实际上消除了真实图像训练数据集中自然存在的偏差。”

为了提供准确的基准测试和比较,该团队在对三种大小的综合生成的数据集进行训练时,将数据随机化到一致的参数(例如一天中的时间、划痕和视角)。 真实世界数据不会与合成数据混合进行训练,以保持比较准确性。 每个模型都根据大约 1,000 张真实图像的数据集进行了验证。

SmartCow 的团队将 Omniverse LP-SDG 扩展的训练数据与 NVIDIA TAO 集成,后者是一个低代码 AI 模型训练工具包,利用迁移学习的力量来微调模型。

该团队使用 NGC 目录中提供的预训练车牌检测模型,并使用 TAO 和 NVIDIA DGX A100 系统对其进行微调。

5、使用 NVIDIA DeepStream 进行模型部署

然后使用 NVIDIA DeepStream SDK 将 AI 模型部署到自定义边缘设备上。

然后,他们实施了一个持续学习循环,其中包括从边缘设备收集漂移数据,将数据反馈回 Omniverse Replicator,并合成可重新训练的数据集,这些数据集通过自动标记工具传递并反馈回 TAO 进行训练。

这个闭环管道有助于创建准确有效的人工智能模型,用于自动检测每条车道的交通方向以及任何异常时间停滞的车辆。

6、结束语

用于生成合成数据集和验证人工智能模型性能的数字孪生工作流程是为智慧城市交通构建更有效的人工智能模型的重要一步。 使用合成数据集有助于克服数据集有限的挑战,并提供准确有效的人工智能模型,从而实现高效的交通系统和更好的城市规划。


原文链接:Omniverse合成数据生成 - BimAnt

这篇关于Omniverse合成数据生成【城市交通场景】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417912

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑