本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解赛车类型并启用 AWS DeepRacer 支持的传感器
在 AWS DeepRacer League 中,您可以参加以下类型的赛车赛事:
-
计时赛:在畅通无阻的赛道上争分夺秒,力求以最快的速度完成一圈。
-
避障赛:在有固定障碍物的赛道上争分夺秒,力求以最快的速度完成一圈。
-
对战赛:在同一条赛道上与一辆或多辆赛车竞赛,力求超越其他赛车率先越过终点线。
AWS DeepRacer 社区竞赛目前仅支持计时赛。
您应该在您的 AWS DeepRacer 赛车上尝试不同的传感器,让赛车具备充分的能力来观察当前比赛类型的周围环境。下一节将介绍 AWS DeepRacer 支持的传感器,这些传感器可实现所支持的自动驾驶赛事类型。
主题
针对 AWS DeepRacer 赛事类型选择传感器
您的 AWS DeepRacer 赛车配有前置单目摄像机作为默认传感器。您可以添加另一台前置单目摄像机来制作前置立体摄像机,或者使用 LiDAR 单元来补充单目摄像机或立体摄像机。
以下列表总结了 AWS DeepRacer 支持的传感器的功能以及简要的成本效益分析:
- 前置摄像机
-
单镜头前置摄像机可以捕捉主机赛车前方环境的图像,包括赛道边界和形状。它是最便宜的传感器,适用于处理更简单的自动驾驶任务,例如在标记良好的赛道上进行无障碍计时赛。通过适当的训练,它可以避开赛道上固定位置的静止障碍物。但是,障碍物位置信息内置在经过训练的模型中,因此,该模型可能会过度拟合,并且可能无法推广到其他障碍物的放置位置。当静止物体放置在随机位置上或赛道上有其他移动的赛车时,模型不太可能聚合。
在现实世界中,AWS DeepRacer 赛车配备了单镜头前置摄像机作为默认传感器。该摄像机配备 120 度广角镜头,可捕获 RGB 图像,然后以每秒 15 帧 (fps) 的速度将其转换为 160 x 120 像素的灰度图像。这些传感器属性保留在模拟器中,以最大限度地提高训练后的模型从仿真顺利转移到现实世界的机会。
- 前置立体摄像机
-
立体摄像机有两个或更多镜头,可以以相同的分辨率和频率捕捉图像。来自两个镜头的图像用于确定观测到的物体的深度。来自立体摄像机的深度信息对于主机赛车非常有用,可以避免撞到前方的障碍物或其他赛车,尤其是在更动态的环境下。但是,增加的深度信息会使训练的收敛速度更慢。
在 AWS DeepRacer 实体赛车上,双镜头立体摄像机是通过添加另一台单镜头摄像机并将每个摄像机安装在赛车的左侧和右侧来构造的。AWS DeepRacer 软件可同步从两台摄像机拍摄的图像。捕获的图像被转换为灰度图像,堆叠起来,然后输入神经网络进行推理。在模拟器中复制了相同的机制,以便训练模型很好地推广到现实世界的环境。
- LiDAR 传感器
-
LiDAR 传感器使用旋转激光发出可见光谱之外的光脉冲,以及每个脉冲返回所需的时间。特定脉冲击中的物体的方向和距离被记录为以 LiDAR 单元为中心的大型 3D 地图中的一个点。
例如,LiDAR 可以帮助探测主赛车的盲点,以避免在赛车变道时发生碰撞。通过将 LiDAR 与单目或立体摄像机相结合,可以使主机赛车捕获足够的信息,从而采取适当的行动。但是,与摄像机相比,LiDAR 传感器的成本更高。神经网络必须学习如何解析 LiDAR 数据。因此,需要更长的时间训练才能收敛。
在 AWS DeepRacer 实体赛车上,LiDAR 传感器安装在后部并向下倾斜 6 度。它以每秒 10 次旋转的角速度旋转,范围为 15 厘米到 2 米。它可以检测主机赛车后方和旁边的物体,以及不受赛车部件阻挡的前方高大物体。选择角度和范围是为了使 LiDAR 单元不易受到环境噪声的影响。
您可以使用以下支持的传感器组合来配置 AWS DeepRacer 赛车:
-
仅限前置单镜头摄像机。
这种配置非常适合计时赛,也适合在固定位置有物体的避障赛。
-
仅前置立体摄像机。
这种配置非常适合在固定或随机位置有物体的避障赛。
-
带 LiDAR 的前置单镜头摄像机。
这种配置非常适合避障赛或对战赛。
-
带 LiDAR 的前置立体摄像机。
这种配置非常适合避障赛或对战赛,但对于计时赛来说,可能不是最经济的。
随着您添加更多传感器以使您的 AWS DeepRacer 赛车从计时赛升级到避障赛再到对战赛的竞速,赛车会收集更多有关环境的数据,以便在训练中输入底层神经网络。这使得训练更具挑战性,因为模型需要处理日益增加的复杂性。最后,您学习训练模型的任务变得更加艰巨。
要逐步学习,您应该先开始进行计时赛训练,然后再开始避障赛,然后再进行对战赛。您将在下一节中找到更多详细建议。
配置用于训练 AWS DeepRacer 模型的代理
为了训练强化学习模型以便 AWS DeepRacer 车辆参加避障赛或对战赛,您需要为代理配置适当的传感器。对于简单的计时赛,您可以使用配置了单镜头摄像机的默认代理。在配置代理时,您可以自定义操作空间并选择神经网络拓扑,以便它们能够更好地与所选传感器配合使用,满足预期的行驶要求。此外,您还可以在训练期间更改代理的外观以在视觉上帮助识别。
配置后,代理配置将记录为模型元数据的一部分,用于训练和评估。为了进行评估,代理会自动检索记录的配置,以使用指定的传感器、操作空间和神经网络技术。
本节将引导您完成在 AWS DeepRacer 控制台中配置代理的步骤。
在 AWS DeepRacer 控制台中配置 AWS DeepRacer 代理
-
登录到 AWS DeepRacer 控制台
。 -
在主导航窗格中选择 Garage (车库)。
-
首次使用 Garage (车库) 时,您会看到 WELCOME TO THE GARAGE (欢迎使用车库) 对话框。选择 > 或 < 浏览 AWS DeepRacer 车辆支持的各种传感器的介绍,或选择 X 关闭对话框。您可以在 Garage (车库) 的帮助面板中找到此介绍性信息。
-
在 Garage (车库) 页面上,选择 Build new vehicle (构建新车辆)。
-
在 Mod your own vehicle (改装自己的车辆) 页面上,在 Mod specifications (改装规范) 下,选择一个或多个传感器,尝试了解能够满足预期赛车类型的最佳组合。
要训练 AWS DeepRacer 车辆参加计时赛,请选择摄像机。对于避障赛或对战赛,您需要使用其他传感器类型。要选择立体摄像机,请确保您已经购买了额外的单镜头摄像机。AWS DeepRacer 用两台单镜头摄像机制作了立体摄像机。您可以在一辆车上使用单镜头摄像机或双镜头立体摄像机。在任何一种情况下,如果您只是希望训练后的模型能够检测和避免避障赛或对战赛中的盲点,都可以向代理添加 LiDAR 传感器。
-
在 Garage (车库) 页面的 Neural network topologies (神经网络拓扑) 下,选择支持的网络拓扑。
一般来说,更深的神经网络(层次较多)更适合在具有复杂曲线和急转弯的更复杂赛道上行驶、规避静止障碍物的比赛或与其他移动车辆的比赛。但是,更深的神经网络的训练成本更高,模型需要更长的时间才能融合。另一方面,更浅的网络(层次较少)成本更低,需要的训练时间更短。训练后的模型能够处理较简单的赛道条件或行驶要求,例如在没有竞争对手的无障碍赛道上进行的计时赛。
具体而言,AWS DeepRacer 支持3 层 CNN 或5 层 CNN。
-
在 Garage (车库) 页面上,选择 Next (下一步) 以继续设置代理的操作空间。
-
在 Action space (操作空间) 页面上,保留第一次训练的默认设置。对于后续训练,请尝试不同的转向角度、最高速度及其粒度设置。然后选择下一步。
-
在 Color your vehicle to stand out in the crowd (为您的车辆涂上颜色使其在众多车辆中脱颖而出) 页面上,在 Name your DeepRacer (命名您的 DeepRacer) 中输入一个名称,然后从 Vehicle color (车辆颜色) 列表中为代理选择一个颜色。然后,选择 Submit (提交)。
-
在 Garage (车库) 页面上,检查新代理的设置。要进行其他修改,请选择 Mod vehicle (改装车辆),然后从步骤 4 开始重复上述步骤。
现在,您的代理已准备好进行训练了。
为计时赛定制 AWS DeepRacer 训练
如果这是您首次使用 AWS DeepRacer,则应从简单的计时赛开始,熟悉如何训练 AWS DeepRacer 模型来驾驶您的赛车。这样,您就可以更好地了解奖励函数、代理、环境等基本概念。您的目标是训练一个模型,让赛车保持在赛道上并尽可能快地完成一圈。然后,您可以将经过训练的模型部署到您的 AWS DeepRacer 赛车上,在无需任何额外传感器的情况下在物理赛道上测试驾驶。
要针对此场景训练模型,您可以在 AWS DeepRacer 控制台上从车库中选择默认代理。默认代理已配置为单个前置摄像机、默认操作空间和默认神经网络拓扑。在继续使用更复杂的代理之前,使用默认代理开始训练 AWS DeepRacer 模型会很有帮助。
要使用默认代理训练模型,请遵循以下建议。
-
开始使用形状更规则且转弯较少的简单赛道来训练模型。使用默认的奖励函数。然后训练模型 30 分钟。训练作业完成后,在同一条赛道上评估您的模型,以观察代理能否完成一圈。
-
阅读有关奖励函数参数的信息。通过不同的激励措施继续训练,以奖励代理人更快地前进。将下一个模型的训练时间延长到 1-2 小时。比较第一次训练和第二次训练之间的奖励图。继续试验,直到奖励图表停止改善。
-
阅读有关操作空间的更多信息。通过提高最高速度(例如 1 m/s)对模型进行第 3 次训练。要修改操作空间,您必须在有机会进行修改时在车库中建造一个新的代理。更新代理的最高速度时,请注意,最高速度越高,代理在评估中完成赛道的速度就越快,您的 AWS DeepRacer 赛车在物理赛道上完成一圈的速度也就越快。但是,更高的最高速度通常意味着训练的收敛时间更长,因为代理更有可能在弯道上超冲从而偏离轨道。您可能需要降低粒度,为代理提供更多的加速或减速空间,并通过其他方式进一步调整奖励函数,以帮助训练更快地收敛。训练收敛后,评估第三个模型,看看单圈时间是否有所改善。继续探索,直到没有更多改进。
-
选择更复杂的赛道,然后重复步骤 1 到步骤 3。在与您用来训练的赛道不同的赛道上评估您的模型,看看模型如何推广到不同的虚拟轨道并推广到现实世界的环境。
-
(可选)尝试不同的超参数值以改进训练过程,然后重复步骤 1 到步骤 3。
-
(可选)检查和分析 AWS DeepRacer 日志。有关可用于分析日志的示例代码,请参阅 https://github.com/aws-samples/aws-deepracer-workshops/tree/master/log-analysis
。
为避障赛定制 AWS DeepRacer 训练
在您熟悉计时赛并训练了几个融合模型之后,接下来是下一个要求更高的挑战——避障赛。在这里,您的目标是训练一个能够在不偏离轨道的情况下尽可能快地完成一圈的模型,同时避免撞到放置在赛道上的物体。对于代理来说,这显然是一个更难学习的问题,而且训练需要更长的时间才能收敛。
AWS DeepRacer 控制台支持两种类型的避障训练:可以将障碍物放置在轨道上的固定位置或随机位置。在固定位置下,障碍物在整个训练作业中都固定在同一位置。在随机位置下,障碍物会随机改变各自的位置。
由于系统的自由度较低,因此对于固定位置的避障赛,训练更容易收敛。但是,当位置信息内置到训练后的模型中时,模型可能会过度拟合。因此,模型可能过度拟合,可能无法很好地推广。为了避开随机放置的障碍物,训练更难融合,因为代理必须不断学习,避免在以前从未见过的地方碰到障碍物。但是,使用此选项训练的模型往往可以更好地推广,并且可以很好地转移到现实世界的比赛中。首先,在固定位置放置障碍物,熟悉行为,然后应对随机位置。
在 AWS DeepRacer 模拟器中,障碍物是长方体箱子,其尺寸(9.5 英寸(长)x 15.25 英寸(宽)x 10/5 英寸(高))与 AWS DeepRacer 赛车的包装盒相同。如果您将包装盒作为障碍物放在物理赛道上,则可以更轻松地将经过训练的模型从模拟器转移到现实世界。
要尝试避障,请遵循以下步骤中概述的推荐做法:
-
使用默认代理或通过自定义现有代理或构建新代理来尝试新的传感器和操作空间。应将最高速度限制在 0.8 m/s 以下,将速度粒度限制在 1 或 2 级以内。
首先在固定位置放置 2 个物体,训练模型约 3 小时。使用示例奖励函数,在您将要参加比赛的赛道或与该赛道非常相似的赛道上训练模型。AWS DeepRacer Smile Speedway(中级)赛道很简单,因此是准备登顶比赛的不错选择。在同一赛道上放置相同数量的障碍物,以评估模型。观察预期的奖励融合数(如果有)。
-
阅读有关奖励函数参数的信息。试用您的奖励函数的变体。将障碍物数量增加到 4。训练代理,看看训练是否在相同的训练时间内趋于一致。如果没有,请再次调整奖励函数,降低最高速度或减少障碍物的数量,然后再次训练代理。重复试验,直到没有更显著的改进。
-
现在,继续训练避开随机位置的障碍物。您需要为代理配置其他传感器,这些传感器可从 AWS DeepRacer 控制台中的车库获得。您可以使用立体摄像机。或者,您可以将 LiDAR 单元与单镜头摄像机或立体摄像机结合使用,但训练时间应该更长。将操作空间设置为相对较低的最高速度(例如 2 m/s),以便训练更快地收敛。对于网络架构,请使用浅层神经网络,经发现,该网络足以避障。
-
开始训练新代理 4 个小时的避障,在简单的赛道上随机放置 4 个物体。然后在同一条赛道上评估您的模型,看看它能否在随机放置障碍物的情况下完成圈数。如果不行,您可能需要调整奖励函数,尝试不同的传感器并延长训练时间。另一个技巧是,您可以尝试克隆现有模型以继续训练,以利用以前学到的经验。
-
(可选)为操作空间选择更高的最高速度,或者在赛道上随机放置更多障碍物。尝试不同的传感器组合,调整奖励函数和超参数值。尝试 5 层 CNN 网络拓扑。然后,重新训练模型以确定它们如何影响训练的收敛性。
为对战赛定制 AWS DeepRacer 训练
在完成了避障训练之后,您现在已经准备好迎接更高级别的挑战了:为对战赛训练模型。与避障赛不同,对战赛具有赛车在其中移动的动态环境。您的目标是训练您的 AWS DeepRacer 赛车的模型,使其与其他行驶中的赛车竞争,以便在不偏离轨道或撞到任何其他赛车的情况下先到达终点线。在 AWS DeepRacer 控制台中,您可以让您的代理与 1-4 辆自动程序赛车竞争,从而训练对战赛的赛车模型。一般来说,您应该在更长的赛道上设置更多的障碍物。
每辆自动程序赛车都以恒定速度沿着预定义的路径行驶。您可以让它改变车道或保持在起跑车道上。与避障训练类似,您可以让自动程序赛车在两条车道上均匀分布在赛道上。控制台限制您在赛道上最多有 4 辆自动程序车辆。赛道上有更多的竞争赛车可以让学习代理有更多机会与其他赛车一起面对更多不同的情况。这样,它可以在一次训练作业中学到更多知识,并且代理可以更快地接受训练。但是,每次训练可能需要更长的时间才能收敛。
要使用自动程序赛车训练代理,应将代理操作空间的最高速度设置为高于自动程序赛车的(恒定)速度,以便代理在训练期间有更多的超越机会。作为一个好的起点,您应该将代理的最高速度设置为 0.8 m/s,将自动程序赛车的最高移动速度设置为 0.4 m/s。如果您允许自动程序车辆变道,则训练将变得更具挑战性,因为代理不仅必须学习如何避免在同一车道上撞上前方行驶中的赛车,还必须学习如何避免在另一条车道上撞上前方行驶中的另一辆行驶中的赛车。您可以将自动程序车辆设置为以随机间隔更改车道。间隔长度是在开始训练作业之前从您指定的时间范围(例如 1s 到 5s)中随机选择的。这种变道行为更类似于现实世界中对战赛的赛车行为,训练有素的代理应该会产生更好的表现。但是,模型将需要更长的训练时间来收敛。
请按照以下建议的步骤重复您的对战赛训练:
-
在 AWS DeepRacer 控制台的车库中,构建一个配置有立体摄像机和 LiDAR 单元的新训练代理。仅使用立体摄像机对抗自动程序赛车,就可以训练出相对较好的模型。当代理变道时,LiDAR 有助于减少盲点。不要将最高速度设置得太高。1 m/s 是一个好起点。
-
要为对战赛进行训练,请从两辆自动程序赛车开始。将自动程序的移动速度设置为低于代理的最高速度(例如,如果代理的最高速度为 1 m/s,则为 0.5 m/s)。禁用变道选项,然后选择您刚创建的训练代理。使用其中一个奖励函数示例或进行最少的必要修改,然后训练 3 小时。使用您将要参加比赛的赛道,或者使用与该赛道非常相似的赛道。AWS DeepRacer Smile Speedway(中级)赛道很简单,因此是准备登顶比赛的不错选择。训练完成后,在同一赛道上评估训练后的模型。
-
要完成更具挑战性的任务,请克隆您训练过的模型,制作第二个对战赛的赛车模型。继续使用更多自动程序赛车进行实验,或者启用变道选项。从随机间隔超过 2 秒的慢速变道操作开始。您可能还想尝试使用自定义奖励函数。通常,如果您不考虑超越其他赛车和保持正轨之间的平衡,则您的自定义奖励函数逻辑可能与避障的逻辑类似。基于您之前的模型表现,您可能需要再训练 3 到 6 个小时。评估您的模型并查看模型的性能。