近几年,自动驾驶技术快速发展,以Tesla技术最为领先。然而,一项针对Tesla自动驾驶系统Autopilot的研究揭示了其车道检测模块存在的安全隐患。研究人员通过在路面上粘贴精心设计的白色贴纸,成功诱导自动驾驶汽车驶入对向车道,引发严重后果。这项研究不仅对Tesla Autopilot系统进行了逆向分析,还设计了一种两阶段方法来优化扰动的添加,使其既能被车道检测模块识别,又不容易被驾驶员察觉。通过量化指标和启发式算法,研究人员找到了最佳的扰动配置,证明了自动驾驶技术的安全性仍有待提高。这一发现提醒我们,在完全依赖汽车自身的人工智能实现自动驾驶之前,仍需不断探索和完善技术。—自动驾驶技术的发展虽然迅猛,但其安全性问题不容忽视。Tesla Autopilot系统的车道检测模块存在被精心设计的扰动误导的风险。研究人员通过逆向分析和两阶段方法,成功诱导自动驾驶汽车驶入对向车道。这一发现不仅揭示了自动驾驶技术的潜在安全隐患,也提醒我们在完全依赖人工智能实现自动驾驶之前,仍需不断探索和完善技术。通过量化指标和启发式算法,研究人员找到了最佳的扰动配置,为提高自动驾驶安全性提供了新的思路。自动驾驶技术的发展需要在安全性、可靠性和用户体验之间找到平衡,以实现真正的智能化和自动化。
Hello,大家好!今天给大家分享一篇2021年发表在USENIXSecurity的文章:TooGoodtoBeSafe:TrickingLaneDetectioninAutonomousDrivingwithCraftedPerturbations。这篇文章介绍了他们如何攻击Tesla的自动驾驶系统Autopilot。那么到底Tesla的自动驾驶技术安不安全?用过Tesla自动驾驶的人可要注意了!!
近几年,自动驾驶技术快速发展,以Tesla技术最为领先。自动驾驶技术简单来说就是通过在汽车上安装的各种传感器(摄像头、雷达、GPS等等)采集汽车周围的数据,使用机器学习算法来检测采集的数据并重构出汽车的周围环境,最终让汽车基于感知出来的周围环境完成各种自动化任务。
车道检测就是自动驾驶中的一个主要任务,它用于让汽车跟踪路面的车道线自动行驶。如果负责车道检测的功能出现问题,那就可以直接影响到汽车的转向决策。如下图所示,一辆正在右侧车道直行的自动驾驶汽车,当行驶到右前方路面上的几个小标记(这几个小标记只是一些干扰物,并不是真实车道线)之前的位置时,车道检测模块如果将这些小标记检测为左转车道线,那就会给汽车下达一个左转的决策指令,汽车会顺着误识别出来的左转车道线驶入左侧车道,那接下去就有可能产生严重的后果!
这篇文章以TeslaAutopilot为研究对象,并将研究结果在TeslaModelS75上实施攻击,最终确认这个车道检测模块确实存在问题。如以下视频中的实验RQ6,预先在一个常见的十字路口路面上粘贴一些精心设计的白色贴纸,当汽车以时速40km/h经过这个十字路口时,毫无停顿地自动驾驶到对向车道上,并顺着对向车道的车道线继续向前行驶。
上述实验提到,需要预先在十字路口的路面上粘贴一些精心设计的白色贴纸。那么这些白色贴纸长什么样?又应该怎么粘贴在路面上?这就是这篇文章要解决的核心问题了,如下图所示为文章提出的两阶段方法来解决这个问题。
首先需要先了解TeslaAutopilot系统是如何工作的?
由于研究对象实际上是一辆汽车,需要先找到汽车上运行TeslaAutopilot系统的组件,并对Autopilot系统进行逆向分析。经过一系列黑科技操作后,得到Autopilot系统的一些基础信息:1)操作系统是AArch64Linux;2)负责车道检测等视觉相关任务的二进制程序是vision;3)负责深度学习计算的是NVIDIAGPU,并基于CUDA编程模型实现GPU调用。
通过逆向分析vision程序,梳理出基本的工作流:
现在就可以通过插桩技术对vision二进制程序插桩,然后在动态运行时可以导出摄像头图像和检测后的车道图像。具体一些关键信息如在函数cudaMemcpy、cudaMalloc、t_cuda_lane_detection::compute上进行插桩,摄像头图像配置为1280*960*16,车道图像配置为640*416*32等。最终如下图所示,可以在汽车自动驾驶过程中,取出输入的cameraimage及其对应的Laneimage。
接下来可以对输入的Cameraimage做一些修改,比如在某些像素上增加亮度,然后观察laneimage识别出来的效果。目标是要找到在拍摄出来的图片上增加哪些内容可以让车道检测模块检测为车道线。
文章通过将物理世界和数字世界的坐标进行映射,使得在物理世界任意坐标中添加任意内容可以直接体现到数字图片上。
然后设计了8个参数用来描述要在物理世界中添加的扰动,包括:长度len、宽度wid、车上摄像头与第一个扰动的纵向距离D1、车上摄像头与第一个扰动的横向距离D2、多个扰动之间的距离D3、扰动对应像素的新增灰度值∆G、扰动水平路面的转角θ、扰动的数量n,并使用包含这些参数的向量x来表示扰动。如下图所示,这样就可以把物理世界中的扰动形状、位置等信息描述出来。
有了扰动的向量描述后,接下来就需要找出一个最佳的向量,它要能实现增加这个向量到摄像头拍摄的照片上后,能被车道检测模块检测为车道线,并且还不能太明显(因为太明显了很容易被驾驶员发现)。
为了解决这个问题,文章设计了两个量化指标:
添加的扰动要求要能稳定的被车道检测模块识别成一个车道线。这个值越高,表示被检测成的车道线就越明显。于是这个值的计算公式为:V_{lane}(x)= extstylesum_{{p}isin{lane_o(x)}}G_p,即取车道线上所有像素的灰度和。
2.Visibilityofperturbation:扰动的可见性
添加扰动尽可能不明显,避免被人发觉。这个值越低,表示添加的扰动越不容易被人发觉。于是这个值的计算公式为:V_{perturb}(x)= extstylesum_{{p}isin{perturb_i(x)}}Delta{G},Delta{G}isin{x},即取扰动上所有像素的新增灰度和。
有了上述两个指标后,添加的扰动就可以通过一个公式来表示其好坏:S(x)=frac{V_{lane}(x)}{V_{perturb}(x)},公式中的S值越大,表示车道线的可见性越高,而扰动的可见性越低。这也就符合了扰动能被车道检测模块检测为车道线,并且还不能太明显的要求。通过实验,输入不同的扰动向量值,根据公式计算出S的得分,就可以形成一个向量值对应的S取值趋势。
为了快速找出这个最佳S,文章采用5种启发式算法来进行求解,最后发现Particleswarmoptimization(PSO)这种采用Greedy和Cooperative策略的算法能最快找出最高的S值。最优S对应的扰动配置为:wid=1cm,len=92cm,D1=1365cm,D2=233cm,∆G=12(n,θandD3havenoinfluenceinthesettinghere)。如下图所示,通过添加这个扰动,车道检测模块可以很好的检测出车道线,同时这个宽度为1厘米、长度不足1米的白色贴纸贴在路面上也不容易被驾驶员察觉。
自动驾驶技术的安全性仍然有待提高,而单纯依靠汽车自身的人工智能来实现自动驾驶,可能离真正可用还太遥远!
——————————
站在巨人肩膀上,站的越高,看的越远!
欢迎点赞、评论加关注~~
以上内容由58汽车提供。如有任何买车、用车、养车、玩车相关问题,欢迎在下方表单填写您的信息,我们将第一时间与您联系,为您提供快捷、实用、全面的解决方案。
原创文章,作者:58汽车,如若转载,请注明出处:https://car.58.com/7001916/