【LKAS系统的工作原理】
在解释这种攻击技术的具体原理之前,我们首先应该明白的是LKAS车道保持系统的工作原理。这个包含两部分,一个是车道线的识别部分(这部分多数实现是由深度神经网络DNN来实现的);另一个是车道线保持的控制部分(这部分大部分是由PID自动控制系统来实现的,可能不同的实现方式在具体细节上有些不同,但大差不差,都属于PID控制)。基本上,车辆的L2辅助驾驶系统,先完成道路识别或者叫做可行驶区域的识别,然后将识别结果递送给后续的方向控制机构,完成车辆自动跟随道路走向的控制。
这是我们讨论可能有效的攻击手段(只凭论文可能很难评估这种攻击的具体效果)的框架性前提。
其中,我们首先看看关于车道线的识别部分,抛开Openpilot的实现机理(论文中提到了Openpilot系统),根据以往的经验,比较有参考价值的是一些开放标准的、比较新型的DNN道路线识别方式。在这里,我们主要看看一种复合的车道线识别方法,也是一种端到端的车道线检测算法,包括LaneNet和H-Net两个基于深度学习的网络模型。
我们只有建立基本的对于车道线识别深度网络的基本概念,才有可能理解这种基于深度学习识别和保持车道线LKAS系统的攻击原理。如下架构图:
在上架构图中,LaneNet是一种将语义分割和对像素进行向量表示结合起来的多任务模型,负责对图片中的车道线进行实例分割;H-Net是由卷积层和全连接层组成的网络模型,负责预测转换矩阵H,使用转换矩阵H对属于同一车道线的像素点进行回归。
【本段描述和分析来自https://www.jianshu.com/p/c6d38d648509简书,作者Liyonghong)】
根据实验结果,该算法在图森的车道线数据集上的准确率为96.4%,在NVIDIA1080 TI上的处理速度为52FPS。如果结果属实,这种复合的车道线识别方法,是一个在实现成本上比较合理的、在DNN技术落地上比较主流的深度学习模型,当然可能还会有其它很多的深度学习模型,但应该基本原理上是一致的。
这种模型应该是我们分析的主要目标。当然,我们不需要在技术上彻底吃透LaneNet+H-Net复合模型的所有技术细节,但我们有必要了解它的基本实现原理。
关于LaneNet部分,我们从图中可见,对于同一张输入图片(车辆前部的道路状态),LaneNet输出“实例分割”的结果,为每个车道线像素分配一个车道线ID。具体的模型拓扑如下图,在图片输入并作一般性的特征提取操作之后,分为两个支路。支路一,对特征图形进行“语义化信息提取操作”。顾名思义,就是要理解图中的每一个大致部分的具体含义,哪些是道路(可行驶部分),哪些是不可行驶的区域,哪些是远处的净空背景……
不知道大家是否还记得Tesla在多年前的一次致死车祸,横在马路当中正在倒车的巨大的厢式货车,把迎面驶来的Tesla ModelS的视觉系统“致盲”了,让Autopilot以为这是远处的天空,而非障碍物。这就是在“语义识别”上出了问题。
因此,上图中LaneNet的支路一的处理,就是类似的“语义处理”过程,我们可以看到支路一的输出,通过不同的颜色可以标识出“可行驶”、“不可行驶”和“远处背景”的区域分类。但是仅做到这一步是不够的,车辆要能正确驾驶还必须识别道路上的以车道线为单位的行驶区域细分。因此进入下一步,也就是分支二的“车道线识别”,通过对于图像像素的语义分割(对于图片像素进行二分类)模型通道来完成。经过分支二的处理,模型可以在相同的图片特征图上,提取出具备完整信息的车道线信息。
在整合完备的两个支路信息的基础上,将二支路合二为一,通过聚类算法,可以得出完整的、划分过车道线的可行驶区域,即LKAS系统所必须了解的车道实例信息,包含,面前的可行驶区域中,有几条车道,自己处于哪一条车道内等。
关于H-Net部分模型,主要处理对于不同地形下,车道线转换矩阵的学习。通过对于不同实时地形的地理特征的学习,可以针对性地对当前地形做出最适合的转换矩阵的推算。从而可以让从LaneNet模型中计算出来的车道线实例信息,可以准确地铺设在当前的地形条件下,并推算出车道线的未来走势(利用多项式的拟合,在短距离有效)。
这就是基本的车道线识别和标注的DNN深度学习网络基本原理。实际上如果读者可以读懂这一部分,也就基本清楚我们所讨论的这种针对LKAS车道保持系统进行攻击的基本原理了。后续我们再对攻击方法做分析,大家就会清楚这里介绍LKAS系统原理的用意了。
还有一个大部分,就是关于车道线保持的控制部分。LKAS系统的校准对象和核心元素是横向控制器(车辆驾驶方向盘)。它代表了基于摄像头的传感器系统以及工作在背景当中的DNN深度学习算法,与转向操纵系统之间的联系。
摄像头系统连续捕获前方的道路标记,并将DNN处理后的信号发送到LKAS系统,Anticipatingcontroller根据标定,给出控制量(也称作期望控制量AG)后,驱动转向系统,比如方向盘,从而控制车辆行驶在车道中间部位。
被控车辆在期望控制和外部扰动的共同作用下,跑出实际的运行轨迹,并通过反馈通道送回,先后和参考轨迹进行校准后,送入补偿控制器,再次与当前时刻的AG控制量融合,驱动方向盘。
这点上看,PID的控制过程几乎等同于人类驾驶员。当然这里只是个基本概念介绍,但不影响我们对于LKAS攻击方法的讨论,因为攻击行为的触发和生效并不在执行阶段,执行阶段只是执行,对于执行轨迹是否会导致灾难性后果,并不进行甄别。到此,LKAS系统的组成部分,包括车道线识别和驱动车辆行驶在车道线内的控制部分,我们就基本了解了。
今天先聊到这儿,大家周末愉快,请继续关注后续分析。
车右智能
info@co-driver.ai
备注:
1 题图来自于互联网;
2 插图1/2来自于论文https://arxiv.org/abs/1802.05591?context=cs文中的主要被引用内容,也来自于此论文;(中文摘译稿和分析来自https://www.jianshu.com/p/c6d38d648509简书,作者Liyonghong)
3 插图3来自于论文https://www.researchgate.net/publication/328808310_Model-based_Calibration_of_the_Lateral_Controllers_Steer-by-Angle_and_Steer-by-Torque_of_a_Lane_Keeping_Assistance_System;
往期关联文章: