跳至正文
首页 » 博客 » 自动驾驶-车道线检测漏洞研究

自动驾驶-车道线检测漏洞研究

星舆车联网安全实验室

分类:综述   标签:自动驾驶,智能汽车, 车道线检测   作者:李四伟


大家好, 我们来自星舆车联网实验室。星舆取 “星辰大海, 舆载万物”之意, 是专注于车联网技术研究, 漏洞挖掘和工具研发的安全团队。团队成员在漏洞挖掘, 硬件逆向与AI大数据方面有着丰富经验, 连续在GeekPwn等破解赛事中斩获奖项。发现众多产品高危漏洞,并获相关厂商致谢。团队研究成果多次发表于DEFCON等国内外顶级安全会议, 并成功入选特斯拉漏洞名人堂。   

简述

     本系列分为上下两篇,主要对自动驾驶中的车道线检测算法进行研究分析,分析其安全性,上篇中主要对车道线检测进行简要描述,大家对车道线检测的定义,作用,应用,主要流程与原理有一个简单的了解,下篇中主要分析车道线检测算法的安全性,设计实验使用各种方法对车道线检测算法进行对抗攻击,并在物理世界对实验结果进行复现,通过实验结果分析车道线的安全性。

    车道线检测是自动驾驶技术的一个重要的环节,它影响着车辆对行驶路径规划决策,可靠准确的车道检测一直是自动驾驶领域长期存在的问题。自动驾驶,从字面意义上来看是车辆本身控制自己行驶,是个能够很简单被理解的概念,但是展开到工程与算法领域,就是一个复杂且庞大的系统。里面涵盖了无数的子任务,子系统,整体可分为三大任务:感知,决策,控制。具体任务细节定义与实现方法会放到自动驾驶综述系列文章中展开,这里就不过多介绍,简单理解感知就是对整个环境的采集及建模分析,通过传感器收集驾驶环境中的车辆,人员,道路等等信息,并进行分析预测。决策是将感知收集到数据结果与车辆自身行驶状态,运动学模型,地图信息等等数据相结合,对车辆的运动路径做出规划,对车辆要执行的行为做出决策。控制对车辆横纵向动力学建模,然后开发控制算法,实现车辆运动控制等。本篇文章着重对自动驾驶感知任务中的车道线检测进行简述。

一.车道线检测描述

        车道线是指在 道路的路面上用黄色,白色,实线,虚线来划分车道并向交通参与者传递引导、限制等交通信息的标识。车道线检测是对行驶环境中的车道线进行检测,输出检测结果,旨在通过摄像头或激光雷达检测车道区域或车道线车道线检测的结果会被应用于后续的规划决策及控制模块,结合车辆状态及动力学模型对影响车辆的行驶行为。常见的新能源汽车中搭载adas的acl,lcc,acc等模块都与车道线检测的息息相关,无论是车道居中,自动变道辅助还是自适应巡航等功能都依赖于车道线检测结果。所以车道线检测算法的安全性对当前的逐渐推广应用的自动驾驶系统至关重要,本文将对车道线检测算法进行简要阐述,并以一种车道线检测算法在车道线居中辅助功能的应用为例,对整个车道线检测过程以及后续决策控制进行简要阐述。下图是一个简单的车道线图及标注结果:

二.发展

随着自动驾驶任务的深入研究,车道线检测任务所应对的场景越来越多样化,逐步已经脱离了对于“白、黄色线条”这种低阶理解。目前更多的方式是寻求对于语义上车道线存在位置的检测,即使它是模糊的、被光照影响的、甚至是完全被遮挡的。传统方法还是多在于线条检测,拟合,对于弯道和遮挡的情况表现较差,当前主要使用深度学习的方法在车道线检测。深度学习的方法主流的大致分为四类:基于语义分割的方法,例如SCNN,SAD,CurveLanes-NAS等;基于行分类的方法,例如E2E-LMD、IntRA-KD、UFAST等;基于anchor的方法,例如Line-CNN、LaneATT等;还有一些其他的不好分类的方法,例如FastDraw,PolyLaneNet。由于时间原因,关于车道线检测相关算法的原理及解读,在此篇中就不展开了,后续会出车道线相关算法深入解读的文章,本篇还是主要从整体对车道线检测方法流程进行简述。算法分类如下图:

三.车道线检测的应用

当前市场,常见的adas系统中都包含了车道线检测相关的工作。自动驾驶整个流程中,车道线检测是其基础功能,为后续决策控制提供感知数据。车道线检测直接应用的场景如下:

  • 自动车道线居中:通过检测车道线,保持车辆行驶中,不偏离车道线,保持在车道线中行驶,同时结合导航能够让车辆沿当前车道线行驶。下图为一自动驾驶系统车道线检测结果:
  • 自动变道辅助

      在满足变道的场景下,当车道线清晰且为虚线,本车前方和目标车道拥有足够的安全距离,自动变道辅助可进行自动变道,变换车道,变换车道后继续沿车道保持车道居中。车道是由车道线划分,自动变道辅助的执行依赖于车道线检测的结果。

四.车道线检测的方法与流程

下面将以一个基于RNN实现的车道线检测算法为例,对一个完整的车道线检测流程进行阐述。一个完整的车道线检测流程如下:

1.数据输入

  • 数据采集

 一般以摄像头采集为主,部分还有基于雷达的车道检测算法需要通过雷达采集车道线数据,当前以基于视频的车道线检测算法为例进行展开。首先摄像头会采集车辆正前方区域的视频数据,包含前方路边,车辆等等信息。

  • 数据预处理

①BEV变换

BEV即鸟瞰图,是根据透视原理,用高视点透视法从高处某一点俯视地面起伏绘制成的立体图。简单地说,就是在空中俯视某一地区所看到的图像,比平面图更有真实感,是透视变换的一种,透视变换(Perspective Transformation)是将图片投影到一个新的视平面,也称作投影映射。利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。透视变换如图所示:

摄像头采集后的数据,经过BEV变换,产生如下结果:

②缩放

将图像缩放至模型输入尺寸

2.车道线检测模型推理

        ①将数据输入到模型,进行推理,输出车道线像素集合,如下图所示:

          ②基于车道线像素点回归拟合出车道线

3.横向控制模块

    将车道线信息传递给决策控制模块,结合车辆的状态信息,车辆运动学模型等等信息,输出车辆转向决策。顺便一提,在现实世界的自动驾驶系统中,每个控制回路的都有角度变化的限制,导致车辆驱动步骤的转向角度变化是有限制的,直接影响是每个响应周期车辆转动的角度的变化是有上限的,由于这种限制就导致对单个帧的成功攻击几乎不会导致任何有意义的横向偏差,因为角度的误差不会超出单个响应周期的最大角度变化值,因而车道线检测对单帧的异常攻击有着天生的抵抗能力。下图是一个简单的运动学自行车模型:

4.车辆驱动

    车辆驱动收到转向结果后,执行转向命令。

到此一次车道线检测流程结束。

五.总计

    本篇对车道线检测算法进行了简要描述,让大家对整个车道线流程有所了解,下篇中,将结合车道线检测的整体流程,对车道线检测的安全性进行分析,实验车道线检测攻击的方法,并在商用自动驾驶系统及物理世界验证方法的可行性,分析原因,并给出改进意见。

References

[1] Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, Xiaoou Tang. “Spatial As Deep: Spatial CNN for Traffic Scene Understanding”, AAAI2018.

[2] Mehdi FENICHE, Tomader MAZRI. Lane Detection and Tracking For Intelligent Vehicles: A Survey.

[3] https://www.cnblogs.com/huilixieqi/p/13793300.html

[4] https://zhuanlan.zhihu.com/p/365561705

[5] https://zhuanlan.zhihu.com/p/365543182

[6] https://www.ncnynl.com/archives/201904/2958.html

[7] https://blog.csdn.net/boon_228/article/details/115069772

[8] https://blog.csdn.net/amap_tech/article/details/102735421

[9] Dun Liang, Yuan-Chen Guo, Shao-Kui Zhang, Tai-Jiang Mu & Xiaolei Huang. Lane Detection: A Survey with New Results

发表回复

您的电子邮箱地址不会被公开。