清晨,一辆无人驾驶汽车正载着你驶过十字路口。前方立着一块红色的STOP(停车)标志,车辆的“眼睛”——摄像头——精准地捕捉到了它,神经网络瞬间做出判断:“停车”。然而,就在昨天夜里,有人在标志牌右下角贴了一张巴掌大的小贴纸,上面画着几道弯弯曲曲的线条。就是这不起眼的贴纸,让车辆“大脑”在一瞬间把“停车”看成了“限速45”,于是它不再刹车,径直冲过路口……这不是科幻电影,而是真实发生在AI安全研究中的一幕,它被称为交通标志物理攻击。 我们可以用一个贯穿全程的比喻来理解它:把自动驾驶系统想象成刚上路的新手司机“小锐”,把交通标志想象成路边的“标准答案”;如果有人在标准答案上贴纸、涂黑,本来能考满分的小锐也会被带偏。本文会一起弄明白:为什么小锐会被一张贴纸骗倒?这些贴纸有哪些花样?会造成什么后果?我们又该如何帮小锐练就火眼金睛?
理解交通标志物理攻击,是每一位从事自动驾驶安全、AI红队测试的从业者的基本功。它让你在把模型送上真车前,先学会用攻击者的视角审视系统盲区,从而设计出更鲁棒、更值得信赖的AI。
目录
可视化演示
展示物理攻击使AI误分类的原理、对抗贴纸优化设计、数字与物理攻击本质区别及鲁棒性防御方案,交互切换深入理解自动驾驶视觉安全威胁。
本节配有交互动效(进入视口后自动加载,约 3KB)。
物理攻击原理:物理改动导致AI误分类 贴纸、遮挡等物理改动使CNN学习到错误特征 模型对局部像素统计特征过度依赖是脆弱性根源 Physical Change → Feature Shift → Misclassification 物理攻击发生在真实环境,无需入侵系统。
攻击概览:先认识这场“视力测试”
一天放学,小锐路过校门口的公告栏,发现“本周末运动会”的海报被人贴了一张卡通贴纸,正好盖住“运动会”三个字,整句话变得莫名其妙。物理攻击就是这类“线下改海报”的恶作剧——攻击者不修改AI内部的数据,而是直接在现实世界的标志牌上动手脚,让AI看错。把它想象成在视力表上贴黑点,比直接改电脑里的视力表电子文件更隐蔽、更难防范。
研究界把攻击分成两大家族:数字攻击和物理攻击。数字攻击像入侵打印店的电脑,把电子源文件里的文字改掉,改的是图像里的像素;物理攻击则更像趁夜黑风高在公告板上贴小纸片。两者都会让AI最终“看走眼”,但物理攻击必须面对一个现实难题:真实世界不是一张静止图片,摄像头有距离、有角度、有光照变化。攻击者设计出的贴纸,必须在所有这些变化下都“骗”过AI才行。
由此,我们给出物理攻击的“成功公式”:攻击者设计一个贴纸图案 $\delta$,把它贴在真实标志上,再由车载摄像头通过成像过程 $\mathcal{P}$ 将三维世界投影成二维图像,最后AI模型 $f_\theta$ 做出判断。攻击成功的标志就是:最终输出目标类别,而不是真实类别。
在小锐的故事里,贴纸就是 $\delta$,摄像头与光线就是 $\mathcal{P}$,小锐的“视觉大脑”就是 $f_\theta$。当三者被巧妙凑在一起,小锐明明盯着STOP,却脱口而出“限速45”。更值得警惕的是,捣蛋鬼可能只是调皮的少年,也可能是心怀不轨的破坏者——无论是谁,他们只需要一张低成本贴纸,就能让价值几十万的汽车产生危险行为。这正是物理攻击被称为“低成本、高破坏”威胁的原因。
- 标志+δ原始标志图案叠加上攻击贴纸,好比视力表上"E"字被贴了一块胶布。
- 世界投影 \(\mathcal{P}_{\phi}\)三维世界通过镜头变成二维照片的过程,包含距离、视角、光照等因素。
- AI判断 \(f_\theta\)神经网络对照片打分类分,输出“这是什么标志”。
- 目标 ≠ 真值攻击成功,就是AI的答案与标准答案对不上。
攻击原理:为什么AI会“揉眼睛”
学校视力检查时,“E“字表缺口朝下,小锐看得清清楚楚。可如果医生在视力表旁放一盏忽明忽暗的灯,或在缺口周围缠一圈彩色电线,小锐的视线就会被干扰。神经网络也有类似的”视觉错觉”。
深度学习模型的判断依据,不是人类理解的“整体语义”,而是一堆局部特征的加权。例如识别STOP时,可能特别依赖红色八边形的轮廓、白色“STOP“字样的位置。当某个局部特征被精心设计的图案覆盖,神经元激活模式会被带偏,输出概率就会”漂移“到另一个类别。这种能引发漂移的微小改动,就是对抗扰动 $\delta$。更麻烦的是,对抗样本有”传染性”:同一张贴纸在一个模型上有效,往往也能骗过其他模型,这就是攻击的迁移性,它让攻击者无需了解目标模型的具体参数也能得手。
数学上,攻击者需要在“贴纸面积不能太大”的预算内,找出一张让AI错得最离谱的贴纸:
回到小锐:贴纸上的图案不是随手画的,而是“算法精心调制的视觉噪声”,恰好踩中神经网络某个敏感区域。于是小锐的眼睛虽然还看到红色八边形,大脑的结论却已经变成了“限速45”。
- 输入图像 x正常拍到的交通标志照片,是AI看到的“原始视力表”。
- 扰动预算\(\|\delta\|_p \le \epsilon\) 限制贴纸不能无限大,物理世界里对应为“贴纸尺寸小、不易被路人察觉”。
- 损失函数 \(\mathcal{L}\)衡量模型输出与目标类别的差距,差距越大,AI错得越明显。
- argmax搜索在预算内搜索,找到一个让差距最大的最优扰动。
攻击手法:四种“贴纸骗术”大赏
捣蛋鬼们发现,想让小锐看错,手段不止一张贴纸。有人用黑色胶带横贴在STOP牌上,把“STOP“遮成”S*OP“;有人用反光贴纸改变标志的颜色和亮度;还有人干脆把整个标志牌涂鸦成一幅抽象画——人眼觉得莫名其妙,AI却会被这些”抽象画”带偏。
研究中最经典的当属贴纸干扰。加州大学伯克利分校的Eykholt等人在2018年的真实路试中发现:只需在STOP牌右下角贴一张 \(8 \times 8\) 厘米的对抗贴纸,AI在超过80%的测试视角下都会把“停车”误判为“限速45”。这类攻击的关键在于“多视角优化”——车辆在行驶中会从不同距离、不同角度观察标志,攻击者需要保证贴纸在所有这些视角下都有效。于是他们把打印-相机-光照的变换全部建模,在优化中反复模拟“贴纸被打印→相机成像”的完整过程。
物理世界攻击的优化目标可以写成:
除了贴纸,还有遮挡攻击(挡住标志局部特征)、光影攻击(用投影仪投射图案改变标志外观)、实体涂装(打印对抗图案后贴在车身上伪装成假标志牌)。在小锐眼里,这些捣蛋鬼的手段层出不穷,它必须练就更强的辨别力。
- 视角集合 \(\mathcal{V}\)车辆可能在10米外、30米外,清晨或黄昏看到标志,每一组情况都是一个视角。
- 投影函数 \(\mathcal{T}_v\)某一视角下的成像模拟,把三维标志“拍”成二维图像。
- 求和累加把每个视角下的损失相加,保证贴纸“全方位无死角”地骗过AI。
- max最外层在所有候选贴纸中挑出最狡猾的那一张。
攻击危害:一次误判的蝴蝶效应
想象小锐在十字路口把STOP看成了“限速45”,它很可能径直往前冲。这并非杞人忧天——只要感知层出错,决策层基于错误信息做的规划大概率也是错的。感知、规划、控制环环相扣,第一环的错误会像多米诺骨牌一样传导下去:错误识别 → 错误决策 → 危险动作 → 碰撞事故。
攻击危害不只是“看得错”,而是“一连串错误决策”。感知层错误识别后,规划层可能选择加速或变道,控制层随之执行,最终导致追尾、闯红灯甚至碰撞行人。学术上常用“误判链概率”来建模这类风险:事故概率 ≈ 感知误判概率 × 决策层未兜底概率 × 发生碰撞的后果概率。每一个环节都在放大前面的错误。
除了直接的安全风险,还有公众信任危机和法规真空:如果乘客知道一张贴纸就能让AI闯红灯,谁还会放心坐自动驾驶?交警和保险公司又该把责任算在谁头上?小锐感觉自己压力山大——它不仅要认对标志,还要在“有人捣乱”时依然守住安全底线。
- 感知误判概率AI把标志认错的可能性,是整条链的第一张骨牌。
- 接管失败概率即使感知错了,决策层也可能通过地图、雷达兜底;此概率指兜底也失败。
- 碰撞后果概率即便发生误判和兜底失败,是否真的撞车还与车速、周边车辆密度有关。
防御体系:给AI戴上多重保险
怎么才能让小锐不再被贴纸骗?最简单的想法是让它“多看书”——把各种贴纸版本的路牌考题都加入训练集。这正是对抗训练的思路:与其躲避攻击,不如主动把攻击者制造的“难题”拿来当练习题。
对抗训练是当前最主流的防御手段之一,本质是“极小极大博弈”:内层 max 生成最难的对抗样本(攻击者视角),外层 min 调整模型参数,使模型在这些难题上犯错最少(防御者视角)。换成小锐的话说:魔鬼出题,天使答卷——出题人不断加难,考生不断适应,最后真考场上再也不怕。
实战中,单靠对抗训练还不够。聪明的工程师还会为小锐配上“第二双眼睛”——激光雷达、毫米波雷达、高精度地图与V2X通信构成多源融合感知;再加异常检测模块专门识别标志上是否有可疑贴纸、遮挡或涂改痕迹;更前瞻的做法是把主动安全设计前置:在传感器布局、决策冗余阶段就假设“可能有人给我的路牌贴纸”。多团火聚在一起,才能烧断攻击链。
- 数据分布 \(\mathcal{D}\)从真实路况的数据分布里抽样,保证训练场景多样。
- 内层max(出题人)针对每个样本生成一个让模型最难受的对抗扰动。
- 外层min(考生)调整模型参数,把这些“超纲题”也做对。
- 期望 \(\mathbb{E}\)对所有训练样本求平均,追求的是整体鲁棒性而非单个样本的完美。
走向未来:攻守的下一回合
物理攻击还会继续升级。研究者发现,攻击者如今可以用3D打印制造完整的“对抗三维物体”——一个看起来像路边垃圾桶的装置,从任何角度都能诱发AI误判。好消息是,物理世界的硬约束(光照变化、遮挡、相机噪声、打印色差)既是攻击者的麻烦,也是防御者的武器:真实世界永远不可能像数字世界那样“指哪打哪”。
衡量攻防效果的标准也在演进。自动驾驶行业正在从ISO 26262功能安全走向ISO 21448预期功能安全(SOTIF),UL 4600也专门讨论自动驾驶安全评估。攻击成功率(ASR) 成为衡量系统鲁棒性的量化指标,它计算“攻击者把AI骗成功”的比例:
对小锐而言,真正的终点不是“永远不被骗”,而是在攻击者与防御者的无限博弈中,始终保持足够的安全裕度。未来的自动驾驶汽车,将把主动安全设计前置——从传感器布局到决策冗余,处处假设“可能有人给我的路牌贴纸”,这样才能在真实世界里守住底线。
- 攻击测试集收集 \(N\) 个物理攻击场景,每个场景包含攻击后的标志 \(\text{标志}_i + \delta_i\) 与攻击者想要的目标类别。
- 指示函数 \(\mathbf{1}\)如果AI的输出恰好等于攻击者目标,就记1,否则记0。
- 平均ASR求和再除以 \(N\),得到攻击成功率。
AI 应用场景
场景一:自动驾驶公司的感知鲁棒性测试
阶段:模型评估与鲁棒性测试
解决的问题:传统评测只用干净数据集,发现不了“贴纸攻击盲区”。自动驾驶公司在OTA(在线升级)前,需要自动运行包含贴纸、遮挡、光影变化的物理攻击测试集,确保新版本模型不会因为一张小贴纸就失灵。
具体案例:某Robotaxi公司建立了包含1000个攻击样本的“物理对抗场景库”,每次模型更新后,CI流水线自动在这些样本上测试ASR。当STOP标志攻击成功率超过5%时,构建直接失败,模型打回重训。
场景二:智能交通基础设施的冗余设计
阶段:基础设施与冗余设计
解决的问题:摄像头容易被物理攻击欺骗,需要“第二份标准答案”来交叉验证。智慧路口可以通过V2X(车路协同)直接广播交通标志信息,车辆同时比对摄像头识别结果与广播信息。
具体案例:某示范区的十字路口部署了V2X路侧单元,当车载摄像头把STOP识别成“限速45”时,车辆通过V2X收到“前方STOP”的标准信息,两相矛盾触发“保守决策”——先停车再说。
场景三:车险定价与事故责任认定
阶段:风险评估与责任认定
解决的问题:自动驾驶事故发生后,如何区分“车辆被物理攻击”与“系统本身存在功能缺陷”?保险公司需要一套可量化的攻击测试标准来界定责任。
具体案例:某车险公司引入对抗攻击测试服务,对一款全新车型做“贴纸攻击安全评分”,ASR越低,保费越低。这既激励车企提升鲁棒性,也让责任认定有数据支撑。
Python 演示
"""迷你版:用PGD在交通标志上生成"对抗贴纸",骗过CNN分类器"""import torchimport torch.nn as nnimport torch.optim as optim def make_shape(shape, size=32): """生成圆形(STOP)或三角形(让行)示意标志""" yy, xx = torch.meshgrid(torch.arange(size).float(), torch.arange(size).float(), indexing='ij') cx = cy = size / 2 r = size * 0.36 if shape == 'stop': m = (xx - cx) ** 2 + (yy - cy) ** 2 <= r ** 2 else: t = (yy - (cy - r)) / (2 * r) m = (t >= 0) & (t <= 1) & ((xx - cx).abs() <= r * (1 - t)) return m.float().unsqueeze(0).unsqueeze(0) def make_dataset(n=100): xs = [make_shape('stop' if i % 2 == 0 else 'yield') for i in range(n)] ys = torch.tensor([i % 2 for i in range(n)]) return torch.cat(xs), ys class Net(nn.Module): def __init__(self): super().__init__() self.cnn = nn.Sequential( nn.Conv2d(1, 8, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(8, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2), nn.Flatten(), nn.Linear(1024, 2), ) def forward(self, x): return self.cnn(x) def pgd_patch(model, x, y, mask, eps=0.8, steps=40, lr=0.15): """在mask限定的贴纸区域生成对抗扰动""" x_adv = x.clone() loss_fn = nn.CrossEntropyLoss() for _ in range(steps): x_adv = x_adv.detach().requires_grad_(True) loss = loss_fn(model(x_adv), y) model.zero_grad() loss.backward() x_adv = x_adv + lr * torch.sign(x_adv.grad) * mask x_adv = torch.clamp(x_adv, x - eps, x + eps) return x_adv.detach() def main(): torch.manual_seed(0) xs, ys = make_dataset(100) model = Net() opt = optim.Adam(model.parameters(), lr=0.01) loss_fn = nn.CrossEntropyLoss() for _ in range(25): idx = torch.randperm(len(xs))[:32] loss = loss_fn(model(xs[idx]), ys[idx]) opt.zero_grad() loss.backward() opt.step() mask = torch.zeros_like(xs[:1]) mask[:, :, 12:24, 12:24] = 1.0 # 中央"贴纸"区域 x, y = xs[:1], ys[:1] x_adv = pgd_patch(model, x, y, mask) p0 = model(x).softmax(1)[0] p1 = model(x_adv).softmax(1)[0] names = ['STOP(圆形)', '让行(三角形)'] print('攻击前预测:', names[p0.argmax().item()], '置信度 %.3f' % p0.max().item()) print('攻击后预测:', names[p1.argmax().item()], '置信度 %.3f' % p1.max().item()) print('贴纸攻击', '成功!' if p0.argmax().item() != p1.argmax().item() else '未生效', 'AI被一张小贴纸骗过去了' if p0.argmax().item() != p1.argmax().item() else '') if __name__ == '__main__': main()
make_shape(shape, size=32)用向量化方式生成圆形和三角形的示意交通标志图像,作为教学版“路牌视力表”。torch.meshgrid(...)生成坐标网格,让每个像素都知道自己在哪里,方便画形状。self.cnn = nn.Sequential(...)构造一个简单的卷积神经网络,模拟小锐的“视觉大脑”。mask[:, :, 12:24, 12:24] = 1.0只在标志中央区域放置“贴纸”,其余像素保持不动,模拟物理攻击的局部性。x_adv = x_adv + lr * torch.sign(x_adv.grad) * maskPGD核心更新:沿着梯度方向在贴纸区域内叠加扰动,让AI越错越离谱。x_adv = torch.clamp(x_adv, x - eps, x + eps)把扰动限制在 \([-eps, eps]\) 内,对应“贴纸不能无限大”的物理约束。model(x).softmax(1)[0]取模型的输出概率,看看小锐在每个类别上的“信心”有多高。
常见误区
误区我以为只要在电脑上生成对抗扰动,打印出来贴到路牌上,攻击就必然成功。反正AI在数字图像会被骗,物理世界也应该一样。
正解现实世界充满变数:摄像头的距离、角度、阳光强度都会改变画面,打印机的色差也会让图案失真。研究者必须把“打印-相机-光照”的完整变换都建模进优化过程,在模拟器中遍历几十种视角,才能保证贴纸在物理世界真正有效。
为何常见:因为我们习惯了数字攻击里“直接改图像像素矩阵”的思维,容易把物理世界想象成一张理想的平面图。
误区模型在干净数据集上准确率很高,说明它已经很健壮,一张小贴纸怎么骗得了它?
正解准确率和鲁棒性是两回事。一个在自然图像上准确率99%的模型,可能在精心构造的对抗扰动面前跌到10%以下。物理攻击针对的是模型“依赖局部特征”的盲区,而不是平均准确率覆盖的“常规情况”。
为何常见:因为行业长期用“准确率/错误率”来评价模型,让人误以为高准确率必然对应强抗干扰能力。
误区攻击者需要把整个STOP标志贴满,AI才会看不见它。就像人眼需要遮住整行字才读不出来。
正解研究显示,仅在STOP牌右下角贴一张 \(8 \times 8\) 厘米的贴纸,就能让AI把“停车”误判成“限速45”。神经网络依赖局部特征,几个关键像素被扰动就足以“带偏”整个判断,并不需要大面积遮挡。
为何常见:因为人眼理解物体靠整体语义,会觉得必须遮住大部分才能影响识别,但AI“看”的方式跟人截然不同。
误区自动驾驶不是还有激光雷达、毫米波雷达吗?摄像头被骗了,其他传感器顶上来不就行了?
正解交通标志是纯视觉信息(形状、颜色、文字),激光雷达只能感知障碍物轮廓,几乎无法识别标志上的文字和图案。即便多传感器融合,也可能出现“雷达说前方有静止物体、摄像头说限速45”的信息矛盾,决策层同样会陷入混乱。
为何常见:因为大家以为传感器冗余就是“备胎”,其实不同传感器的失效域完全不同,融合算法也需要专门设计,不能简单叠加。
面试题
Q1. 数字攻击与物理攻击的本质区别在于?
- A.数字攻击直接修改输入像素
- B.数字攻击需要更高算力开销
- C.物理攻击改造现实物体后拍照← 正确答案
- D.物理攻击不会影响深度模型
答案:C。物理攻击直接改造现实世界的标志牌(贴纸、遮挡),再由摄像头采集,攻击不直接操作图像矩阵。数字攻击像改视力表电子文件,物理攻击像在墙上贴纸改海报,正确答案是C。
Q2. 对抗扰动 \(\delta\) 在物理攻击中通常等价于?
- A.相机镜头畸变的修正参数
- B.贴在交通标志上的贴纸图案← 正确答案
- C.道路养护车撒落的小碎石
- D.神经网络的权重参数值
答案:B。在物理攻击中,攻击者优化的 \(\delta\) 最终会被打印成贴纸贴在标志上,因此它等价于贴纸图案。相机畸变属于环境因素,碎石是环境噪声,权重是模型自身的参数,都与攻击者设计的扰动不同。
Q3. 为什么深度神经网络容易被小贴纸骗倒?
- A.网络参数太少表达能力不足
- B.网络依赖局部特征而非整体语义← 正确答案
- C.摄像头分辨率过低导致图像模糊
- D.训练数据缺少红色八边形标志
答案:B。深度学习判断依据是局部特征的加权组合,而不是人类式的整体语义理解。贴纸恰好覆盖或干扰了关键局部特征,神经元的激活模式就发生偏移。这和人眼看整张图、读整体语义的机制截然不同。
Q4. 下列哪些属于物理攻击需要考虑的真实世界因素?
- A.相机拍摄距离与视角变化← 正确答案
- B.光照强度与阴影方向变化← 正确答案
- C.贴纸打印后的颜色偏移← 正确答案
- D.神经网络全连接层的数量
答案:ABC。物理攻击必须保证贴纸在距离、视角、光照、打印色差等真实成像条件下依然有效,这些都要纳入优化模拟。D是模型结构属性,属于内部设计因素,不影响物理世界成像条件。
Q5. 对抗训练的min-max目标中,内层max的含义是?
- A.让模型参数向最优方向更新
- B.生成让模型损失最大的对抗样本← 正确答案
- C.在训练中减小对抗扰动的大小
- D.在推理时增加输入图像的尺寸
答案:B。内层max模拟的是攻击者视角:在当前模型下生成使损失函数最大化的对抗样本,相当于“出题人出最难做的题”。外层min才是调整模型参数去适应难题。C和D描述的是别的研究方向。
Q6. 下列哪些是有效的交通标志攻击防御措施?
- A.对训练数据做对抗训练增强← 正确答案
- B.摄像头与高精地图多源融合← 正确答案
- C.增加可疑贴纸异常检测模块← 正确答案
- D.提高交通标志牌印刷分辨率
答案:ABC。对抗训练提升模型自身的鲁棒性,多源融合提供冗余信息,异常检测识别可疑区域,这三者都是防御手段。D提高印刷分辨率只会让攻击图案打印得更精细,反而帮了攻击者。
Q7. 物理攻击研究中“打印-相机循环”的主要目的是?
- A.让贴纸图案更加美观大方
- B.优化时模拟真实视角与光照← 正确答案
- C.提高打印机的打印分辨率
- D.节省物理实验的打印成本
答案:B。打印-相机循环是在每次优化迭代中模拟“贴纸被打印→相机成像→AI识别”的完整链路,让生成图案适应真实世界的色彩与几何失真。A、C、D都不是研究的核心目的。
Q8. 关于ASR(攻击成功率),下列说法错误的是?
- A.攻击在测试场景中的成功率
- B.被攻击时多数预测的类别分布
- C.系统在攻击下的鲁棒性表现
- D.攻击的物理实施成本高低← 正确答案
答案:D。ASR能反映攻击成功率、错误类别分布以及系统的鲁棒性水平,但它是一个实验测试指标,无法直接告诉我们攻击者制作贴纸需要多少成本、多长时间。所以D是“无法直接反映”的选项。
Q9. 交通标志物理攻击可能造成哪些危害?
- A.感知误判引发一连串错误决策← 正确答案
- B.导致追尾与闯红灯等事故风险← 正确答案
- C.降低公众对自动驾驶车的信任← 正确答案
- D.让模型离线训练时间显著变长
答案:ABC。物理攻击发生在推理阶段,感知误判会引发决策错误,进而带来事故风险和公众信任危机。D说的是训练阶段的计算开销,与推理时的物理攻击没有直接关系。
Q10. 对抗样本的“迁移性”指的是?
- A.有效样本也容易骗过其他模型← 正确答案
- B.攻击样本会自动复制到全世界路牌
- C.模型训练时使用了迁移学习技术
- D.贴纸从路牌上脱落并掉到地上
答案:A。迁移性指针对某个模型生成的对抗样本,在不修改的前提下也能以较高概率骗过其他模型。这种特性让攻击者可以在本地自建模型上制造贴纸,再拿到目标车辆上使用,实现“黑盒攻击”。B、C、D都与迁移性无关。