基于深度学习的驾驶评估系统研究与开发

基于深度学习的驾驶评估系统研究与开发

(文章部分选自csdn中博客,中国知网论文等)

主要内容包括 AI驾驶员算法研究、驾驶评分系统开发(算法开发、软件/App开发)

一.
AI驾驶员算法研究
AI驾驶系统的核心可以概述为三个部分:感知(Perception),规划(Planning)和控制(Control),这三部分之间的交互以及其与车辆硬件或者其他车辆的交互可以用下图表示:

基于深度学习的驾驶评估系统研究与开发
由上图可知,无人驾驶软件系统实际上是一个分层的结构,感知规划和控制工作在不同的层当时相互作用。下面我们详细了解这三层的功能:

感知是指无人驾驶系统从环境中收集信息并从中提取相关知识的能力
环境感知(Environmental Perception)
特指对于环境的场景理解能力,例如障碍物的位置,道路标志/标记的检测,行人车辆的检测等数据的语义分类。
一般来说,定位(Localization)也是感知的一部分,定位是无人车确定其相对于环境的位置的能力。

规划是无人车为了某一目标而作出一些有目的性的决策的过程
对于无人驾驶车辆而言,这个目标通常是指从出发地到达目的地,同时避免障碍物,并且不断优化驾驶轨迹和行为以保证乘客的安全舒适。
规划层通常又被细分为
任务规划(Mission Planning)
行为规划(Behavioral Planning)
动作规划(Motion Planning)

控制则是无人车精准地执行规划好的动作的能力,这些动作来源于更高的层。

环境感知

为了确保AI对环境的理解和把握,AI驾驶系统的环境感知部分通常需要获取周围环境的大量信息,具体来说包括:障碍物的位置,速度以及可能的行为,可行驶的区域,交通规则等等。
AI汽车通常是通过融合激光雷达(Lidar),相机(Camera),毫米波雷达(Millimeter Wave Radar)等多种传感器的数据来获取这些信息,本项目我们主要来了解**相机(Camera)**在AI驾驶感知中的应用。

使用图像视觉来完成道路的检测和道路上目标的检测。道路的检测包含对
道路线的检测(Lane Detection)
可行驶区域的检测(Drivable AreaDetection)
道路上路标的检测包含对其他车辆的检测(Vehicle Detection)
行人检测(Pedestrian Detection)
交通标志和信号的检测(TrafficSign Detection)等

1.车道线的检测涉及两个方面
第一:是识别出车道线,对于弯曲的车道线,能够计算出其曲率
第二:是确定车辆自身相对于车道线的偏移(即无人车自身在车道线的哪个位置)。

具体方法是抽取一些车道的特征,包括边缘特征(通常是求梯度,如索贝尔算子),车道线的颜色特征等,使用多项式拟合我们认为可能是车道线的像素,然后基于多项式以及当前相机在车上挂载的位置确定前方车道线的曲率和车辆相对于车道的偏离。

2.可行驶区域的检测
目前的一种做法是采用深度神经网络直接对场景进行分割,即通过训练一个逐像素分类的深度神经网络,完成对图像中可行驶区域的切割。

3.交通参与者的检测和分类
目前主要依赖于深度学习模型,常用的模型包括两类:
1)以RCNN为代表的基于Region
Proposal的深度学习目标检测算法(RCNN,SPP-NET,Fast-RCNN,Faster-RCNN等);
2)以YOLO为代表的基于回归方法的深度学习目标检测算法(YOLO,SSD等)

定位

AI汽车需要知道自己相对于环境的一个确切位置,这里的定位不能存在超过10cm的误差

目前使用最广泛的无人车定位方法:
1.融合全球定位系统(Global
Positioning System,GPS)
2.惯性导航系统(Inertial Navigation System)定位方法

3.地图辅助类定位算法是另一类广泛使用的无人车定位算法,同步定位与地图构建(Simultaneous
Localization And Mapping,SLAM)是这类算法的代表,SLAM的目标即构建地图的同时使用该地图进行定位,SLAM通过利用已经观测到的环境特征确定当前车辆的位置已经当前观测特征的位置,这是一个利用以往的先验和当前的观测来估计当前位置的过程

规划

1.任务规划

2.行为规划

3.动作规划

这里不谈任务规划,那个主要是参加比赛的路径规划,主要谈行为规划和动作规划。

行为规划
有时也被称为决策制定(Decision Maker),主要的任务是按照任务规划的目标和当前的局部情况(其他的车辆和行人的位置和行为,当前的交通规则等),作出下一步无人车应该执行的决策

可以把这一层理解为车辆的副驾驶,他依据目标和当前的交通情况指挥驾驶员是跟车还是超车,是停车等行人通过还是绕过行人等等。

行为规划的一种方法是使用包含大量动作短语的复杂有限状态机(Finite State
Machine,FSM)来实现,有限状态机从一个基础状态出发,将根据不同的驾驶场景跳转到不同的动作状态,将动作短语传递给下层的动作规划层,下图是一个简单的有限状态机:
基于深度学习的驾驶评估系统研究与开发

每个状态都是对车辆动作的决策,状态和状态之间存在一定的跳转条件,某些状态可以自循环(比如上图中的循迹状态和等待状态)。

:虽然是目前无人车上采用的主流行为决策方法,有限状态机仍然存在着很大的局限性:首先,要实现复杂的行为决策,需要人工设计大量的状态;车辆有可能陷入有限状态机没有考虑过的状态;如果有限状态机没有设计死锁保护,车辆甚至可能陷入某种死锁。

动作规划
通过规划一系列的动作以达到某种目的(比如说规避障碍物)的处理过程被称为动作规划
通常来说,考量动作规划算法的性能通常使用两个指标:
计算效率(Computational Efficiency)
完整性(Completeness)

  1. 所谓计算效率,即完成一次动作规划的处理效率,动作规划算法的计算效率在很大程度上取决于配置空间(Configuration Space)
  2. 所谓完整性,如果一个动作规划算法能够在问题有解的情况下在有限时间内返回一个解,并且能够在无解的情况下返回无解,那么我们称该动作规划算法是完整的。

在引入了配置空间的概念以后,那么无人车的动作规划就变成了:在给定一个初始配置(Start
Configuration),一个目标配置(Goal Configuration)以及若干的约束条件(Constraint)的情况下,在配置空间中找出一系列的动作到达目标配置,这些动作的执行结果就是将无人车从初始配置转移至目标配置,同时满足约束条件。

初始配置通常是无人车的当前状态(当前的位置,速度和角速度等),目标配置则来源于动作规划的上一层——行为规划层,而约束条件则是车辆的运动限制(最大转角幅度,最大加速度等)。

显然,在高维度的配置空间中来动作规划的计算量是非常巨大的,为了确保规划算法的完整性,我们不得不搜索几乎所有的可能路径,这就形成了连续动作规划中的“维度灾难”问题。目前动作规划中解决该问题的核心理念是将连续空间模型转换成离散模型,具体的方法可以归纳为两类:

  1. 组合规划方法(Combinatorial Planning)
  2. 基于采样的规划方法(Sampling-Based Planning)

运动规划的组合方法通过连续的配置空间找到路径,而无需借助近似值。由于这个属性,它们可以被称为精确算法。组合方法通过对规划问题建立离散表示来找到完整的解,如在Darpa城市挑战赛(Darpa Urban Challenge)中,CMU的无人车BOSS所使用的动作规划算法,他们首先使用路径规划器生成备选的路径和目标点(这些路径和目标点事融合动力学可达的),如下图所示,然后通过优化算法选择最优的路径;另一种离散化的方法是网格分解方法(Grid Decomposition Approaches),在将配置空间网格化以后我们通常能够使用离散图搜索算法(如A*)找到一条优化路径。

基于采样的方法由于其概率完整性而被广泛使用,最常见的算法如:
PRM(Probabilistic Roadmaps)
RRT(Rapidly-Exploring Random Tree)
FMT(Fast-Marching Trees)

文末补充对于交通参与者的检测和分类 ,对于交通灯的识别以及遮挡行人识别的参考资料
基于深度学习的驾驶评估系统研究与开发
基于深度学习的驾驶评估系统研究与开发
基于深度学习的驾驶评估系统研究与开发
基于深度学习的驾驶评估系统研究与开发
交通灯识别
基于深度学习的驾驶评估系统研究与开发

第二部分:驾驶行为评估

对驾驶行为的评分,可以通过对实际驾驶车辆与训练结果在横纵两个方向进行对比。在横向上,对汽车在左右偏差相对距离进行评价,以避免过度偏离正常的轨道;在纵向上,通过与前方道路车辆及其他障碍物进行判断,以保证车辆与前方保持一定的安全纵向距离。

1.安全驾驶

① 急加速

② 急刹车

③ 急转弯

④ 超速
上四项行为记录详细次数、时间、路段及数值。

2.文明行车:

① 进出路口减速

② 学校附近慢行

③ 行车道停车

④ 转弯打转向灯

⑤ 超车道上慢行
同安全驾驶行为一样,记录详细数据。需要注意的是,现阶段不是所有数据都能如实采集,如打转向灯一栏。

3、车辆燃油

① 百公里燃油

② 瞬时燃油

4、行驶路况

① 真实道路状况

② 当地气象条件
驾驶员可自行选择路况,数据除了和真实道路状况(城市道路、山路、高速路)挂钩外,还应跟当地气象条件匹配,如雨雪天气。

最后简单说下各模块分值比例,毫无争议「安全驾驶」是要占到大部分比例的,模块下各类行为也实行阶梯分值。具体比例等考试周五考试后在接着讨论,具体实现方法仍待讨论