1.3.1 实现自动驾驶的智能系统

当前实现自动驾驶的主流技术是人工智能,自动驾驶系统是一个典型的智能系统,该智能系统运行自动化程序替代驾驶员的“智力”完成车辆驾驶任务。自动驾驶系统能够观察车辆所处道路及周围车辆、行人等诸多要素构成的复杂环境,决定车辆接下来需要的行动路线,并通过一系列的操作,最终完成将车辆安全行驶到目的地的任务。

自动驾驶系统完全(或部分)替代驾驶员处理车辆的行驶信息,如果将信息处理流程中的信息传输隐含在其他环节中,那么信息采集、信息识别、信息决策和信息输出就可以分别对应自动驾驶系统的四个主要部分,即传感(sense)、感知(perceive)、决策(decide)和执行(actuate)。

这四部分代表着信息处理的主要过程,而从人工智能计算的角度来看,其分别需要完成不同的功能。

(1)传感:该环节是用不同的传感器技术将物理世界的状态信息转换成电子信号,最终转换成计算机可以理解的数字信号。例如,自动驾驶领域最常见的激光雷达传感器可以提取周围物体的距离信息并将其转换为计算机能够处理的点云信息。

(2)感知:该环节是对传感器数据进行理解的过程,它是后续决策的计算依据。感知所解决的问题是:如何将原始的底层数据解读为更高层次的环境信息?例如在自动驾驶场景里,输入给感知模块的往往是激光雷达的点云或摄像头得到的图像信息,感知需要解决的任务是从这些原始数据里提取出车辆周围的道路、其他车辆、障碍物等环境信息。

(3)决策:该环节是基于感知到的高层次环境信息,对车辆后续需要执行的行为做出决策。决策通常包含多个层面的操作,例如预测其他交通参与者(车辆、行人等)的运动轨迹、规划自身的行驶路径和速度等。例如,如果前方是通畅的高速公路,相应决策则是将车辆加速到最高限速并巡航前进;如果前方出现侧向车道的车辆正在进行变道操作,相应决策则可能是适当减速并准备避让。

(4)执行:该环节的作用是将决策最终落实到汽车的执行机构上。对汽车的简化模型而言,执行的过程就是通过方向盘、油门和刹车控制车辆的转向角和加速度,从而实现按规划好的轨迹和速度完成行驶任务,而实际车辆是一个复杂的机电系统,系统要控制的执行机构远不止方向盘和油门,还包括变速箱的挡位、指示灯等所有原本需要由驾驶员控制的装置,甚至还需要接管一部分驾驶员都没有权限控制的底层模块,例如车身稳定系统等。

在实际的自动驾驶系统中,上述四部分的功能都一定存在,但并不一定可以清晰地界定出与实际系统中功能部件的对应关系。不同的系统可能会对功能部件做出不同的划分,例如有些系统在具体实现中把传感器部件独立在处理框架之外,将人工智能的处理框架划分为“感知—决策—执行”三部分。在当前以深度学习为主导的感知技术中,具体功能的划分具有多样性,由于神经网络既具有感知处理能力,也能实现高度复杂的决策逻辑映射,所以在一些自动驾驶系统实现方案中也会将感知和决策的功能进行合并。

事实上,是否将功能进行合并设计,存在两种不同的设计思路:一种是细致地将系统拆分成不同的功能模块,并且分别对每个功能模块进行优化;另一种是“端到端”地解决问题,即从原始的输入端经过一个“黑盒子”系统直接形成最终的输出。采用功能模块拆分思路的优点是可以分别单独优化每个模块,并且在功能实现时让不同的研发团队负责不同的模块,但如果拆分不合理的话,复杂系统的分块可能反而使得软件在运行效率和研发效率上都降低。采用“端到端”思路的优点是能够直接对最终目标进行优化,可以避免不同模块参数协同调优(调整参数以优化性能)的复杂问题,但代价是几乎无法对模型的中间环节进行独立调整,当系统出现问题时对问题进行定位和解决相对更为困难。在实际系统研发中,一般不会单纯地采用上述任何一种思路进行设计,而是需要恰当地取舍,找到平衡点,进行综合考虑。对于一些业界普遍采用的功能模块,例如摄像头数据的图像分割这种已经具有业界普遍认可的评估体系和性能参考的模块,就应当作为一个独立功能模块进行设计;而对于一些零散的传感器信息,其输出的中间结果并没有多少实际的参考意义,此时就可以将这些传感器整合为一个更大的功能模块。而本书后续章节所给出的示例程序则直接用一个深度学习模型合并实现了“端到端”的所有功能。