作者:Xinxin Zhou,Changbin Wu,Dong Lv,Haoran Qi and Peipei Han
来源:Zhou, X., Wu, C., Lv, D., Qi, H. and Han, P., 2021, April. Object Detection and Spatial Location Method for Monocular Camera Based on 3D Virtual Geographical Scene. In 2021 IEEE 6th International Conference on Cloud Computing and Big Data Analytics (ICCCBDA) (pp. 488-495). IEEE.
原文:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9442542
代码、数据和视频:
系列文章目录:
上一篇:
论文笔记(十六):Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning
下一篇:
随着视频监控和三维地理信息系统(GIS)的快速发展,物体检测和空间定位已逐渐成为各种应用的支撑能力之一。传统监控视频与三维地理信息融合的主要应用模式是将视频投射到三维地理场景中,形成三维虚拟地理场景。研究基于三维虚拟地理场景的物体检测和空间定位方法,可以显著提高智能化和空间化应用能力。本文提出了一种基于三维虚拟地理场景的单目摄像头物体检测和空间定位方法,实现了单目摄像头物体检测和地理坐标计算。该方法由三种算法组成:(1)三维虚拟地理场景的融合构建算法;(2)基于卷积神经网络的物体检测算法;(3)基于三维虚拟地理场景的坐标计算算法。经过定位误差和应用实验验证,该方法的定位精度误差与视距呈正相关,实现了物体检测和空间定位。该方法适用于各种三维地理场景,能有效提高监控中物体的空间理解能力。它对各种三维地理信息系统都有应用价值。
关键词——三维虚拟地理场景, 单目摄像头, 物体检测,空间定位,监控视频
近年来,随着三维地理信息系统(GIS)的发展,物理世界被广泛地表现在三维地理场景中。三维地理场景可以模拟物理世界的地形、地貌和建筑特征,具有多层次的细节特征[1]。三维虚拟地理场景是将监控视频与三维地理场景空间相结合的虚拟世界信息源。它具有虚实结合、实时显示等特点。学者们在监控视频与三维虚拟地理场景融合、物体理解、视频GIS等方面进行了研究[2]-[3]。它具有广泛的应用价值,适应于三维智慧城市、数字孪生、城市交通监测、自然资源监测与监管等[3]-[4]。
依靠单目监控视频进行物体检测和空间定位属于三维物体检测的研究领域,是一种适合大规模定位场景的毛细血管近似定位方法。基于单眼监控的目标检测和空间定位是三维目标检测的研究领域[5]。它是一种粗大误差的近似定位方法,适用于大规模定位场景。在大规模定位场景中,单纯的视觉方法通常是基于双目视觉方法进行目标识别和空间定位。在大规模定位场景中,纯视觉方法通常以双目视觉方法为基础进行目标识别和空间定位[6]-[8]。同时,多源视觉和深度信息融合是大规模定位的另一个关键方法,如激光扫描技术获得高精度三维点云数据[9],多传感器三维传感技术在自动驾驶领域为三维空间[10]避障提供支持。大规模定位场景中的标准3D物体检测模型网络包括3D Voxel Pattern(3DVP)[11]。深度MANTA网络[12] MV3D网络[13],3DOP网络[14].这些算法都是依靠雷达获得的点云和RGB图像来预测三维边界盒的方向和空间位置。
过去基于单眼监控视频的三维目标检测中缺乏深度信息,限制了三维目标的检测和定位精度,尤其是对遮挡、截断和远处目标的检测。然而,基于单眼视觉的三维目标检测算法具有独特的优势,如单体传感器成本低、对硬件条件要求低、各种监控视频的应用场景广泛等。因此,学者们从纯视觉或地理信息方法入手,开发基于单眼视觉的三维目标检测算法。研究方法大致分为三类。(1)根据区域提取,生成物体候选帧,结合一系列定义的先验信息回归精确的三维检测帧[15];(2)利用CNN网络直接提取目标的三维特征信息,然后结合模板匹配、重投影、深度估计等方法解决位置信息,得到精确的三维检测帧[5];(3)基于三维地理场景融合的视频GIS研究[2]。值得进一步指出的是,现有方法复杂,且基本参数要求较高,且现有研究方法均面向特定的小空间,尚未扩展到大规模的三维地理场景,部分应用于三维地理的场景将场景假设为抽象的平面变成理论,方法普遍存在缺陷和推广价值。因此,如何从三维地理场景的角度开发一种简单而普遍适用的方法,可以有效提高视频中目标的空间理解,对各种三维地理信息具有重要的应用价值。
物体检测是一种利用计算机技术对给定图像上的物体进行分类和准确定位的技术。它已被广泛应用于行人检测、人脸检测、文字检测和交通标志/信号灯检测、遥感物体检测[16]。基于卷积神经网络的物体检测算法是目前主流和新兴的检测方法,它通常包含两个核心子算法–目标分类算法(Classification)和目标定位算法(Localization)。目标分类算法(Classification)检测图像上是否有目标物体,并以分数结合类别标签的形式判断目标物体在图像上出现的可能性。目标定位算法(分类)准确定位目标物体在图像上出现的位置,并使用一个矩形封闭盒来表示目标物体的位置信息。基于卷积神经网络模型的比较典型的物体检测算法一般分为两类(图4)。以R-CNN为代表的两阶段物体检测算法,Fast R-CNN ,YOLO和SSD是一阶段物体检测算法的代表。双阶段物体检测算法的检测过程分为两个阶段。在第一阶段,首先生成一个包含目标物体的候选区域(Region Proposals)。在这个阶段,检测区域被缩小以获得目标物体的大致位置。第二阶段是根据第一阶段获得的候选区域对目标物体进行分类和准确定位。以YOLO和SSD为代表的单阶段物体检测算法,这种类型的算法不需要区域建议,就可以获得目标物体的类别及其在图像上的准确位置信息。两阶段物体检测算法首先生成一个区域建议以缩小检测范围。与单阶段物体检测算法相比,其检测精度更高。单阶段物体检测算法不需要区域建议阶段,在检测速度上有更多优势[17]。
城市监控视频领域的智能分析,主要包括物体检测、跟踪、行为理解等,分析结果多为图像坐标[18]。在应用过程中,图像坐标无法与物理世界结合,应用价值无法得到充分发挥。三维虚拟地理场景与视频的融合可以改善这一困境[19]。三维虚拟地理场景是由三维地理场景和监控视频的融合所表达的信息源。它提供了一个单眼摄像机无法实现的场景深度信息源,以实现目标物体的空间定位,可以近似克服视觉深度信息无法计算的问题[20]。因此,本文提出了一种基于三维虚拟地理场景的单目摄像头物体检测和空间定位方法(图1)。该方法由三种算法组成:(1)三维虚拟地理场景的融合构建算法;(2)基于卷积神经网络的物体检测算法;(3)基于三维虚拟地理场景的坐标计算算法。
三维虚拟地理场景的融合构建算法,旨在实现三维虚拟地理场景与监控摄像机拍摄的视频的空间融合表达。它包括三个步骤,即:三维虚拟地理场景构建、虚拟摄像机初始化和三维虚拟地理场景图像生成。算法步骤(1),三维虚拟地理场景构建,是实现物理世界虚拟化的数据基础,是提取深度信息的信息源。其规模和空间精度直接影响到后期空间定位的准确性。因此,本文将讨论常见的三维虚拟地理学。场景构建方法进行说明。算法步骤(2),初始化虚拟摄像机,即根据采集到的摄像机外部方位元素,在三维虚拟地理场景中形成虚拟摄像机点,用于视频屏幕投射。算法步骤(3),生成三维虚拟地理场景图像,即视频投射到三维虚拟地理场景后,从虚拟摄像机的第一人称视角形成的图像。该图像将被用作基于卷积神经网络的物体检测算法的输入预测图像。
三维地理场景,相当于三维城市建模,是对城市环境中普通物体的三维几何结构的数字化表达[21]。空间数据采集技术的快速发展为三维虚拟地理场景的建设和应用提供了强有力的支持。它促进了三维虚拟地理场景应用的广度和深度。三维虚拟地理场景的构建主要可以通过两种方法实现。一种是基于传统的4D产品构建三维虚拟地理场景(图2(a));另一种是基于新的测绘技术构建三维虚拟地理场景(图2(b))。基于传统4D产品构建三维虚拟地理场景,如高分辨率卫星影像、微卫星影像、斜向航空摄影等[22],用于三维GIS建模。在此基础上,基于新的测绘技术构建三维虚拟地理场景,通常采用激光雷达[23]、地面数据、公共地理数据[24]、基于多视角云的自动建模[25]、基于激光雷达数据和航空影像数据的融合建模[26]、基于摄影测量数据的建模[1]等多种方法:如建立城市模型可用于城市规划、环境模拟、灾害应急和导航等诸多领域。
在三维地理场景中初始化虚拟摄像机就是构建三维虚拟地理场景。通过在三维地理场景中构建虚拟摄像机对象来恢复摄像机的姿态,在此基础上,将摄像机拍摄的图像准确映射到三维地理场景中。
初始化虚拟相机需要三个参数,视角参数、投影方向参数和场角参数(如表一所示)。形式表达如图3所示。在地面空间矩形坐标系中,三个直线元素描述了摄影中心在坐标系中的位置 ( 、 、 ) (_、_、_) (XW、YW、ZW),三个角度元素通常根据采用的角度体系用相应的角度表示。(1) 视点参数定义了虚拟摄像机在三维虚拟地理场景中的坐标位置 ( 0 , 0 , 0 ) (_0, _0, _0) (x0,y0,z0)。
(2) 投影方向参数决定了映射图像的空间姿态,如果图片及其图像空间辅助坐标系O-v-u-w以 的角度绕第一轴(称为主轴)的方向倾斜,其数值范围为0-180°。在此基础上,画面以 的角度绕副轴(u轴通过 的角度绕第一轴旋转)横向倾斜,取值范围为0-180°;画面以 的角度绕第三轴(w轴通过 和 的角度旋转,即主光轴)旋转,取值范围为0-360°。因此,我们此时定义的角度元素(,,)可以看作是图像在以v轴为主轴的(,,)系统中的空间姿势的表达。
(3)视场参数用于确定映射图像的范围,包括水平视场( θ h \theta_h θh)和垂直视场( θ v \theta_v θv),它是根据监控摄像机的焦距( f f f)和成像芯片的尺寸(宽 w w w,高 h h h,单位 m m mm mm)计算的,见公式(1)和(2),取值范围为0~180°。
θ h = 2 arctan ( w / 2 f ) ( 1 ) \theta_h = 2 \arctan(w/2f)(1) θh=2arctan(w/2f)(1)
θ v = 2 arctan ( h / 2 f ) ( 2 ) \theta_v = 2 \arctan(h/2f)(2) θv=2arctan(h/2f)(2)
三维虚拟地理场景是由相机拍摄的图像和三维地理场景之间的融合表达产生的。初始化虚拟相机所需的参数是通过获得相机的外部方向元素、焦距和相机成像屏幕的大小来计算的。在此基础上,模拟出一个三维地理场景,使之与物理世界中的相机姿态和物理参数相一致。虚拟摄像机。虚拟相机通过投影将相机拍摄的图像准确地映射到三维地理场景中。基于卷积神经网络的物体检测算法。
基于卷积神经网络的物体检测算法旨在预测和识别三维虚拟地理场景中的各种目标物体,并获得外包络帧的屏幕像素大小 ( , ) (,) (W,H),外包络左上角的锚点 ( 0 , 0 ) (_0,_0) (i0,j0),目标类型。由 = 0 + / 2 = _0 + /2 i=i0+W/2 , = 0 + / 2 = _0 + /2 j=j0+H/2计算目标对象的屏幕中心像素坐标 ( , ) (,) (i,j)。
基于三维虚拟地理场景的坐标计算算法旨在计算检测到的目标物体的像素坐标 ( , ) (, ) (u,v)转换为世界坐标 ( , , ) (_, _, _) (xW,yW,zW),转换机制依靠基于三维虚拟地理场景的逆透视变换计算,实现屏幕坐标与世界坐标的转换。地理信息系统平台的三维场景组件提供了坐标转换的方法,如:可以直接基于SuperMap平台的IScene场景类 “Camera.main.ScreenToWorldPoint((, ))”进行转换,或者,也可以基于ArcGIS平台ArcGlobe二次开发接口IPoint.pPnt.Project(IGeoDataset.SpatialReference),需要给出像素坐标 ( , ) (,) (u,v)和三维地理场景的空间参考信息。该算法分为两部分:物体像素坐标计算、像素坐标转换为地理坐标。算法的具体实现见下面的伪代码。
要在这个版本所包含的环境中训练高性能策略并对其进行交互式评估,请参见我们的训练Colab[3]。
Brax包括几种常见的强化学习算法,这些算法的实现是为了利用JAX的并行性和即时编译能力。这些算法是:
每种算法在某些方面都是独特的。PPO是一种政策性RL算法,SAC是非政策性的,ES是一种黑箱优化算法,而APG利用了环境提供的奖励的可差异性。这种算法覆盖的广度显示了Brax的灵活性,以及它加速研究和降低成本的潜力。在这项工作中,我们把实验分析的重点放在PPO和SAC上(见第6节),而把ES和APG的分析推迟到未来的工作中。
为了获得基于JAX的分批环境的所有好处,可以在加速器上运行,我们建立了一个定制的PPO实现。特别是环境数据(rollouts)是在加速器上生成的,随后由SGD优化器处理。这些数据不需要离开加速器,也不需要在不同进程之间进行上下文切换。整个训练循环(环境滚动+SGD更新)发生在一个不间断的jitted函数中。
训练的过程如下:
算法的性能/吞吐量在很大程度上取决于超参数(如批处理量、小批处理量、优化历时的数量)。我们注意到,对于最佳的超参数,我们对PPO的实现足够高效,主要的瓶颈来自于环境(例如,75%的时间用于运行蚂蚁的环境),尽管环境本身相当快。
与PPO不同的是,SAC使用一个重放缓冲器来进行批次采样。为了利用Brax的全部潜力,我们实现了一个带有重放缓冲器的自定义SAC,它完全生活在一个加速器上。这使得整个训练过程可以被编译成一个单一的jitted函数,并在没有任何干扰的情况下运行。训练的过程大致如下:
SAC比PPO的样本效率高得多,因此我们观察到训练吞吐量现在变成了SGD更新的瓶颈(12%用于运行环境,10%用于重放缓冲区,78%用于SGD更新)。由于SGD更新对多个核心的扩展性较差,使用1个以上的加速器核心带来的好处微乎其微,因此最经济的设置是用一个加速器核心实现的。
为了实现ES,我们遵循与PPO/SAC相同的范式:我们在一个加速器上不间断地运行一切,使所有的处理都包含在加速器中。
训练的过程如下:
该算法花了>99%的运行时间来评估环境步骤。
作为如何利用我们引擎的可区分性的概念证明,我们提供了一个APG实现。训练比以前的算法要简单得多:
编译完梯度更新后,该算法将剩余的大部分时间用于评估梯度函数。这种算法没有前三种算法成熟,目前没有产生运动步态,相反,似乎很容易在我们提供的环境中陷入局部最小值。通过长轨迹进行微分是一个活跃的研究领域[38, 21, 18],并且已知很难优化[39, 40],因此我们将更先进的可微分算法推迟到未来的版本。
作为我们发布的一部分,我们为所有的环境包括了高性能的超参数。这些超参数通常在几秒钟到几分钟内用标准加速器解决他们的环境。关于我们的超参数实验的详尽列表,见我们的 repo[41]。关于每个环境的最佳20个超参数设置在SAC和PPO上详尽的超参数扫描的性能图,见附录D。
通过利用JAX的矢量化和设备并行化基元,我们可以通过在加速器内和跨加速器之间分配环境计算,轻松地将Brax扩展到每秒数亿步的性能。图2描述了本版本中的环境套件在一个特定的快速、现代加速器集群(TPUv3的4x2拓扑结构)上的扩展曲线,以及Ant环境在各种加速器和TPU拓扑结构下的性能扩展。作为参考,Colab TPU实例目前提供2x2 TPUv2加速器的有限免费使用。
在引擎之间进行完全的苹果对苹果的比较是困难的,主要是因为最广泛使用的引擎并行化的主要方式是通过在CPU上定制多线程线束,或者通过分布式聚集无头工人与附加加速器–通常是定制的设置,大多数从业者无法使用。因此,将Brax的Ant环境编译到TPUv3 8x8加速器上运行(-每秒数亿步)与从业者在单线程机器上运行OpenAI健身房MuJoCo-ant的典型用例(-每秒数千步)相比,可能并不公平。虽然我们包括了在大型TPU集群上部署Brax的结果,但我们强调,Brax在单个1x1 TPUv2上的性能明显优于绝大多数从业者到现在为止能够以大幅降低的成本实现的性能。
为了明确这种性能上的差距,我们首先考虑在各种架构上用Brax的PPO实现对Ant环境的训练速度进行定性比较。我们将其与传统的设置进行比较,使用PPO[28]的标准实现–即没有编译也没有针对并行性进行优化,在图3中可以看出。请注意,Brax在10秒左右就达到了高性能的运动,而标准的PPO实现则需要将近半个小时。
接下来,为了验证Brax的MuJoCo环境版本在质量上与MuJoCo的环境相似,我们将SAC在我们环境中的标准实现的训练曲线与MuJoCo版本的训练曲线并排描述。从质量上看,对于一组固定的SAC超参数,Brax环境与MuJoCo的对应环境相比,在类似的环境步骤数量中实现了类似的奖励。请注意,这并不是说我们促进了 “更高的奖励”,因为比较不同的奖励函数在理论上是有问题的(尽管Brax的奖励函数与MuJoCo的健身房定义非常接近,更多细节见附录E)。我们只想证明奖励收益的进展是相似的,而且Brax环境在相似的学习步骤中取得了质量上相似的性能。
最后,我们通过它在[42]引入的 "宇航员 "诊断中的表现来考虑我们引擎的仿真质量–这是一个改进版的人形场景,它测量动量和能量不守恒作为仿真保真度的函数,如图5所描述。从质量上看,Brax实现了有竞争力的线性动量守恒比例,这是因为它对位置的最大笛卡尔坐标表示和对称积分方案。能量守恒性能与Havok和MuJoCo的欧拉积分器相一致。相对而言,Brax在角动量守恒方面做得特别好。
在这一节中,我们详细介绍了我们的引擎的几个重要限制和缺陷。
众所周知,依靠弹簧约束而不是更复杂的费瑟斯顿式方法的物理引擎可能很脆,而且可能需要仔细调整阻尼力。实际上,这些不稳定性是以积分器的小收敛半径出现的,需要小的积分步长。更糟糕的是,这些不稳定性随着问题中存在的质量尺度的不同而增长。虽然对弹簧约束的依赖大大简化了我们引擎的核心基元,但它确实意味着在一个新的物理场景中确保稳定性可能需要对阻尼力、质量和惯性比例以及积分步长进行相当数量的调整。
此外,由于我们的系统基本上是大型耦合弹簧-质量配置,我们的模拟痕迹比假设的相应费瑟斯通模拟有更多的 “抖动”。这可以通过增加关节弹簧约束的强度来缓解,但这是以减少最大稳定积分步长为代价的。对于这个版本的环境,我们选择了这些弹簧常数,以便最大限度地提高仿真速度,同时仍然保留定性的平滑仿真,我们将在未来的工作中研究Featherstone方法。
受Tiny Differentiable Simulator[16]的启发,我们对所有的碰撞基元使用速度级的碰撞更新和Baumgarte稳定。我们确实试验过完全弹性的、冲动的碰撞,但发现运动质量和稳定性受到影响。由于这种选择,我们继承了这些方法的已知调整要求和内在的非物理性[43]。我们试验了基于撞击时间的碰撞检测,但是,与DiffTaichi[17]的作者类似,我们发现它对代码库增加的复杂度没有提供什么精度优势。
此外,我们目前只对场景中的任何碰撞器使用二次缩放的、天真的碰撞检测。典型的基于物理的顺序决策问题不涉及足够多的碰撞器,这不会成为一个显著的瓶颈,因为我们仍然可以很容易地对场景中的所有碰撞基元进行并行化,而不会对现代加速器的内存缓冲区造成压力,但我们设想随着任务的复杂性增加,这将变得更加紧张。我们把更高级的碰撞物理学,例如基于LCP的求解器,以及更有效的碰撞修剪留给未来的版本。
虽然我们吹嘘我们能够将pythonic物理环境和学习算法与XLA并排编译,作为我们的库从JAX继承的一个强大的比较优势,但这并不是没有任何开发摩擦。对于Brax的终端用户来说,最突出的是JIT编译时间有时会接近或超过复杂环境的训练时间(即,编译可能需要几分钟)。我们对Brax的核心设计模式进行了广泛的迭代,以改善这种情况,在某些情况下,直接与JAX开发团队合作,在TPU上调整XLA编译启发式方法,以提高编译速度和性能。最终,编译时间仍然是一个小瓶颈,特别是对于利用可分性的学习算法。
这项工作介绍了我们的PPO和SAC实现的结果。虽然我们在这个版本中包括了APG和ES,但它们还没有被彻底地测试过,我们也没有用它们进行过那么多的超参数探索。我们把它留给未来的工作,以充分利用我们引擎的可分性。
从定义上来说,制作从业人员常用的另一个版本使现有的基准更加复杂,但我们希望我们的库所释放的开发速度能够弥补这一额外的摩擦。同时,发布一个可以快速解决控制问题的引擎的民主化效应可能是双刃剑:一项民主化的技术和一件武器之间的区别完全取决于谁在挥舞它。掌握对机器人的控制权代表了一个改变社会的机会,因此我们希望我们的引擎只有助于改善和加速我们未来的公平自动化。
然而,仍然有一种可能性,即通过发布一个明显更快的引擎,我们无意中大大增加了用于强化学习问题的计算量,就像在城市中建造一条新的高速公路会反直觉地增加交通一样[44]。至少对于我们自己的能源支出来说,我们所做的实验是在那些有望在2030年实现完全可再生资源的数据中心中进行的[45]。
作者感谢Erwin Coumans在物理引擎的微妙实现细节方面提供的宝贵建议,感谢Blake Hechtman和James Bradbury回答了作者的许多问题,并提供了JAX和XLA的优化帮助,感谢Luke Metz和Shane Gu在本项目开发过程中提供的激励性反馈和有益的讨论,感谢Yuval Tassa对本稿的早期草案提供的特殊反馈。作者还感谢Vijay Sundaram、Wright Bagwell、Matthew Leffler、Gavin Dodd、Brad Mckee和Logan Olson帮助孵化了这个项目。
在这一节中,我们演示了如何使用ProtoBuf规范构建一个Brax场景,以及用python构建同一场景的一个简短片段。
在这个附录中,我们提供了一个图,描述了一个用于把握的执行策略。
在本附录中,我们详细介绍了所有数字中所有训练曲线所使用的硬件和超参数。
图3:硬件:128核英特尔至强处理器,频率为2.2Ghz,用于运行MuJoCo环境。32核英特尔至强处理器,2.0 GhZ,用于运行32x-CPU曲线。标准PPO使用[28],braxppo使用我们的 repo。
图4:硬件:32核英特尔至强处理器,频率为2.2Ghz,用于运行环境。2x2 TPUv2用于学习算法,使用[28]
在这个附录中,我们绘制了在我们详尽的超参数扫描中发现的表现最好的20条训练曲线。超参数的精确值可以在这里找到压缩的、分类的json文件。
所有的图都是在1x1的TPUv2上生成的,即Colab的免费TPU层上的硬件。
在这个附录中,我们指出了我们对halfcheetah、ant和humanoid的实现与最初的MuJoCo-*-v2设想之间的主要差异。随着时间的推移,我们将努力使我们的实现与MuJoCo的实现更加接近,但我们将详尽的分析(例如,尝试在Brax和MuJoCo之间转移策略,sim2real风格)推迟到未来的工作。
MuJoCo使用与世界的关节来实现2d平面运动。相比之下,Brax直接屏蔽了旋转和平移运动的集成更新,因此半身人只能在一个平面内移动,并且只能围绕一个轴旋转。质量、惯性和致动器的比例被选择为尽可能地接近MuJoCo的半猎豹。我们推测,图4中剩余的性能差异归结于我们如何实现接触物理学的引擎特定差异,以及我们特定的执行模型。这种环境也被认为是有点病态的[46],在mujoco halfcheetah中发现的最高性能的策略是物理学上的破坏,因此在两个实现之间比较极高性能的策略(例如,>10,000分)在理论上是有问题的,因为它相当于比较这两个引擎的破坏方式。
因为我们在ACME实现中使用的标准SAC超参数已经针对现有的MuJoCo环境进行了积极的优化,所以也有可能我们的Brax搜索只是在超参数空间中的一个糟糕的超容积,尽管我们确实相当积极地搜索了高性能的超参数。不管两个实现之间的奖励差异的绝对大小,braxppo和braxsac都能找到性能相当好的火车头步态。我们将在未来的版本中继续减少性能差异。
Brax的蚂蚁有经过调整的质量、惯性和执行器的强度。Brax的奖励函数忽略了接触成本(见[47])。除此以外,这种环境在两个引擎之间实现了质量上最相似的步态。
除了对质量、惯性和执行器强度的常规调整外,类人猿的奖励函数也有轻微的修改。在我们的环境中,扭动关节的正则化惩罚较低(0.01,而MuJoCo的0.1),而且在Brax中,躯干触发完成的重置条件从0.6到2.1,而MuJoCos 1.0和2.0。
此外,我们实现三自由度执行器的方式与MuJoCo略有不同。更多细节,请看我们的关节实现[48]。
Brax是在Apache许可证2.0下发布的,据我们所知,并没有侵犯任何版权。它将被托管在github上,网址是https://github.com/google/brax。