特斯拉自动驾驶的车道线攻击"/>
腾讯科恩实验室对特斯拉自动驾驶的车道线攻击
Too Good to Be Safe: Tricking Lane Detection in Autonomous Driving with Crafted Perturbations
文章目录
- Too Good to Be Safe: Tricking Lane Detection in Autonomous Driving with Crafted Perturbations
- Two-stage attack
- Adding Digital Perturbations
- 将(X,Y,Z)现实世界位置映射到(u,v)二维图像上,找到这种映射关系
- Finding the Best Perturbations:找最优解、
- Quality of Perturbations
- Optimization problem
- Evaluation
- Defense
- Enhancing the lane detection module
- Enhancing the control policy.
准确地说,过于敏感的车道检测模块可能会将对手在路面上引入的小标记视为有效车道,从而导致车辆朝着错误的方向行驶。
要设计出这样的小路标,既能被车道检测模块感知,又不被司机察觉,这是一个挑战。手动操纵道路标记对车道检测模块发起攻击是一项劳动密集型且容易出错的工作。
难点:
- 由于车道检测系统是嵌入式的车辆没有开源,很难访问其二进制和理解其计算逻辑。具体来说,GPU中深度学习算法的提取和理解是一项具有挑战性的工作
- 确定误导车辆的最佳扰动是不容易的,它应该被车道检测模块感知,但司机不注意
- 即使车道检测模块的输入受到干扰会误导车辆,但通过在地面上添加不引人注意的道路标记来决定在现实世界中如何发动攻击并不容易
贡献:
- 我们对车道检测模块在真实车辆中的安全性进行了首次调查,发现其灵敏度可以被对手利用来生成假车道,从而误导车辆。
- 特斯拉自动驾驶中的车道检测模块容易受到的攻击,方法能够快速产生有效的扰动
challenges:
-
如何定位摄像头图像和车道线位置
-
如何给输入的相机图像添加扰动?一种直观的方法是在像素级添加扰动,而不考虑物理部署,然而,在物理世界中实现这样的扰动是j几乎不可能的,因为考虑到透镜的畸变,要将像素精确地投射到物理世界并不容易
-
如何找到最佳扰动?最好的干扰应该尽量不引人注目,这样司机就不会注意到它们,同时它们可以迫使车道检测模块输出一个假车道。由于目标模型处于黑盒设置中,无法采用基于梯度的优化方法,因此寻找最佳扰动具有挑战性。
逆向工程提取图像信息
- 重点对GPU内存中的图像进行定位和提取。
- 更准确地说,在找到负责车道检测的二值后
- Tesla Autopilot的文件系统中,有一个名为vision的二进制文件。
- 通过逆向工程,我们发现这种二元结构负责与视觉相关的任务,包括车道检测。它将相机图像数据传输到GPU内存中,完成与视觉相关的计算),
- 我们通过静态分析来确定图像在GPU内存中的可用时间,然后检测二值并进行动态分析来确定图像的内存地址。然后,我们利用CUDA api对目标图像进行提取和修改。
- 由于车道检测是在GPU中完成的,而目标图像(相机图像和车道图像)与车道检测有关,目标图像会在特定的时间存储在GPU内存中,因此我们只需要确定“何时”和“何处”。
- cudaMalloc开头的函数用于在GPU中分配内存(cudaMallocHost在CPU中分配内存除外)。我们将这些函数表示为cudaMalloc*,每个函数都有两种类型的参数。一个是指向已分配内存的指针,另一个表示数据的大小信息。cudaMalloc*将作为在GPU内存中定位车道图像
- cudaMemcpy开头的函数用于将数据从一个地址复制到另一个地址。我们将这些函数表示为cudaMemcpy,它接受四种类型的参数,包括源地址、目的地址、大小信息以及表示复制操作方向的模式:主机到GPU、GPU到主机、主机到主机、GPU到GPU。cudaMemcpy将作为在GPU内存中定位相机图像的关键。我们还利用这些函数从GPU内存中转储目标图像,在我们得到它们的地址和大小信息后。
- cudaConfigurecall:该函数将在主机调用每个内核之前调用,以在GPU上配置启动。因此,我们可以通过定位cudaconfigurecall在二进制文件中的位置来定位内核
- 通过Hook 来确定lane image 的位置,通过cudaConfigureCall枚举所有内核,根据起始地址和数据大小,再可视化图像就能确定用于车道检测的核函数。
Two-stage attack
Adding Digital Perturbations
将(X,Y,Z)现实世界位置映射到(u,v)二维图像上,找到这种映射关系
列出的8个参数来表征数字扰动。Len和wid决定了扰动的形状。D1、D2和D3决定了扰动的位置。∆G为摄动时像素灰度值的增量。n表示扰动次数(如图5中n = 2)。∆G值越大,扰动n个数越多,则扰动的附加作用越明显。θ是扰动的旋转角。这8个参数包含一个向量x:
作用效果如下:
Finding the Best Perturbations:找最优解、
两个度量来量化数字世界中扰动的有效性,并在此基础上构造了一个寻找最佳扰动的优化问题
Quality of Perturbations
-
Visibility of lane:表示伪车道在输出车道图像中的可见性。它的计算方法是将每个车道线像素的灰度值相加(每个Gp代表当前像素的置信度)。Vlane(x)值越高,表示假车道的可见性越高。
-
Visibility of perturbation:是添加到输入摄像机图像上的扰动的可见性。这个分数结合了添加像素的数量和这些像素灰度值的增量来表示可见性。Vperturb(x)的值越低,表示扰动对人类来说越不显眼。改变的像素值增量小,改变的像素数目少则越不可见。
-
总评价指数:整体分数扰动。S(x)值越高,表示扰动在不引人注目的同时产生了较强的伪车道。如果扰动不能创建一个假车道,S(x)应该为零。
Optimization problem
通过最优化向量X的值,最优化S(x)
贪心:鼓励搜索位置根据算法找到的提示移动到值更高的坐标
非贪心:本质上是随机更新位置的,并且接受更高可能性的更好的解
合作:搜索个体会与他人共享信息,并根据群体信息更新位置
非合租:独立工作、不互通
- 甲虫触角搜索(BAS) 贪心
- 粒子群优化(PSO) 贪心、合作
- 甲虫群优化(BSO) 贪心、合作
- 人工蜂群(ABC) 非贪心、合作
- 模拟退火(SA) 非贪心
**trick:**n和θ没有加入到算法中
- 首先,由于扰动数n为离散变量,而其他参数均为连续变量,如果考虑n,优化问题将成为混合离散连续优化问题,难以找到最优结果。
- 其次,由于旋转角度θ是由攻击意图决定的,因此算法得到的θ值可能不能满足攻击者的要求
- 因此,我们将n 和 θ固定为常数
Evaluation
6个问题来评估我们对车道线检测模块的攻击
-
启发式算法找到最佳扰动的效率如何
- 记录历史扰动最高分数和top10个扰动的平均分数,排除偶然性
- BAS和SA同样有多输入和其他三种相同
- results:收敛速度快、top1 S(x)和top-10平均S(x)上都取得高分
- PSO算法在五种算法中找到了最高的S(x) (top-1和top-10)。只有ABC的收敛速度比PSO快,但ABC发现的top-1和top-10的平均S(x)远低于PSO。
-
输入原始图像时,车道检测模块不输出,但添加一个不引人注意的扰动后,将检测到一个清晰的车道。并且该扰动对人类感知几乎是无形的
-
扰动数n和旋转角θ如何影响最佳扰动?
-
动机:我们没有在启发式算法中加入扰动数n和旋转角θ。在该RQ中,我们研究了n和θ对S(x)的影响。
-
n :[1,5], θ :[0:30:2],一共有5×14=70种组合,搜索其最佳S(x),并且记录
-
图的第一行表示特定θ下的平均S(x),最后一列表示特定n下的平均S(x)。每种设置下的average (x)表示该设置的总体有效性
-
n无显著影响,n=2时效果最好,θ随着增大S(x)减小
-
-
对于不同的输入摄像机图像,我们的方法的性能如何?
- num1和num4的得分比其他的高,因为这两个图像中的地面都是干净的,一个小的扰动很容易导致输出车道图像中出现假车道。虽然NUM.2/3/5的分数相对较低,但扰动不易被人眼察觉,假车道有效且强。
-
最佳扰动的共同特征是什么?
-
我们主要关注x中的五个维度,包括表示扰动形状的wid和len,表示相对位置的D1和D2,以及表示扰动灰度值的增量的∆G
-
shape:wid比len小得多,这意味着“窄而长”的扰动比“宽而短”的扰动更有效
-
position:对于扰动的位置,D1范围为10.14m ~ 15.30m, D2范围为1.51m ~ 2.23m。
-
灰度值增量:在不同的输入图像中,∆G的值有所不同。对于干净的地面(num1和num4)或黑暗的地面(num3和num4),一个小的增量可以使输出图像中的车道非常明显,而“脏”的地面(num2和num5)需要更大的∆G值来生成一个假车道
-
总结:窄而长”的扰动更有可能造成假车道。所需的灰度值增量(∆G)取决于地面的亮度和洁净度
-
-
这种攻击在现实世界中有多有效?
-
分别寻找n = 1和n = 2场景下的最佳数字扰动。当n = 1时,其长度len为1.5m,宽度wid为1cm。n = 2时,每次扰动的长度为0.4m,宽度为1cm,相邻距离为(D3) 0.7m。
-
x轴为每帧的纵向距离(D1), y轴为车道可见平面(x)。Vlane(x)值越大,说明攻击越有效。我们还提出以下看法
- n=1比n=2效果更高,说明:即使是一个单一的扰动也可以在物理世界中起作用。
- 直线摄动(θ = 0)更容易被检测到,θ要低一点效果好
- 因此,扰动在明亮和黑暗环境中都起作用。更黑暗的环境甚至会让车道能见度更高(如图(b)中n = 2)
- 当n = 1时,5m≤D1≤12m时车道可见性较高。当n = 2时,5m≤D1≤7m时车道可见性较高,因此,如果适当地实施扰动(如图11 (a)中n = 1,θ = 0)),假车道可以在大范围D1 (15m到3m)内被检测到,D1 ≤ 9m更容易检测到
-
精心设计的微扰可以被检测为假车道,而不会被人类察觉,在现实世界中依旧有效
-
-
我们能在现实世界中误导交通工具吗
-
在常见的十字路口场景中(即直线车道在车辆面前消失),这些扰动会误导车辆进入迎面车道
-
结果表明,微扰会产生假车道,使车辆转向。此外,车辆偏离了5.1米(超过车辆宽度的2.5倍),并沿着假车道行驶到对面的车辆,显示了现实世界中的严重威胁。
-
(b):车辆驶入十字路口之前,这些扰动被检测并识别为假车道,因此车辆开始沿着检测到的车道转向。
-
©:车辆沿假车道行驶,转向左侧(迎面而来的车道)。在此过程中,将中间车道(车道图像中的右侧车道)识别为右侧车道。基于此检测结果,车辆驶入迎面而来的车流。
-
(d):车辆偏离了5.1米(超过车辆宽度的2.5倍),被引入了迎面而来的车道,并在这个错误的方向上继续行驶。
-
- 总结:由这些不引人注意的干扰产生的假车道能够成功地欺骗车辆进入自动转向模式,甚至误导车辆进入迎面而来的车流(可能会撞上迎面而来车道上的其他车辆),从而显示出现实世界中潜在的严重威胁。
-
Defense
Enhancing the lane detection module
- 通过特征检测异常车道线。由于攻击者希望使干扰不引人注目,所以生成假车道的干扰的大小应该比正常车道小得多
- 攻击者为了误导车辆造成安全和/或安全后果,检测到的假车道会与真实车道不一致(如产生急转弯)。因此,车道检测模块可以利用这些特征提前拒绝异常车道
- 训练数据中包含对抗性例子。Goodfellow等提出,在训练数据中加入对抗例子,可以使模型对对抗攻击具有更强的鲁棒性。
Enhancing the control policy.
- 考虑其他视觉元素。如果车辆的转向控制策略仅仅依赖于车道检测结果,那么车辆很容易受到我们的攻击。因此,它可以通过其他视觉元素(例如,来的车辆,行人)来辅助转向控制
- 多传感器融合。在特斯拉自动驾驶中,车道检测模块依赖于视觉数据。一种可能的防御方法是采用多传感器融合。也就是说,控制策略还应考虑来自激光雷达、雷达、声纳和GPS等传感器的信息
- 先进的警告。由于自动驾驶的安全性可能无法得到充分保障,车辆在检测到异常车道线(如车道尺寸过小、车道角度过陡等)时,应提前向驾驶员发出警告。此外,为保证安全,车辆应要求驾驶员手动控制,并退出自动转向模式。
我们将从两个方面拓展工作。首先,我们将评估Apollo和Openpilot等其他自动驾驶系统中车道检测模块的脆弱性。其次,我们将探索通过在真实车道上添加扰动来攻击车道检测模块的可行性,例如使用暗标记来覆盖部分真实车道或添加标记来改变真实车道的形状。
警告。由于自动驾驶的安全性可能无法得到充分保障,车辆在检测到异常车道线(如车道尺寸过小、车道角度过陡等)时,应提前向驾驶员发出警告。此外,为保证安全,车辆应要求驾驶员手动控制,并退出自动转向模式。
我们将从两个方面拓展工作。首先,我们将评估Apollo和Openpilot等其他自动驾驶系统中车道检测模块的脆弱性。其次,我们将探索通过在真实车道上添加扰动来攻击车道检测模块的可行性,例如使用暗标记来覆盖部分真实车道或添加标记来改变真实车道的形状。
更多推荐
腾讯科恩实验室对特斯拉自动驾驶的车道线攻击
发布评论