当前位置: 首页 > 科技观察

一文看懂DRIVE Replicator:合成数据生成加速自动驾驶汽车的开发和验证

时间:2023-03-13 23:05:28 科技观察

一文读懂DRIVEReplicator:Syntheticdatagenerationacceleratesthedevelopmentandverificationofautomaticcars最近在长尾场景训练方面的进展和相关经验,特别是探索开发者如何使用DRIVEReplicator生成多样化的合成数据集,以及准确的地面实况数据标签,以加速自动驾驶汽车的开发和验证。讲座内容干货满满,引起了业界的广泛关注和讨论。本文对本次分享的精华进行总结整理,帮助大家更好的理解DRIVEReplicator以及自动驾驶感知算法的合成数据生成。图1在过去一年中,NVIDIA在使用DRIVEReplicator生成用于训练自动驾驶感知算法的合成数据集方面取得了积极进展。图1显示了NVIDIA目前正在应对的一些长尾场景挑战:倒车摄像头附近的弱势道路使用者(VRU),第一行左侧。VRU是任何自动驾驶感知算法的重要对象类。在这个例子中,我们专注于检测后方鱼眼摄像头附近的儿童。这是一个重要的安全用例,因为现实世界的数据采集和数据标记非常具有挑战性。第一行中间图片,事故车辆检测。自动驾驶感知算法需要接触罕见和不常见的场景,以帮助提高物体检测算法的可靠性。事故车辆在现实世界的数据集中很少见。DRIVEReplicator帮助开发人员在各种环境条件下创建意外事件,例如汽车翻车,以帮助训练此类网络。第一行右图,交通标志检测。在其他情况下,手动标记数据既费时又容易出错。DRIVEReplicator可帮助开发人员在各种环境条件下生成数百个交通标志和交通信号灯的数据集,并快速训练网络以解决现实世界的多样性问题。最后,还有许多在城市环境中不常见的物体,例如某些车辆和某些类型的车辆。DRIVEReplicator帮助开发人员增加这些稀有对象在数据集中的频率,并帮助使用有针对性的合成数据增强现实世界的数据收集。以上功能是通过NVIDIADRIVEReplicator实现的。了解DRIVEReplicator及其相关生态DRIVEReplicator是用于自动驾驶仿真的DRIVESim工具套件的一部分。DRIVESim是NVIDIA领先的基于Omniverse的自动驾驶汽车模拟器,可实现大规模的物理精确传感器模拟。开发人员可以在工作站上运行可重复的模拟,然后在数据中心或云中扩展到批处理模式。DRIVESim是一个模块化平台,建立在USD等强大的开放标准之上,允许用户通过Omniverse扩展引入自己的功能。DRIVESim包含多个应用程序,包括DRIVEReplicator。DRIVEReplicator主要提供一系列功能,专注于生成用于自动驾驶汽车训练和算法验证的合成数据。DRIVESim和DRIVECon??stellation还支持自动驾驶各个层面的全栈仿真,包括软件在环、硬件在环等在环仿真测试(模型、植物、人,和更多)。DRIVESim与传统自动驾驶仿真工具的区别在于,在创建合成数据集时,传统自动驾驶仿真工具往往结合专业的游戏引擎来还原足够真实的场景。然而,对于自动驾驶仿真来说,这还不够,还需要解决物理精度、可重复性和规模化等核心要求。图2在进一步介绍DRIVEReplicator之前,先介绍几个相关概念(如图2所示),尤其是Omniverse,以帮助大家更好地理解DRIVEReplicator相关的底层技术支持。首先,了解NVIDIA用于大规模模拟的引擎Omniverse。Omniverse建立在皮克斯开发的USD(通用场景描述,一种用于描述虚拟世界的可扩展通用语言)之上。USD是整个模拟和模拟所有方面(包括传感器、3D环境)的唯一真实来源。为合成数据集奠定基础。其次,Omniverse提供实时光线追踪效果,为DRIVESim中的传感器提供动力。RTX是NVIDIA在计算图形方面的主要进步之一,它利用专注于物理精度的优化光线追踪API来确保原生建模的复杂行为(例如多重反射、多路径效应、滚动快门和镜头失真)。第三,NVIDIAOmniverse是一个易于扩展的开放平台,专为虚拟协作和物理上精确的实时模拟而设计,能够在云端或数据中心运行工作流,实现多GPU和节点并行渲染和数据生成。第四,Omniverse和DRIVESim采用开放式模块化设计,围绕该平台形成了庞大的合作伙伴生态。这些合作伙伴可以提供3D资产、传感器、车辆和交通模型、验证工具等。第五,Omniverse协作的核心是Nucleus,它具有数据存储和访问控制功能,Nucleus可以作为多个用户的集中内容存储库,支持DRIVESim将运行时与内容分离,改进版本控制并为所有资产、场景和元数据创建单一参考点。DRIVESim是一个平台。NVIDIA采用生态合作方式搭建平台,让合作伙伴为这个通用平台贡献自己的力量。目前,DRIVESim已经建立了庞大的合作伙伴生态,涉及3D资产、环境传感器模型、验证等领域。借助DRIVESimSDK,合作伙伴可以轻松引入自己的传感器、交通和车辆动力学模型,并扩展其核心仿真能力。开发人员不仅可以在Omniverse中编写扩展以轻松添加新功能,而且还可以享受在通用平台上进行开发的好处——Omniverse与几个提供自动驾驶开发流程相关重要工作的重要合作伙伴相连。如何使用DRIVEReplicator生成合成数据集和实值数据接下来,我将解释以上内容如何组合,以及DRIVEReplicator生成合成数据的五个主要工作步骤(如图3所示):内容(内容)—DRIVESimRuntime—传感—随机化—数据写入器。图3模拟过程的第一步是存储在Nucleus服务器上的3D内容和资产。这些资产被传递给DRIVESimRuntime,这是执行场景、交通模型、车辆动力学和行为的核心技术。DRIVESimRuntime可与基于RTX光线追踪的相机、激光雷达、毫米波雷达和USS感知技术配合使用。下一步是通过运动、行为、光照和外观的随机化为数据引入多样性。对于闭环仿真,下一步,通常是车辆I/O,由传感器协议、CAN消息和虚拟ECU(将重要信息发送到自动驾驶堆栈以关闭循环)组成,将仿真连接到自动驾驶堆栈.对于合成数据生成,这是一个开环过程,它将随机传感器数据发送到数据编写器,数据编写器输出用于训练自动驾驶感知算法的地面实况标签。上述步骤代表了合成数据生成的完整工作流程。内容如上所述,模拟过程的第一步是存储在Nucleus服务器上的3D内容和资产。这些内容来自哪里?如何获得?有什么标准或要求吗?在过去几年中,NVIDIA与多个内容合作伙伴合作,构建了一个庞大的3D资产提供商生态系统,包括车辆、道具、行人、植被和3D环境,随时可以在DRIVESim中使用。需要注意的一点是,即使你从市场上拿到了这些资产,也不代表你就可以开始仿真了,你还需要让这些资产做好仿真准备,这就是SimReady的用武之地。扩展的一个重要部分将与3D资产提供商合作,并为他们提供所需的工具,以确保某些约定、命名、资产绑定、语义标签(semanticlabels)和物理属性。SimReadyStudio帮助内容提供商将其现有资产转换为可加载到DRIVESim上的模拟就绪资产,包括3D环境、动态资产和静态道具。那么,什么是SimReady?您可以将其视为一个转换器,帮助确保DRIVESim和Replicator中的3D资产准备好支持端到端仿真工作流程。SimReady有几个关键要素,包括:每个资产必须遵循一组关于方向、命名、几何等约定的规范以确保一致性;语义标签和明确定义的元素。这对于生成感知的真实标签至关重要;支持刚体物理和动力学,使生成的数据集看起来逼真,并在运动学上缩小了模拟与现实之间的差距;下一步是确保资产遵循特定的材料和命名约定,以确保资产为RTX光线追踪做好准备,并对LiDAR、毫米波雷达和超声波传感器等主动传感器做出真实响应;另一个常见方面是操纵3D资产以实现照明变化、门驱动、行人步行操作等;最后一部分是实时高保真传感器仿真的性能优化。基于以上的认识,我们来看看如何使用SimReadystudio获取可以在DRIVESim中使用的资产的过程。假设流程从从3D市场购买资产开始。第一步是将此资产导入SimReadyStudio。这也可以分批进行,或者批量导入多个资产来完成这一步。导入后,这些内容资产的材料名称将更新,它们的材料属性也会更新,扩展到包括反射率、粗糙度等属性。这对于确保物理逼真的渲染数据质量以及确保材质系统与所有RTX传感器类型交互(而不仅仅是那些在可见光谱中运行的传感器)非常重要。下一步涉及更新语义标签和标记。为什么这一步很重要?拥有正确的标签意味着使用资产生成的数据可用于训练AV算法。此外,DRIVESim和Omniverse使用Nucleus作为中央资产存储库。Nucleus上有数以千计的内容资产,带有相关缩略图的可搜索标签将帮助新用户更轻松地找到资产。接下来,开始定义对象的碰撞体积和几何形状,并观察此内容资产的物理行为。然后修改对象的物理和质量属性以创建所需的行为。该过程的最后一步是验证资产以确保这些内容资产符合正确的约定。现在可以保存模拟就绪的资产并将其重新导入到NVIDIAOmniverse和DRIVESim中。通过USD构建场景的一大优势在于,前面步骤中创建的所有元数据都随最终资产一起传输,并分层链接到主要对象的USD,为后续生成多样化的合成数据集奠定基础。图4回到自动驾驶汽车模拟的内容创建,通常有几种方法可以从地图数据创建环境(参见图4)。一种选择是使用MathWorks的Roadrunner工具在开放的NVIDIADRIVE地图(一种多模式地图平台)上创建3D环境。这一步的输出,连同语义地图信息、信号时序等,随后被传输到SimReadyStudio,3D环境被转换成可以加载到DRIVESim上的资产。另一种选择是使用来自自动驾驶车队的体素地图数据,并提取语义地图信息,例如车道、路标和其他元数据。此信息通过数字孪生创建,生成可加载到DRIVESim上的资产。以上两种类型的USD环境将用于支持自动驾驶汽车的端到端(E2E)仿真测试和合成数据生成工作流。DRIVESimRuntime接下来介绍仿真的第二步——DRIVESimRuntime,它为我们在DRIVEReplicator中使用的所有功能生成合成数据集奠定了基础。DRIVESimRuntime是一个开放、模块化和可扩展的组件。这在实践中意味着什么(见图5)?首先,它建立在开发人员为场景中的对象定义特定位置、运动和交互的场景之上。这些场景可以用Python或使用场景编辑器UI定义,并可以保存以备后用。其次,它支持通过DRIVESimSDK与自定义车辆动力学包集成,作为过程中的一个步骤或作为与DRIVESim2.0的联合仿真。第三,交通模式。DRIVESim具有丰富的车辆模型接口,借助Runtime,开发人员可以引入自己的车辆动力学或配置现有的基于规则的交通模型。第四,动作系统,其中包含丰富的预定义动作库(例如变道)、可用于创建不同对象相互交互的场景的时间触发器等。从图5到这里,简单回顾一下前面的内容:仿真过程的第一步,将SimReady转换好的准备仿真的3D内容和素材,存储在Nucleus服务器上。在第二步中,该材料被传递给DRIVESimRuntime,这是执行场景、交通模型、车辆动力学和行为的核心技术,并构成生成合成数据集的所有后续功能的基础。传感在生成数据之前使用传感器设置目标测试车辆。使用EgoConfigurator工具,开发人员可以选择特定的车辆并将它们添加到场景中。此外,开发者还可以在场景中移动车辆,为车辆添加传感器。EgoConfigurator工具支持通用和Hyperion8传感器。将传感器添加到车辆后,开发人员还可以更改FOV、分辨率、传感器名称等参数,并直观地配置车辆上的传感器位置。在创建数据生成场景之前,用户还可以从传感器POV查看预览并以3D形式可视化视野。该工具可以帮助开发人员快速制作不同配置的原型,并可视化感知任务可以实现的覆盖范围。随机化(DomainRandomization)现在简单介绍模拟过程的第四步,域随机化,如何通过运动、行为、光照和外观的随机化来给数据引入多样性。这涉及另一种创建场景的方法,即使用Python。DRIVEReplicator的PythonAPI允许开发人员查询开放的NVIDIADRIVEMap并根据上下文放置一系列静态和动态资产。一些随机化器将专注于如何将自动驾驶汽车从一个点传送到下一个点,如何在自动驾驶汽车周围生成物体,从而生成不同的合成数据集。这些听起来很复杂的操作很容易完成,因为用户可以直接控制USD场景和该环境中的所有对象。创建用于训练的合成数据集的另一个重要步骤是能够引入3D场景外观的变化。上面也提到了USD的强大功能,比如通过USD搭建的场景,可以让开发者分层访问模拟中的每一个元素。SimReady的API使用USD快速设置场景中的特征。我们来看一个例子(见图6):路面有些湿润,但是当我们设置不同的参数时,路面的湿润程度会发生变化。我们可以对太阳方位角和太阳高度角等进行类似的更改,以在一系列环境条件下生成真实的数据集。另一个重要的点是能够打开照明和外观变化,所有这些都可以通过SimReadyAPI和USD获得。图6DRIVESim的一个关键优势是RTX传感器工作流程,它支持多种传感器(见图7),包括相机、激光雷达、通用雷达和USS的通用和现成模型。此外,DRIVESim完全支持NVIDIADRIVEHyperion传感器套件,允许用户在虚拟环境中开始算法开发和验证。此外,DRIVESim具有功能强大且用途广泛的SDK,使合作伙伴能够使用NVIDIA的光线追踪API来实施复杂的传感器模型,同时保护其IP和专有算法。生态系统多年来不断发展壮大,NVIDIA正在与合作伙伴合作,将成像雷达、FMCW激光雷达等新型传感器引入DRIVESim。图7数据写入器(DataWriter)现在,将焦点转移到生成ground-truth数据以及如何将这些信息可视化。这涉及模拟流程的最后一步,即数据写入器。在此过程中,随机传感器数据被发送到数据写入器,数据写入器输出用于训练自动驾驶感知算法的地面实况标签。数据编写器是一个Python脚本,用于生成训练自动驾驶感知算法所需的真实标签。NVIDIADRIVEReplicator附带模板编写器,例如BaseWriter和KITTIWriter。其中,basewriter涵盖了广泛的真实数据标签,包括对象类、2D和3D中的紧密和松散边界框、语义和实例掩码、深度输出、遮挡、法线等。同样,还有lidar/normal雷达编写器,可用于将激光点云数据导出为numpy数组,或导出为任何相关的自定义格式以及边界框、语义和对象标签。这些编写器为开发人员提供了基于自定义标记格式配置自己的编写器并扩展数据生成工作的示例。最后,我想介绍一款由Omniverse团队创建的令人兴奋的软件ReplicatorInsight。ReplicatorInsight是一个基于OmniverseKit构建的独立应用程序,可用于检查渲染的合成数据集并覆盖各种地面实况标签以进行训练。ReplicatorInsight支持所有合成数据生成用例,包括DRIVE、Isaac和OmniverseReplicator。让我们看一个示例(见图8):在这个可视化工具中,用户可以加载DRIVEReplicator生成的数据,并为场景中的不同对象类别打开和关闭不同的地面实况标签。图8使用此可视化工具,用户可以播放视频、梳理数据集,甚至可以比较深度和RGB数据等不同视图。用户还可以更改播放帧率和深度范围等参数,或者在自动驾驶汽车训练之前快速可视化数据集。这将帮助开发人员轻松理解新的真实标签类型并解析复杂的数据集。总的来说,这是一个强大的工具,让用户每次查看数据(无论是真实数据还是合成数据)时都能获得新的见解。总结以上总结了过去一年DRIVEReplicator的最新进展,分享了开发者如何利用DRIVEReplicator生成多样的合成数据集和准确的真实价值数据标签,加速自动驾驶汽车的研发和验证。NVIDIA在为各种实际用例生成高质量传感器数据集方面取得了令人振奋的进展,我期待着在未来与您交谈!