> For the complete documentation index, see [llms.txt](https://hujian.gitbook.io/deep-reinforcement-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hujian.gitbook.io/deep-reinforcement-learning/fang-fa/jing-su-you-xi/deep-driving.md).

# Direct Perception

> [DeepDriving: Learning Affordance for Direct Perception in Autonomous Driving](https://arxiv.org/pdf/1505.00256.pdf)

今天，基于视觉的自主驾驶系统有两种主要范例：间接感知方法，解析整个场景以制定驾驶决策，行为反射方法直接将输入图像映射到回归者的驾驶行为。 在本文中，我们提出了第三种范式：直接感知方法来估计驾驶能力。

我们建议将输入图像映射到与驾驶道路/交通状态的可供性直接相关的少量关键感知指标。我们的表示提供了一组完整但完整的场景描述，使一个简单的控制器能够自动驾驶。 介于感知和行为反射的两个极端之间，我们认为我们的直接感知表示提供了正确的抽象层次。为了证明这一点，我们使用视频游戏中12个小时的人类驾驶记录训练了一个深度卷积神经网络，并展示了我们的模型可以很好地在各种各样的虚拟环境中驾驶汽车。我们还在KITTI数据集上训练了一个车距估计模型。 结果表明，直接感知方法可以很好地推广到真实的图像。 源代码和数据可在我们的项目网站上找到。

![](/files/-Lb1QSbQQvQo6Y5rJZ_s)

## 方法

当今大多数工业自主驾驶系统都是基于中介感知方法。在计算机视觉中，研究人员分别研究了每项任务。汽车检测和车道检测是自主驾驶系统的两个关键要素。典型算法输出检测到的汽车上的边界框和检测到的车道标记上的样条曲线。然而，这些边界框和样条不是我们用于驾驶的直接启示信息。因此，需要进行转换，这可能会导致额外的噪声。典型的车道检测算法，例如中提出的算法，都存在错误检测。具有刚性边界的结构（例如高速公路护栏或沥青表面裂缝）可能被错误识别为车道标记。即使车道检测结果良好，车辆定位的关键信息也可能丢失。例如，假设通常只能可靠地检测到两条车道标志，就很难确定一辆汽车是在双车道公路的左车道还是右车道上行驶。

### Learning affordance for driving perception

为了有效地实现和测试我们的方法，我们使用了开源驱动游戏TORCS (开放赛车模拟器)，它被广泛用于人工智能研究。我们可以收集驾驶的关键指标，如主机车的速度，主机车相对于公路中心线的距离，前车的距离。在训练阶段，我们在游戏中手动驾驶一辆“标签收集车”来收集截屏(第一个人驾驶视图)和所选启示指示器的相应地面真实值。这些数据被存储起来，并用于训练一个模型，以一种监督学习方式估计可用性。在测试阶段，在每个时间步，训练模型从游戏中获取驾驶场景图像并估计驾驶的可供性指标。

### Mapping from an image to affordance

我们使用最先进的深度学习网络作为我们的直接感知模型，将图像映射到启示指示器。在本文中，我们专注于多车道的高速公路驾驶。从自我中心的角度来看，主机车辆在做出决策时只需要关注其当前车道和两个相邻（左/右）车道的交通。因此，我们只需要模拟这三条车道。我们使用一个单一的ConvNet来处理三个车道的配置:一个车道、两个车道或三个车道的道路。

![](/files/-Lb1RZRJME5sMqka4kOs)

高速公路驾驶行为可以分为两种主要类型：1）跟随车道中心线，2）变换车道或减速以避免与前车相撞。为了支持这些动作，我们将系统定义为在两个坐标系下有两组表示:“车道系统”和“标记系统”。为了实现车道感知和汽车感知这两个主要功能，我们提出了三种类型的指标来表示驾驶情况:航向角、到附近车道标志的距离和到前面汽车的距离。总的来说，我们提出了13个指标作为我们的驾驶场景表示，如图3所示。图4列举了指示的完整列表。

![](/files/-LbAtZ42YBlf1nWXxmvZ)

“车道内系统”和“标记系统”在不同条件下被激活。 为了实现平滑的转换，我们定义了一个重叠区域，其中两个系统都是活动的。 布局如图3f所示。

### Mapping from affordance to action

使用汽车的位置和姿势计算转向控制，目标是最小化汽车当前位置和车道中心线之间的间隙。将dist\_center定义为到车道中心线的距离：

![](/files/-LbAuIj1Kjilg9Ni_Lu4)

如果汽车在转动，则根据过去的几个转向角计算出所需的速度。 如果存在先前的卡林近距离并且做出减速决定，则所需的速度也取决于到前车的距离。为了实现这种情况下的跟车行为，我们实施了最佳速度跟车模型：

![](/files/-LbAuanAZn84NFIJHbfz)

![](/files/-LbAuDmWMyzaa4C7xLY8)

## 测试

### 系统架构

![](/files/-LbAuuTgOeEGGi6T28cg)

我们的系统可以在TORCS中很好地驾驶，没有任何碰撞。在某些车道变换的情况下，控制器可能会稍微过冲，但它会很快恢复到目标车道中心的所需位置。
