清晨,一辆无人驾驶汽车正载着你驶过十字路口。前方立着一块红色的STOP(停车)标志,车辆的“眼睛”——摄像头——精准地捕捉到了它,神经网络瞬间做出判断:“停车”。然而,就在昨天夜里,有人在标志牌右下角贴了一张巴掌大的小贴纸,上面画着几道弯弯曲曲的线条。就是这不起眼的贴纸,让车辆“大脑”在一瞬间把“停车”看成了“限速45”,于是它不再刹车,径直冲过路口……这不是科幻电影,而是真实发生在AI安全研究中的一幕,它被称为交通标志物理攻击。 我们可以用一个贯穿全程的比喻来理解它:把自动驾驶系统想象成刚上路的新手司机“小锐”,把交通标志想象成路边的“标准答案”;如果有人在标准答案上贴纸、涂黑,本来能考满分的小锐也会被带偏。本文会一起弄明白:为什么小锐会被一张贴纸骗倒?这些贴纸有哪些花样?会造成什么后果?我们又该如何帮小锐练就火眼金睛?

岗位关联

理解交通标志物理攻击,是每一位从事自动驾驶安全、AI红队测试的从业者的基本功。它让你在把模型送上真车前,先学会用攻击者的视角审视系统盲区,从而设计出更鲁棒、更值得信赖的AI。

目录
  1. 可视化演示
  2. 攻击概览:先认识这场“视力测试”
  3. 攻击原理:为什么AI会“揉眼睛”
  4. 攻击手法:四种“贴纸骗术”大赏
  5. 攻击危害:一次误判的蝴蝶效应
  6. 防御体系:给AI戴上多重保险
  7. 走向未来:攻守的下一回合
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示物理攻击使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”。更值得警惕的是,捣蛋鬼可能只是调皮的少年,也可能是心怀不轨的破坏者——无论是谁,他们只需要一张低成本贴纸,就能让价值几十万的汽车产生危险行为。这正是物理攻击被称为“低成本、高破坏”威胁的原因。

fθ(Pϕ(标志+δ))=ytarget≠ytrue\displaystyle f_\theta\big(\mathcal{P}_{\phi}(\text{标志} + \delta)\big) = y_{target} \neq y_{true}
通俗理解:这个公式是说“贴纸贴在标志上 → 相机拍下来 → AI看走眼”是一条完整链条,攻击成功 = 最终判断 ≠ 真实情况。
  1. 标志+δ原始标志图案叠加上攻击贴纸,好比视力表上"E"字被贴了一块胶布。
    标志+δ\text{标志} + \delta
  2. 世界投影 \(\mathcal{P}_{\phi}\)三维世界通过镜头变成二维照片的过程,包含距离、视角、光照等因素。
    Pϕ\mathcal{P}_{\phi}
  3. AI判断 \(f_\theta\)神经网络对照片打分类分,输出“这是什么标志”。
    fθ(⋅)f_\theta(\cdot)
  4. 目标 ≠ 真值攻击成功,就是AI的答案与标准答案对不上。
    ytarget≠ytruey_{target} \neq y_{true}

攻击原理:为什么AI会“揉眼睛”

学校视力检查时,“E“字表缺口朝下,小锐看得清清楚楚。可如果医生在视力表旁放一盏忽明忽暗的灯,或在缺口周围缠一圈彩色电线,小锐的视线就会被干扰。神经网络也有类似的”视觉错觉”。

深度学习模型的判断依据,不是人类理解的“整体语义”,而是一堆局部特征的加权。例如识别STOP时,可能特别依赖红色八边形的轮廓、白色“STOP“字样的位置。当某个局部特征被精心设计的图案覆盖,神经元激活模式会被带偏,输出概率就会”漂移“到另一个类别。这种能引发漂移的微小改动,就是对抗扰动 $\delta$。更麻烦的是,对抗样本有”传染性”:同一张贴纸在一个模型上有效,往往也能骗过其他模型,这就是攻击的迁移性,它让攻击者无需了解目标模型的具体参数也能得手。

数学上,攻击者需要在“贴纸面积不能太大”的预算内,找出一张让AI错得最离谱的贴纸:

回到小锐:贴纸上的图案不是随手画的,而是“算法精心调制的视觉噪声”,恰好踩中神经网络某个敏感区域。于是小锐的眼睛虽然还看到红色八边形,大脑的结论却已经变成了“限速45”。

δ∗=arg⁡max⁡∥δ∥p≤ϵL(fθ(x+δ),ytarget)\displaystyle \delta^* = \arg\max_{\|\delta\|_p \le \epsilon} \mathcal{L}\big(f_\theta(x + \delta), y_{target}\big)
通俗理解:在“贴纸面积不超过 \(\epsilon\)”的规则下,找到一张让AI损失函数最大、错得最离谱的贴纸图案。
  1. 输入图像 x正常拍到的交通标志照片,是AI看到的“原始视力表”。
    xx
  2. 扰动预算\(\|\delta\|_p \le \epsilon\) 限制贴纸不能无限大,物理世界里对应为“贴纸尺寸小、不易被路人察觉”。
    ∥δ∥p≤ϵ\|\delta\|_p \le \epsilon
  3. 损失函数 \(\mathcal{L}\)衡量模型输出与目标类别的差距,差距越大,AI错得越明显。
    L(fθ(x+δ),ytarget)\mathcal{L}(f_\theta(x + \delta), y_{target})
  4. argmax搜索在预算内搜索,找到一个让差距最大的最优扰动。
    δ∗=arg⁡max⁡∥δ∥p≤ϵ⋯\delta^* = \arg\max_{\|\delta\|_p \le \epsilon} \cdots

攻击手法:四种“贴纸骗术”大赏

捣蛋鬼们发现,想让小锐看错,手段不止一张贴纸。有人用黑色胶带横贴在STOP牌上,把“STOP“遮成”S*OP“;有人用反光贴纸改变标志的颜色和亮度;还有人干脆把整个标志牌涂鸦成一幅抽象画——人眼觉得莫名其妙,AI却会被这些”抽象画”带偏。

研究中最经典的当属贴纸干扰。加州大学伯克利分校的Eykholt等人在2018年的真实路试中发现:只需在STOP牌右下角贴一张 \(8 \times 8\) 厘米的对抗贴纸,AI在超过80%的测试视角下都会把“停车”误判为“限速45”。这类攻击的关键在于“多视角优化”——车辆在行驶中会从不同距离、不同角度观察标志,攻击者需要保证贴纸在所有这些视角下都有效。于是他们把打印-相机-光照的变换全部建模,在优化中反复模拟“贴纸被打印→相机成像”的完整过程。

物理世界攻击的优化目标可以写成:

除了贴纸,还有遮挡攻击(挡住标志局部特征)、光影攻击(用投影仪投射图案改变标志外观)、实体涂装(打印对抗图案后贴在车身上伪装成假标志牌)。在小锐眼里,这些捣蛋鬼的手段层出不穷,它必须练就更强的辨别力。

max⁡δ  ∑v∈VL(fθ(Tv(标志+δ)),ytarget)\displaystyle \max_{\delta} \; \sum_{v \in \mathcal{V}} \mathcal{L}\big(f_\theta(\mathcal{T}_v(\text{标志} + \delta)), y_{target}\big)
通俗理解:一边让AI在“所有偷拍角度”下都认错,一边保证贴纸体积足够小、不易被人类发现。
  1. 视角集合 \(\mathcal{V}\)车辆可能在10米外、30米外,清晨或黄昏看到标志,每一组情况都是一个视角。
    v∈Vv \in \mathcal{V}
  2. 投影函数 \(\mathcal{T}_v\)某一视角下的成像模拟,把三维标志“拍”成二维图像。
    Tv(⋅)\mathcal{T}_v(\cdot)
  3. 求和累加把每个视角下的损失相加,保证贴纸“全方位无死角”地骗过AI。
    ∑v∈VL(⋯ )\sum_{v \in \mathcal{V}} \mathcal{L}(\cdots)
  4. max最外层在所有候选贴纸中挑出最狡猾的那一张。
    max⁡δ\max_{\delta}

攻击危害:一次误判的蝴蝶效应

想象小锐在十字路口把STOP看成了“限速45”,它很可能径直往前冲。这并非杞人忧天——只要感知层出错,决策层基于错误信息做的规划大概率也是错的。感知、规划、控制环环相扣,第一环的错误会像多米诺骨牌一样传导下去:错误识别 → 错误决策 → 危险动作 → 碰撞事故。

攻击危害不只是“看得错”,而是“一连串错误决策”。感知层错误识别后,规划层可能选择加速或变道,控制层随之执行,最终导致追尾、闯红灯甚至碰撞行人。学术上常用“误判链概率”来建模这类风险:事故概率 ≈ 感知误判概率 × 决策层未兜底概率 × 发生碰撞的后果概率。每一个环节都在放大前面的错误。

除了直接的安全风险,还有公众信任危机和法规真空:如果乘客知道一张贴纸就能让AI闯红灯,谁还会放心坐自动驾驶?交警和保险公司又该把责任算在谁头上?小锐感觉自己压力山大——它不仅要认对标志,还要在“有人捣乱”时依然守住安全底线。

Pcollision≈P(y^≠ytrue)×P(接管失败∣y^≠ytrue)×P(碰撞后果)\displaystyle P_{\text{collision}} \approx P(\hat{y} \neq y_{true}) \times P(\text{接管失败} \mid \hat{y} \neq y_{true}) \times P(\text{碰撞后果})
通俗理解:就像多米诺骨牌,第一张“感知误判”倒下后,后面每一张都会跟着倒,而且越放越大。
  1. 感知误判概率AI把标志认错的可能性,是整条链的第一张骨牌。
    P(y^≠ytrue)P(\hat{y} \neq y_{true})
  2. 接管失败概率即使感知错了,决策层也可能通过地图、雷达兜底;此概率指兜底也失败。
    P(接管失败∣y^≠ytrue)P(\text{接管失败} \mid \hat{y} \neq y_{true})
  3. 碰撞后果概率即便发生误判和兜底失败,是否真的撞车还与车速、周边车辆密度有关。
    P(碰撞后果)P(\text{碰撞后果})

防御体系:给AI戴上多重保险

怎么才能让小锐不再被贴纸骗?最简单的想法是让它“多看书”——把各种贴纸版本的路牌考题都加入训练集。这正是对抗训练的思路:与其躲避攻击,不如主动把攻击者制造的“难题”拿来当练习题。

对抗训练是当前最主流的防御手段之一,本质是“极小极大博弈”:内层 max 生成最难的对抗样本(攻击者视角),外层 min 调整模型参数,使模型在这些难题上犯错最少(防御者视角)。换成小锐的话说:魔鬼出题,天使答卷——出题人不断加难,考生不断适应,最后真考场上再也不怕。

实战中,单靠对抗训练还不够。聪明的工程师还会为小锐配上“第二双眼睛”——激光雷达、毫米波雷达、高精度地图与V2X通信构成多源融合感知;再加异常检测模块专门识别标志上是否有可疑贴纸、遮挡或涂改痕迹;更前瞻的做法是把主动安全设计前置:在传感器布局、决策冗余阶段就假设“可能有人给我的路牌贴纸”。多团火聚在一起,才能烧断攻击链。

min⁡θ  E(x,y)∼D[max⁡∥δ∥p≤ϵL(fθ(x+δ),y)]\displaystyle \min_\theta \; \mathbb{E}_{(x, y) \sim \mathcal{D}} \left[ \max_{\|\delta\|_p \le \epsilon} \mathcal{L}\big(f_\theta(x + \delta), y\big) \right]
通俗理解:红色部分是“出题人”制造最坏情况的对抗样本,蓝色部分是“考生”在难题上训练自己,让损失最小。
  1. 数据分布 \(\mathcal{D}\)从真实路况的数据分布里抽样,保证训练场景多样。
    (x,y)∼D(x, y) \sim \mathcal{D}
  2. 内层max(出题人)针对每个样本生成一个让模型最难受的对抗扰动。
    max⁡∥δ∥p≤ϵL(fθ(x+δ),y)\max_{\|\delta\|_p \le \epsilon} \mathcal{L}(f_\theta(x+\delta), y)
  3. 外层min(考生)调整模型参数,把这些“超纲题”也做对。
    min⁡θ  E[⋯ ]\min_\theta \; \mathbb{E}[\cdots]
  4. 期望 \(\mathbb{E}\)对所有训练样本求平均,追求的是整体鲁棒性而非单个样本的完美。
    E(x,y)∼D[⋯ ]\mathbb{E}_{(x,y)\sim\mathcal{D}}[\cdots]

走向未来:攻守的下一回合

物理攻击还会继续升级。研究者发现,攻击者如今可以用3D打印制造完整的“对抗三维物体”——一个看起来像路边垃圾桶的装置,从任何角度都能诱发AI误判。好消息是,物理世界的硬约束(光照变化、遮挡、相机噪声、打印色差)既是攻击者的麻烦,也是防御者的武器:真实世界永远不可能像数字世界那样“指哪打哪”。

衡量攻防效果的标准也在演进。自动驾驶行业正在从ISO 26262功能安全走向ISO 21448预期功能安全(SOTIF),UL 4600也专门讨论自动驾驶安全评估。攻击成功率(ASR) 成为衡量系统鲁棒性的量化指标,它计算“攻击者把AI骗成功”的比例:

对小锐而言,真正的终点不是“永远不被骗”,而是在攻击者与防御者的无限博弈中,始终保持足够的安全裕度。未来的自动驾驶汽车,将把主动安全设计前置——从传感器布局到决策冗余,处处假设“可能有人给我的路牌贴纸”,这样才能在真实世界里守住底线。

ASR(f)=1N∑i=1N1[fθ(P(标志i+δi))=ytarget(i)]\displaystyle \mathrm{ASR}(f) = \frac{1}{N}\sum_{i=1}^{N} \mathbf{1}\big[f_\theta(\mathcal{P}(\text{标志}_i + \delta_i)) = y_{target}^{(i)}\big]
通俗理解:把一批攻击样例扔给AI,看它有多大比例“上钩”。ASR越高,系统越容易被骗;防御目标就是不断压低ASR。
  1. 攻击测试集收集 \(N\) 个物理攻击场景,每个场景包含攻击后的标志 \(\text{标志}_i + \delta_i\) 与攻击者想要的目标类别。
    i=1,…,Ni = 1, \dots, N
  2. 指示函数 \(\mathbf{1}\)如果AI的输出恰好等于攻击者目标,就记1,否则记0。
    1[fθ(⋯ )=ytarget(i)]\mathbf{1}[f_\theta(\cdots) = y_{target}^{(i)}]
  3. 平均ASR求和再除以 \(N\),得到攻击成功率。
    1N∑i=1N⋯\frac{1}{N}\sum_{i=1}^{N} \cdots

AI 应用场景

场景一:自动驾驶公司的感知鲁棒性测试

阶段:模型评估与鲁棒性测试

解决的问题:传统评测只用干净数据集,发现不了“贴纸攻击盲区”。自动驾驶公司在OTA(在线升级)前,需要自动运行包含贴纸、遮挡、光影变化的物理攻击测试集,确保新版本模型不会因为一张小贴纸就失灵。

具体案例:某Robotaxi公司建立了包含1000个攻击样本的“物理对抗场景库”,每次模型更新后,CI流水线自动在这些样本上测试ASR。当STOP标志攻击成功率超过5%时,构建直接失败,模型打回重训。

场景二:智能交通基础设施的冗余设计

阶段:基础设施与冗余设计

解决的问题:摄像头容易被物理攻击欺骗,需要“第二份标准答案”来交叉验证。智慧路口可以通过V2X(车路协同)直接广播交通标志信息,车辆同时比对摄像头识别结果与广播信息。

具体案例:某示范区的十字路口部署了V2X路侧单元,当车载摄像头把STOP识别成“限速45”时,车辆通过V2X收到“前方STOP”的标准信息,两相矛盾触发“保守决策”——先停车再说。

场景三:车险定价与事故责任认定

阶段:风险评估与责任认定

解决的问题:自动驾驶事故发生后,如何区分“车辆被物理攻击”与“系统本身存在功能缺陷”?保险公司需要一套可量化的攻击测试标准来界定责任。

具体案例:某车险公司引入对抗攻击测试服务,对一款全新车型做“贴纸攻击安全评分”,ASR越低,保费越低。这既激励车企提升鲁棒性,也让责任认定有数据支撑。

Python 演示

python85 行
"""迷你版:用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()
目的:训练一个能区分“圆形STOP”和“三角形让行”的迷你CNN,再用PGD在标志中央生成一张“对抗贴纸”,观察AI的预测如何被翻转。这是物理攻击研究中最核心的数字侧流程。
  1. make_shape(shape, size=32)用向量化方式生成圆形和三角形的示意交通标志图像,作为教学版“路牌视力表”。
  2. torch.meshgrid(...)生成坐标网格,让每个像素都知道自己在哪里,方便画形状。
  3. self.cnn = nn.Sequential(...)构造一个简单的卷积神经网络,模拟小锐的“视觉大脑”。
  4. mask[:, :, 12:24, 12:24] = 1.0只在标志中央区域放置“贴纸”,其余像素保持不动,模拟物理攻击的局部性。
  5. x_adv = x_adv + lr * torch.sign(x_adv.grad) * maskPGD核心更新:沿着梯度方向在贴纸区域内叠加扰动,让AI越错越离谱。
  6. x_adv = torch.clamp(x_adv, x - eps, x + eps)把扰动限制在 \([-eps, eps]\) 内,对应“贴纸不能无限大”的物理约束。
  7. model(x).softmax(1)[0]取模型的输出概率,看看小锐在每个类别上的“信心”有多高。

常见误区

误区我以为只要在电脑上生成对抗扰动,打印出来贴到路牌上,攻击就必然成功。反正AI在数字图像会被骗,物理世界也应该一样。

正解现实世界充满变数:摄像头的距离、角度、阳光强度都会改变画面,打印机的色差也会让图案失真。研究者必须把“打印-相机-光照”的完整变换都建模进优化过程,在模拟器中遍历几十种视角,才能保证贴纸在物理世界真正有效。

为何常见:因为我们习惯了数字攻击里“直接改图像像素矩阵”的思维,容易把物理世界想象成一张理想的平面图。

误区模型在干净数据集上准确率很高,说明它已经很健壮,一张小贴纸怎么骗得了它?

正解准确率和鲁棒性是两回事。一个在自然图像上准确率99%的模型,可能在精心构造的对抗扰动面前跌到10%以下。物理攻击针对的是模型“依赖局部特征”的盲区,而不是平均准确率覆盖的“常规情况”。

为何常见:因为行业长期用“准确率/错误率”来评价模型,让人误以为高准确率必然对应强抗干扰能力。

误区攻击者需要把整个STOP标志贴满,AI才会看不见它。就像人眼需要遮住整行字才读不出来。

正解研究显示,仅在STOP牌右下角贴一张 \(8 \times 8\) 厘米的贴纸,就能让AI把“停车”误判成“限速45”。神经网络依赖局部特征,几个关键像素被扰动就足以“带偏”整个判断,并不需要大面积遮挡。

为何常见:因为人眼理解物体靠整体语义,会觉得必须遮住大部分才能影响识别,但AI“看”的方式跟人截然不同。

误区自动驾驶不是还有激光雷达、毫米波雷达吗?摄像头被骗了,其他传感器顶上来不就行了?

正解交通标志是纯视觉信息(形状、颜色、文字),激光雷达只能感知障碍物轮廓,几乎无法识别标志上的文字和图案。即便多传感器融合,也可能出现“雷达说前方有静止物体、摄像头说限速45”的信息矛盾,决策层同样会陷入混乱。

为何常见:因为大家以为传感器冗余就是“备胎”,其实不同传感器的失效域完全不同,融合算法也需要专门设计,不能简单叠加。

面试题

Q1. 数字攻击与物理攻击的本质区别在于?

单选题 · easy

  • A.数字攻击直接修改输入像素
  • B.数字攻击需要更高算力开销
  • C.物理攻击改造现实物体后拍照← 正确答案
  • D.物理攻击不会影响深度模型

答案:C。物理攻击直接改造现实世界的标志牌(贴纸、遮挡),再由摄像头采集,攻击不直接操作图像矩阵。数字攻击像改视力表电子文件,物理攻击像在墙上贴纸改海报,正确答案是C。

Q2. 对抗扰动 \(\delta\) 在物理攻击中通常等价于?

单选题 · mid

  • A.相机镜头畸变的修正参数
  • B.贴在交通标志上的贴纸图案← 正确答案
  • C.道路养护车撒落的小碎石
  • D.神经网络的权重参数值

答案:B。在物理攻击中,攻击者优化的 \(\delta\) 最终会被打印成贴纸贴在标志上,因此它等价于贴纸图案。相机畸变属于环境因素,碎石是环境噪声,权重是模型自身的参数,都与攻击者设计的扰动不同。

Q3. 为什么深度神经网络容易被小贴纸骗倒?

单选题 · mid

  • A.网络参数太少表达能力不足
  • B.网络依赖局部特征而非整体语义← 正确答案
  • C.摄像头分辨率过低导致图像模糊
  • D.训练数据缺少红色八边形标志

答案:B。深度学习判断依据是局部特征的加权组合,而不是人类式的整体语义理解。贴纸恰好覆盖或干扰了关键局部特征,神经元的激活模式就发生偏移。这和人眼看整张图、读整体语义的机制截然不同。

Q4. 下列哪些属于物理攻击需要考虑的真实世界因素?

多选题 · mid

  • A.相机拍摄距离与视角变化← 正确答案
  • B.光照强度与阴影方向变化← 正确答案
  • C.贴纸打印后的颜色偏移← 正确答案
  • D.神经网络全连接层的数量

答案:ABC。物理攻击必须保证贴纸在距离、视角、光照、打印色差等真实成像条件下依然有效,这些都要纳入优化模拟。D是模型结构属性,属于内部设计因素,不影响物理世界成像条件。

Q5. 对抗训练的min-max目标中,内层max的含义是?

单选题 · hard

  • A.让模型参数向最优方向更新
  • B.生成让模型损失最大的对抗样本← 正确答案
  • C.在训练中减小对抗扰动的大小
  • D.在推理时增加输入图像的尺寸

答案:B。内层max模拟的是攻击者视角:在当前模型下生成使损失函数最大化的对抗样本,相当于“出题人出最难做的题”。外层min才是调整模型参数去适应难题。C和D描述的是别的研究方向。

Q6. 下列哪些是有效的交通标志攻击防御措施?

多选题 · hard

  • A.对训练数据做对抗训练增强← 正确答案
  • B.摄像头与高精地图多源融合← 正确答案
  • C.增加可疑贴纸异常检测模块← 正确答案
  • D.提高交通标志牌印刷分辨率

答案:ABC。对抗训练提升模型自身的鲁棒性,多源融合提供冗余信息,异常检测识别可疑区域,这三者都是防御手段。D提高印刷分辨率只会让攻击图案打印得更精细,反而帮了攻击者。

Q7. 物理攻击研究中“打印-相机循环”的主要目的是?

单选题 · easy

  • A.让贴纸图案更加美观大方
  • B.优化时模拟真实视角与光照← 正确答案
  • C.提高打印机的打印分辨率
  • D.节省物理实验的打印成本

答案:B。打印-相机循环是在每次优化迭代中模拟“贴纸被打印→相机成像→AI识别”的完整链路,让生成图案适应真实世界的色彩与几何失真。A、C、D都不是研究的核心目的。

Q8. 关于ASR(攻击成功率),下列说法错误的是?

单选题 · extreme

  • A.攻击在测试场景中的成功率
  • B.被攻击时多数预测的类别分布
  • C.系统在攻击下的鲁棒性表现
  • D.攻击的物理实施成本高低← 正确答案

答案:D。ASR能反映攻击成功率、错误类别分布以及系统的鲁棒性水平,但它是一个实验测试指标,无法直接告诉我们攻击者制作贴纸需要多少成本、多长时间。所以D是“无法直接反映”的选项。

Q9. 交通标志物理攻击可能造成哪些危害?

多选题 · mid

  • A.感知误判引发一连串错误决策← 正确答案
  • B.导致追尾与闯红灯等事故风险← 正确答案
  • C.降低公众对自动驾驶车的信任← 正确答案
  • D.让模型离线训练时间显著变长

答案:ABC。物理攻击发生在推理阶段,感知误判会引发决策错误,进而带来事故风险和公众信任危机。D说的是训练阶段的计算开销,与推理时的物理攻击没有直接关系。

Q10. 对抗样本的“迁移性”指的是?

单选题 · easy

  • A.有效样本也容易骗过其他模型← 正确答案
  • B.攻击样本会自动复制到全世界路牌
  • C.模型训练时使用了迁移学习技术
  • D.贴纸从路牌上脱落并掉到地上

答案:A。迁移性指针对某个模型生成的对抗样本,在不修改的前提下也能以较高概率骗过其他模型。这种特性让攻击者可以在本地自建模型上制造贴纸,再拿到目标车辆上使用,实现“黑盒攻击”。B、C、D都与迁移性无关。