简单自动驾驶汽车的最佳方法

数据挖掘 机器学习 神经网络 自动驾驶
2022-03-16 19:03:11

我正计划制造一辆具有自动驾驶功能的小型汽车(可能会修改我目前的遥控车或使用机器人汽车套件,使用 arduino 和 raspberry)。

我将使用 CNN,我正在考虑如何收集数据(我想尝试与 Udacity 模拟器类似的方法)。我的疑问是针对监督学习或强化学习是否更好。

我更倾向于监督学习,但我不知道记录数据的最佳方式。如果我要使用机器人汽车套件,前轮不会转向(它使用不同的车轮速度向左或向右转)。所以我可以为每个方向创建 3 个函数,比如“soft left”、“medium left”和“hard left”来在我训练它时控制汽车,然后从 7 种可能性中预测: - soft left、medium left、hard left , center, soft right, medium right, hard right 所以 7 种可能的输出。

否则,如果我使用前轮能够转向的汽车,我有 3 个可能的类别,例如左键为 -1,中键为 0(按下任何按钮),右键为 1。所以 3 种可能的输出,转向角没有任何梯度。

老实说,随着强化学习,我不知道从哪里开始。当汽车出现问题并给予奖励时,我该如何告诉它?使用模拟器很简单,但是使用真正的汽车,我如何为收集的每一帧分配奖励分数?如果您有任何关于此的论文,我将不胜感激。

您认为最好的方法是什么?

1个回答

~ 如果我们把这个问题看成是一个图像分类任务,

基本上,我们可以使用对属于 7 个类别(代表转向水平)的图像进行训练的 CNN。我们给 CNN 一个图像,它输出一个转向水平。这是一个分类问题,它将获取视频的每一帧(图像)并输出转向级别。因此,当汽车转向时,假设转弯后道路笔直,中央转向水平的概率将增加。

请参阅多类图像分类

~ 否则,如果我们针对这个问题训练一个代理(强化学习),

强化学习需要一个代理(在我们的例子中是汽车) ,它在环境(街道、道路等)中产生一些动作(转向水平)并相应地获得奖励奖励需要最大化。

我们将有一个将图像编码为矢量表示的 CNN。

所以,考虑两种情况。我们有一个图像需要汽车向左偏转。在第一种情况下,汽车向左软转并迷路。在这里,此操作的奖励变为 -100。在另一种情况下,汽车向左急转,停在路上,因此获得 100 的奖励。

基本上,如果代理在路上做一些动作(转向水平),它会得到一个正奖励,否则它会得到一个负奖励,表明不应该在这样的图像(道路)上执行这个动作。

请参阅此处了解学习 RL。

提示:

您可以尝试结合上述两种方法。从 CNN 生成类别概率(转向水平)。如果汽车转向不好,则将损失增加一定的系数。

尝试从人类的角度思考。想象一下驾驶汽车以及为避免出门而采取的谨慎措施。