想象有一位手艺精湛的“光学裁缝”林师傅,她接到一个委托:制作一件能让“AI保安”认不出来的光学隐身衣——也就是在路牌上贴一张对抗贴纸,骗过自动驾驶汽车的眼睛。在试衣间里(实验室的数字世界),这件隐身衣效果惊人,无论灯光怎么摆、角度怎么调,AI保安都会把她指定的假标签当成真标签。可当她满怀信心地把隐身衣穿到户外,阳光一照、路人一斜视,衣服立刻露馅——AI保安准确喊出了路牌的真名。问题出在哪?光照变了、视角变了,图案还是那个图案,但“穿法”已经完全不同。这篇内容要讲清楚的,正是这类“物理对抗攻击”在现实世界中失效的根本原因——光照鲁棒性与视角鲁棒性,以及研究者如何通过期望变换训练、物理-数字循环等手段,把隐身衣从试衣间安全地穿到大街上。理解了这些,你就知道为什么实验室里百发百中的攻击,到了现实中常常成了“纸老虎”。

岗位关联

对 AI 从业者而言,理解物理攻击的鲁棒性难题,是评估真实世界 AI 系统安全边界、设计可信防御方案的核心能力,也是投身 AI 安全攻防研究的第一块敲门砖。

目录
  1. 可视化演示
  2. 物理攻击困境
  3. 光照干扰机理
  4. 视角变化影响
  5. 期望变换训练
  6. 物理攻击流程
  7. 现实风险场景
  8. 可行边界展望
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示分布式事务两阶段提交(2PC):协调者发起Prepare阶段收集投票,全部同意则Commit,任一拒绝则Abort,保证原子性。

本节配有交互动效(进入视口后自动加载,约 3KB)。

两阶段提交流程 Prepare阶段:协调者询问所有参与者是否可以提交 所有参与者同意则进入Commit阶段,执行事务提交 任一参与者拒绝则进入Abort阶段,全部回滚 提交条件 = 所有参与者投票均为Yes

物理攻击困境

林师傅在试衣间里制作隐身衣时,只需要看设计图(数字图像)就行了——图纸上哪里多加一针、哪里减一线,AI保安都会乖乖上当。这就是实验室里的数字对抗攻击:攻击者直接修改图片的像素,让模型把“STOP“识别成”限速”。在数字世界里,攻击者手里握着完整的梯度信息,就像裁缝知道每一针下去衣服会怎么变化,所以做起攻击来格外轻松。

可一旦把设计图印成实物,麻烦就来了。物理攻击要经历一条漫长的链路:数字像素变成打印机油墨,油墨反射环境光线进入摄像头,镜头把光线聚焦到传感器,传感器量化成新的数字像素。这条链路上每一步都在“损耗”图案的精细度:打印机的色彩管理会偏移,摄像头的白平衡会扭曲颜色,传感器还会引入噪点。更关键的是,数字攻击精心计算的那一点点像素扰动,在物理世界里根本不可能被精确复现——印出来的“一针”和图纸上的“一针”早已不是同一针。

于是研究者把数字攻击的优化目标写成这样:

这个公式只在“图纸”上成立。林师傅很快意识到,想让隐身衣真正走出试衣间,必须回答两个现实问题:户外的光怎么变,观察的角度怎么变。这正是接下来两节的主角——光照和视角。

min⁡δ L(f(x+δ), yadv)s.t. ∥δ∥p≤ε\displaystyle \min_{\delta}\ \mathcal{L}\big(f(x+\delta),\ y_{\mathrm{adv}}\big)\quad \mathrm{s.t.}\ \|\delta\|_p \le \varepsilon
  1. 对抗扰动在原图 \(x\) 上叠加一个极小的扰动 \(\delta\),肉眼几乎看不出变化。
    x+δ\displaystyle x + \delta
  2. 模型输出把带扰动的图片送入分类器 \(f\),得到对各类别的预测分数。
    f(x+δ)\displaystyle f(x+\delta)
  3. 损失函数\(\mathcal{L}\) 衡量模型输出与攻击目标 \(y_{\mathrm{adv}}\)(比如“限速”)的差距,攻击者希望损失越小越好。
    L(f(x+δ), yadv)\displaystyle \mathcal{L}\big(f(x+\delta),\ y_{\mathrm{adv}}\big)
  4. 范数约束限制扰动的大小不超过 \(\varepsilon\),保证对抗样本不被肉眼察觉。
    ∥δ∥p≤ε\displaystyle \|\delta\|_p \le \varepsilon

光照干扰机理

试衣间里有一盏固定的小灯,林师傅设计的图案在灯下完美隐身。可户外世界有清晨的暖阳、正午的烈日、黄昏的橙光、路灯的黄光、阴天的散射光……每一束光都像一位挑剔的甲方,让同一件隐身衣呈现完全不同的颜色。AI保安的眼睛(摄像头)看到的,其实是环境光照在物体表面反射后的结果。这里有一个经典的图像形成模型:

这个模型揭示了物理攻击的第一个大坑:同色异谱。打印机调出来的两瓶墨水,在试衣间的灯下看起来一模一样,换到日光灯下就“分道扬镳”了。同样,对抗贴纸上精心调出的颜色,在打印时经过色彩管理、在拍摄时经过白平衡校正,早已不是数字设计时的数值。为了应对光照变化,研究者们想到了在数字世界里“模拟光照”——用三维渲染引擎(如 Blender)或者神经辐射场(NeRF)生成各种光照条件下的图像,让隐身衣在虚拟世界里先“晒够太阳”。但模拟终归是模拟,物理世界的复杂性永远比渲染器多一层。

I(x)=R(x)⋅L(x)\displaystyle I(\mathbf{x}) = R(\mathbf{x}) \cdot L(\mathbf{x})
  1. 物体反射率\(R(\mathbf{x})\) 是物体表面固有的反射特性——布料本身是什么颜色,与光照无关。
    R(x)\displaystyle R(\mathbf{x})
  2. 环境光照\(L(\mathbf{x})\) 是光源辐射到该点的能量分布——太阳、路灯、阴影都算在内。
    L(x)\displaystyle L(\mathbf{x})
  3. 传感器接收二者相乘得到相机传感器实际接收到的图像 \(I(\mathbf{x})\),所以同一种颜色在不同光下完全不同。
    R(x)⋅L(x)\displaystyle R(\mathbf{x}) \cdot L(\mathbf{x})

视角变化影响

如果说光照是换了个灯泡,那视角就是换了双眼睛。林师傅发现,隐身衣从正面看天衣无缝,可只要 AI 保安稍微侧一下头,衣服侧面的“针脚”就全露出来了。物理世界是三维的,路牌上的对抗贴纸在二维图像里设计时,默认观察者正对着它。一旦观察者的位置移动,贴纸的图案就会发生透视形变——原本方方正正的方块变成平行四边形,原本对齐的纹理错位堆积。

用相机模型来描述,三维空间中的一个点 \((X,Y,Z)\) 投影到二维像素 \((u,v)\) 的过程是这样的:

视角变了,外参就变了,投影像素自然跟着变。研究者发现,物理对抗样本通常只在某个“视角锥”内有效——正面 ±20 度左右还行,再偏就断了。此外还有个容易被忽视的距离模糊效应:设计贴纸时按 10 米距离优化,离近了贴纸像素被放大变得粗糙,离远了图案被压缩成一团噪声,攻击精度急剧下降。要想多视角都稳定,就要让图案在多种位姿下保持“攻击一致性”,这为下一节的思路埋下伏笔。

[uv1]=K [R ∣ t][XYZ1]\displaystyle \begin{bmatrix}u \\ v \\ 1\end{bmatrix} = K\,[R\ |\ t]\begin{bmatrix}X \\ Y \\ Z \\ 1\end{bmatrix}
  1. 三维世界点路牌上贴纸的某个点,在世界坐标系中的位置。
    [X, Y, Z, 1]T\displaystyle [X,\ Y,\ Z,\ 1]^{T}
  2. 外参变换\([R\ |\ t]\) 是相机的旋转和平移,表示相机看了多高、偏了多少角度。
    [R ∣ t]\displaystyle [R\ |\ t]
  3. 内参投影\(K\) 是相机内参(焦距、主点),把三维坐标映射到二维像素平面。
    K [R ∣ t]\displaystyle K\,[R\ |\ t]

期望变换训练

既然单一视角、单一光照不靠谱,林师傅想了个“笨办法”:把隐身衣穿在模特身上,在各种各样的灯光、各种角度的镜头前走一遍秀,每走一步都记下 AI 保安的反应,最后综合所有场景来修改衣服。这套思路在学术圈有个正式名字——期望变换训练(EOT,Expectation Over Transformation)。它的核心思想是:不要只优化“一张图骗过模型”,而是优化“一批变换后的图平均骗过模型”。

EOT 的优化目标长这样:

EOT 的梯度是通过变换层反向传播的,所以要求变换必须是可微的——平移、旋转、缩放、亮度调整都有现成的可微实现,这也是它工程上可行的前提。它和传统对抗训练的出发点正好相反:对抗训练是让模型“见过各种扰动从而变强”,EOT 是让攻击者“穿过各种环境从而不变弱”。两者殊途同归,都在逼着攻防双方把“现实世界的变化”纳入考虑范围。有了 EOT,林师傅终于有了一件能适应多种天气和角度的隐身衣——但她心里清楚,图纸上的完美还不够,得真的穿出去看看。

min⁡δ Et∼T[L(f(t(x+δ)), yadv)]\displaystyle \min_{\delta}\ \mathbb{E}_{t \sim \mathcal{T}}\Big[\mathcal{L}\big(f(t(x+\delta)),\ y_{\mathrm{adv}}\big)\Big]
  1. 变换采样从变换分布 \(\mathcal{T}\) 中随机抽取一个变换 \(t\)——比如随机平移几个像素、随机调亮一点、随机旋转几度。
    t∼T\displaystyle t \sim \mathcal{T}
  2. 变换后攻击对加了扰动的对抗样本先做变换,再送入模型计算损失。
    f(t(x+δ))\displaystyle f\big(t(x+\delta)\big)
  3. 求期望损失对所有可能变换下的损失求平均,优化目标变成“在所有场景下平均骗得过 AI”。
    Et∼T[L(⋅)]\displaystyle \mathbb{E}_{t \sim \mathcal{T}}\big[\mathcal{L}(\cdot)\big]

物理攻击流程

林师傅的工作台上多了一条流水线:设计、打印、拍照、改设计,循环往复。这就是物理攻击的标准流程,也是把“数字世界的隐身衣”变成“现实世界的隐身衣”的唯一路径。第一步是数字生成,用 EOT 这类算法在模拟环境里优化出对抗图案;第二步是打印制作,把图案印到贴纸或亚克力板上,注意色彩管理、墨水和材质的选择;第三步是拍摄验证,把打印好的贴纸贴到真实场景中,用目标摄像头从不同距离、角度拍照,采集真实样本;第四步是物理-数字循环,把采集到的真实照片喂回优化器,让算法根据“现实世界的反馈”再次调整图案。

这个循环的尽头,是一个关键衡量指标——攻击成功率(ASR):

一个成熟的物理攻击,ASR 往往只有 60%-85%,远达不到数字世界的 99%。林师傅的隐身衣在试衣间里几乎无敌,但到了真实道路上,它依然会不时“露馅”。

ASR=1N∑i=1NI[arg⁡max⁡cf(ti(x+δ))=yadv]\displaystyle \mathrm{ASR} = \frac{1}{N}\sum_{i=1}^{N} \mathbb{I}\big[\arg\max_c f\big(t_i(x+\delta)\big) = y_{\mathrm{adv}}\big]
  1. 多次物理试验在真实或近似真实的环境下做 \(N\) 次拍摄,每次变换 \(t_i\) 代表不同的光照、角度和距离。
    ti(x+δ),i=1,…,N\displaystyle t_i(x+\delta),\quad i=1,\dots,N
  2. 判断是否攻击成功\(\mathbb{I}[\cdot]\) 是示性函数,模型预测的类别 \(\arg\max_c f(\cdot)\) 等于攻击目标 \(y_{\mathrm{adv}}\) 时记 1,否则记 0。
    I[arg⁡max⁡cf(⋅)=yadv]\displaystyle \mathbb{I}\big[\arg\max_c f(\cdot) = y_{\mathrm{adv}}\big]
  3. 求平均成功率把 \(N\) 次试验的成功次数做平均,得到攻击成功率 ASR。
    1N∑i=1N[⋯ ]\displaystyle \frac{1}{N}\sum_{i=1}^{N}[\cdots]

现实风险场景

即便命中率不是 100%,这件隐身衣也足以在真实世界制造麻烦。最著名的案例是 2018 年 Eykholt 等人的工作:在 STOP 路牌上贴几条黑白小贴纸,自动驾驶的识别模型就把“停”误认为“限速 80”。贴纸面积不到路牌的十分之一,人类完全不会多想,但 AI 却信以为真。这就是路牌欺骗攻击,风险场景直指自动驾驶——如果车辆在高速上把 STOP 牌当成限速牌而不刹车,后果不堪设想。

另一个经典场景是人脸对抗眼镜。2016 年 Sharif 等人设计了一款印着特殊花纹的眼镜框,戴上后能够让人脸识别系统把人认成别人(比如把男研究员认成女明星)。这种攻击对安防监控、刷脸支付都是潜在威胁。从这些案例能总结出一个规律:物理攻击的有效范围很有限——路牌贴纸必须在特定的距离(比如 5-15 米)和特定的视角(正面偏转 25 度以内)才能生效;人脸眼镜的有效性也高度依赖摄像头角度和光线条件。这也引出一个物理攻击的“铁三角”约束:

物理攻击的实际扰动上界 \(\varepsilon_{\mathrm{phys}}\) 取三者最小值,这决定了攻击的可行窗口并不大。防御者也不是吃素的:一方面可以用对抗训练把各种物理变换“喂”给模型,让模型见过世面;另一方面可以用多传感器融合(激光雷达 + 摄像头 + 毫米波雷达)交叉验证,单一路牌欺骗就难以奏效。隐身衣能骗过一只眼睛,骗不过三只。

εphys≤min⁡(εprint, εcamera, εlight)\displaystyle \varepsilon_{\mathrm{phys}} \le \min\big(\varepsilon_{\mathrm{print}},\ \varepsilon_{\mathrm{camera}},\ \varepsilon_{\mathrm{light}}\big)
  1. 打印精度\(\varepsilon_{\mathrm{print}}\) 是打印机分辨率对扰动大小的限制——太细的纹样印不出来。
    εprint\displaystyle \varepsilon_{\mathrm{print}}
  2. 相机误差\(\varepsilon_{\mathrm{camera}}\) 是镜头模糊、传感器量化带来的误差。
    εcamera\displaystyle \varepsilon_{\mathrm{camera}}
  3. 光照波动\(\varepsilon_{\mathrm{light}}\) 是环境光照变化导致的颜色偏移。
    εlight\displaystyle \varepsilon_{\mathrm{light}}

可行边界展望

林师傅最后想明白了:这世上没有完美的隐身衣,只有适合特定场景的伪装术。物理攻击的鲁棒性有它的天然上限——打印精度、相机量子效率、光照随机性,这些物理规律决定了扰动不可能无限大,也不可能无限稳。研究者给出过一个直观的不等式关系:物理环境下的期望损失,永远不可能低于数字世界里的单点损失,因为物理噪声只会让攻击变难:

这个不等式划出了物理攻击的“悲观边界”:攻击者再怎么优化,现实世界的不可控因素都会抬高攻击难度。于是学界和工业界的目光转向了数字孪生攻防平台——在三维虚拟世界建立路牌、车辆、场景的高保真数字副本,用物理引擎模拟光照、雨雾、视角,先让攻击和防御在虚拟世界里“打三百回合”,再把胜出的方案部署到真实系统。这既降低了物理试验成本,又能系统性地探索鲁棒性边界。对攻防双方来说,物理世界不是一个可以精确计算的棋盘,而是一场在不确定性中博弈的游戏——谁先掌握光照和视角的规律,谁就多一分胜算。

Et[L(f(t(x+δ)), yadv)]≥L(f(x+δ), yadv)\displaystyle \mathbb{E}_{t}\big[\mathcal{L}\big(f(t(x+\delta)),\ y_{\mathrm{adv}}\big)\big] \ge \mathcal{L}\big(f(x+\delta),\ y_{\mathrm{adv}}\big)
  1. 数字损失在无干扰的数字世界里,对抗样本的损失。
    L(f(x+δ), yadv)\displaystyle \mathcal{L}\big(f(x+\delta),\ y_{\mathrm{adv}}\big)
  2. 物理期望损失在光照、视角等真实变换下的平均损失。
    Et[L(f(t(x+δ)), yadv)]\displaystyle \mathbb{E}_{t}\big[\mathcal{L}\big(f(t(x+\delta)),\ y_{\mathrm{adv}}\big)\big]
  3. 不等式含义变换带来的噪声只会增加损失,所以物理攻击永远比数字攻击更难成功。
    ≥\displaystyle \ge

AI 应用场景

1. 自动驾驶路牌攻击测试

阶段:模型安全评估与红队测试

解决的问题:自动驾驶厂商在路测前要回答“视觉系统会不会被物理世界的恶意贴纸欺骗”。传统做法是把车开到真实道路上贴路牌测试,成本高、风险大、场景覆盖少。利用 EOT 和物理-数字循环,可以在虚拟场景中模拟不同日照角度、雨雾天气、拍摄距离,自动搜索最容易让模型误判的贴纸图案,在路测前就暴露安全隐患。

具体案例:某自动驾驶团队在仿真器中放置了一块“STOP“牌,用 EOT 优化出一组黑白贴纸,然后在虚拟场景中从 10 米、20 米、30 米三个距离和 ±30° 视角下分别拍摄,发现 20 米以内攻击成功率超过 80%,而 30 米外迅速衰减。据此他们为感知模型补充了”距离鲁棒性”训练数据,并加装了激光雷达交叉验证模块。

2. 人脸识别对抗攻击防御验证

阶段:模型鲁棒性加固

解决的问题:人脸识别系统部署在安防闸机、刷脸支付等场景,物理对抗眼镜和对抗贴纸可能让系统把人认错。传统评估只测试数字照片攻击,忽略了光线和角度的影响。利用光照/视角鲁棒性分析框架,可以在不同光源(室内暖光、户外日光)、不同角度(正面、低头、侧脸)下系统性地测试攻击有效性,从而针对性地做对抗训练。

具体案例:某支付团队制作了一款对抗眼镜框,在数字照片上攻击成功率 95%,但在闸机实际环境中只有 41%——因为闸机摄像头位于头部上方,佩戴者的自然低头动作让图案发生了明显的透视形变。团队据此优化了眼镜框图案,并升级了人脸活体检测,让物理攻击在真实部署环境中的成功率降到 10% 以下。

3. 无人配送车视觉鲁棒性巡检

阶段:模型上线前巡检与持续监控

解决的问题:无人配送车依赖摄像头识别交通信号和行人,城市环境光照变化剧烈(楼宇阴影、车灯、傍晚逆光),物理攻击贴纸可能混入真实环境中。通过光照模拟和视角变换采样,可以建立“鲁棒性巡检报告”,量化模型在各类物理扰动下的置信度波动,帮助运营团队决定哪些路段需要降速或增加传感器。

具体案例:一家无人配送公司在园区测试中发现,同一张“禁止通行”贴纸,在上午十点的侧光下识别正常,下午四点逆光时模型的置信度从 0.92 骤降到 0.55。通过渲染不同日照角度的训练数据并重训模型,逆光场景下的识别准确率回升到 0.96。

Python 演示

python100 行
import numpy as np IMG_SIZE = 20EPS = 0.4  def make_digit():    """生成一个简易的 '7' 图案, 作为被攻击的目标物体."""    img = np.zeros((IMG_SIZE, IMG_SIZE))    img[2:8, 4:16] = 1.0    img[6:18, 12:14] = 1.0    return img  def translate(img, dx, dy):    """将图像平移 (dx, dy) 个像素, 模拟视角或位置的改变."""    h, w = img.shape    out = np.zeros_like(img)    out[max(0, dy):min(h, h + dy), max(0, dx):min(w, w + dx)] = \        img[max(0, -dy):h - max(0, dy), max(0, -dx):w - max(0, dx)]    return out  class SimpleModel:    """一个极简的二分类线性模型, 用于演示物理攻击的鲁棒性对比."""     def __init__(self, rng_seed=0):        rng = np.random.default_rng(rng_seed)        self.w = rng.normal(0, 0.2, (IMG_SIZE * IMG_SIZE,))        self.b = 0.0        base = self.w @ make_digit().ravel() + self.b        if base >= 0:            self.w = -self.w            self.b = -self.b - 0.1     def logit(self, imgs):        flat = imgs.reshape(imgs.shape[0], -1)        return flat @ self.w + self.b     def loss_and_grad(self, imgs, target=1.0):        logit = self.logit(imgs)        p = 1.0 / (1.0 + np.exp(-logit))        loss = -np.mean(target * np.log(p + 1e-12)                        + (1 - target) * np.log(1 - p + 1e-12))        dlogit = (p - target) / imgs.shape[0]        grad_flat = dlogit[:, None] * self.w[None, :]        return loss, grad_flat.reshape(imgs.shape)  def fgsm_attack(model, img, eps=EPS):    """普通白盒攻击: 只利用单张原图的梯度."""    _, grad = model.loss_and_grad(img[None])    adv = img - eps * np.sign(grad[0])    return np.clip(adv, 0, 1)  def eot_attack(model, img, eps=EPS, samples=30, seed=42):    """EOT攻击: 对随机平移+亮度变换求期望梯度."""    rng = np.random.default_rng(seed)    grads = []    for _ in range(samples):        dx = rng.integers(-2, 3)        dy = rng.integers(-2, 3)        br = rng.uniform(0.8, 1.2)        t_img = np.clip(translate(img, dx, dy) * br, 0, 1)        _, grad = model.loss_and_grad(t_img[None])        back = translate(grad[0], -dx, -dy) * br        grads.append(back)    avg_grad = np.mean(grads, axis=0)    adv = img - eps * np.sign(avg_grad)    return np.clip(adv, 0, 1)  def attack_success_rate(model, adv, trials=200, seed=7):    """在随机平移和亮度扰动下统计攻击成功率."""    rng = np.random.default_rng(seed)    hits = 0    for _ in range(trials):        dx = rng.integers(-3, 4)        dy = rng.integers(-3, 4)        br = rng.uniform(0.6, 1.4)        test_img = np.clip(translate(adv, dx, dy) * br, 0, 1)        if model.logit(test_img[None])[0] > 0:            hits += 1    return hits / trials  def main():    model = SimpleModel()    img = make_digit()    clean_logit = model.logit(img[None])[0]    print("clean logit:", round(clean_logit, 3))    adv_f = fgsm_attack(model, img)    adv_e = eot_attack(model, img)    print("FGSM success:", round(attack_success_rate(model, adv_f), 3))    print("EOT  success:", round(attack_success_rate(model, adv_e), 3))  if __name__ == "__main__":    main()
目的:用纯 NumPy 实现一个二分类模型,对比普通梯度攻击(FGSM)与期望变换攻击(EOT)在随机平移和亮度扰动下的攻击成功率,直观验证“对变换求期望能提升物理鲁棒性”。
  1. if base >= 0:确保模型对原始图案输出负分数(识别为类 0),这样攻击目标就是让它误判为类 1。
  2. dlogit[:, None] * self.w[None, :]交叉熵损失对输入图像的梯度等于预测误差乘以权重向量,这是所有梯度攻击的基础。
  3. t_img = np.clip(translate(img, dx, dy) * br, 0, 1)采样一种物理变换:随机平移几个像素模拟视角移动,随机调亮度模拟光照变化。
  4. avg_grad = np.mean(grads, axis=0)对多个变换下的梯度取平均,这就是 EOT 的“期望梯度”核心步骤。
  5. adv = img - eps * np.sign(avg_grad)沿期望梯度的反方向施加扰动,生成对变换鲁棒的对抗样本。

常见误区

误区我在电脑上把路牌的像素改一下,模型就认错了,那我把这张图打印出来贴到真路牌上,自动驾驶的车应该也会认错吧?毕竟图是一样的。

正解数字世界的对抗样本是在像素级精确计算出来的,依赖模型对每个像素的梯度。打印机会丢色阶,摄像头有镜头畸变和白平衡,环境光会改变颜色,这些都会把精心设计的扰动“抹掉”。对抗样本的精度是像素级的,而物理世界的误差是毫米级的,两者根本不在一个量级。必须经过物理-数字循环反复修正,数字图案才能在物理世界中生效。

为何常见:人眼看到“打印出来的图”和“屏幕上的图”差不多,就默认机器看到的也一样,忽略了成像链路中的各种噪声。

误区EOT 不就是在图片上加一些随机噪声,然后重新算一次梯度吗?那和普通的数据增强有什么区别?

正解EOT 里的变换不是无意义的噪声,而是模拟物理世界的真实变换——平移、旋转、缩放、亮度变化、甚至透视变换。它要求变换可微(或可数值近似),让梯度能穿过变换层回传到对抗扰动上。普通数据增强是增强模型,EOT 是增强攻击者。两者方向相反:一个让模型更鲁棒,一个让攻击更鲁棒。

为何常见:因为 EOT 的数学形式里确实有一个“期望”,初学者容易把它和随机噪声的数据增强混为一谈。

误区既然光照和视角会干扰攻击,那我让 EOT 的变换范围覆盖所有角度、所有亮度,攻击成功率不就 100% 了吗?

正解鲁棒性不是免费的。变换范围越大,优化问题越难收敛,扰动往往需要更大,而增大扰动会被打印精度和肉眼可见性限制。物理鲁棒性有一个天然上界:打印误差、相机误差、光照误差三者取最小。想在所有角度、所有距离都成功,本质上是让图案在每个视角下都“恰好”骗过模型,这在物理规律上是不可实现的。

为何常见:人们习惯了数字世界里“只要优化就能逼近完美”的思维,低估了物理世界的随机性。

误区如果一辆自动驾驶车被路牌贴纸骗了,那所有用同款模型的车上路都会识别错误,攻击是通用的。

正解物理攻击的“有效范围”非常窄:它对相机型号、安装位置、焦距、光圈都很敏感。同一张贴纸,A 车的摄像头装在挡风玻璃上方,B 车装在保险杠附近,两者看到的贴纸形变完全不同。此外,很多系统还有多传感器融合、时序校验等机制,单帧的误判会被后续帧纠正。物理攻击更像是一把“一次性钥匙”,而不是一把“万能钥匙”。

为何常见:因为数字对抗样本具有迁移性,人们想当然认为物理攻击也有同样的迁移性,忽略了成像链路带来的个体差异。

面试题

Q1. 数字世界的对抗样本直接打印后物理攻击容易失效,最核心的原因是什么?

单选题 · easy

  • A.打印机分辨率不够高
  • B.现实光照与视角产生干扰← 正确答案
  • C.模型在推理时没有梯度
  • D.打印机成本过高难以量产

答案:B。核心原因在于物理链路中光照、视角、打印色彩等现实因素会破坏精心设计的像素级扰动,选项 A 只是其中一环且不是最核心的,C 说错了方向(推理时本来就没有梯度),D 与攻击有效性无关。可以把对抗样本想成一件隐身衣,数字世界里灯光角度固定,换上真实世界的灯光和视角自然就露馅了。

Q2. EOT(期望变换训练)中“期望”指的是对什么求期望?

单选题 · mid

  • A.对模型参数的期望
  • B.对扰动大小的期望
  • C.对物理变换分布的期望← 正确答案
  • D.对数据集标签的期望

答案:C。EOT 对从变换分布中采样得到的平移、旋转、亮度等物理变换求损失期望,目的是让对抗样本在这些变换下平均攻击成功。对模型参数求期望是贝叶斯神经网络的思路,对扰动大小和标签求期望都与 EOT 无关。这就像让模特穿着隐身衣在多种灯光角度下走秀,取走秀效果的平均值来改衣服。

Q3. 以下哪些属于物理攻击需要面对的光照变化?

多选题 · easy

  • A.不同时刻的日照强度不同← 正确答案
  • B.光源色温从暖黄变为冷白← 正确答案
  • C.相机镜头上有灰尘污渍
  • D.楼宇阴影遮挡部分贴纸← 正确答案

答案:ABD。日照强度、色温变化、阴影遮挡都属于光照变化,它们是光照鲁棒性研究的核心对象。镜头污渍是成像系统本身的噪声,与光照无关。用隐身衣的比喻来说,前三个选项是换了不同的灯,而镜头污渍是保安的眼睛花了,这是两个层面的问题。

Q4. 视角变化使物理对抗样本失效的主要原因是?

单选题 · mid

  • A.显示屏分辨率改变
  • B.透视投影造成几何形变← 正确答案
  • C.神经网络结构不同
  • D.梯度更新不收敛

答案:B。视角变化通过相机外参改变投影关系,使贴纸图案发生透视形变,图案和模型训练时见过的样子对不上,攻击自然失效。屏幕分辨率和模型结构与视角无关,梯度不收敛是攻击算法层面的问题。就像一张正面写着字的纸条,侧过来看字就挤压成一条线,谁也认不出来。

Q5. 物理攻击标准流程的正确顺序是什么?

单选题 · mid

  • A.打印-拍摄-数字生成-循环优化
  • B.数字生成-打印-拍摄-物理数字循环← 正确答案
  • C.拍摄-打印-数字生成-直接部署
  • D.数字生成-拍摄-打印-直接部署

答案:B。物理攻击必须先有数字图案,再打印成实物,然后拍摄验证,最后把照片反馈回优化器迭代修改。选项 A 把数字生成放错了位置,C 和 D 要么顺序颠倒要么缺少反馈循环。这个流程就像裁缝先画设计图,再做样衣,穿上街拍照,最后根据照片修改设计,循环往复。

Q6. 以下哪些方法能有效提升物理对抗样本的鲁棒性?

多选题 · hard

  • A.使用 EOT 对多种变换求期望梯度← 正确答案
  • B.在打印前进行色彩校正仿真← 正确答案
  • C.增大扰动幅度并施加范数约束← 正确答案
  • D.仅在一张固定照片上反复迭代

答案:ABC。EOT 让攻击适应多种物理变换,色彩校正仿真能缩小数字与物理的颜色偏差,增大扰动幅度并在范数约束内优化可以让图案更容易被打印机还原。只在一张固定照片上迭代会过拟合到那个特定视角和光照,鲁棒性很差。这相当于只让隐身衣在一种灯光下一个角度试穿,换环境就失效。

Q7. 攻击成功率(ASR)衡量的是什么?

单选题 · easy

  • A.模型训练收敛的速度
  • B.对抗样本让模型误判的比例← 正确答案
  • C.打印图案的清晰程度
  • D.GPU 渲染的帧率水平

答案:B。ASR 是在多次物理试验中,对抗样本成功让模型输出攻击目标类别的比例。它是衡量物理攻击有效性的核心指标。模型收敛速度、图案清晰度和渲染帧率都和攻击是否成功无关,完全是不同维度的概念。

Q8. 为什么“同色异谱”现象会影响物理对抗样本?

单选题 · mid

  • A.打印机无法打印出黑色
  • B.颜色在不同光源下呈现不同← 正确答案
  • C.相机对红外光不敏感
  • D.模型只能处理灰度图像

答案:B。同色异谱指两种颜色在某光源下看起来相同,换一种光源后变得不同。对抗贴纸在打印时调好的颜色,可能只在设计时的灯光下正确,换到户外日光或路灯下就偏离目标颜色,导致攻击失效。这与打印机能否打黑色、相机红外敏感度、模型灰度处理都无关。

Q9. 关于物理攻击在自动驾驶中的风险,下列说法正确的是?

多选题 · hard

  • A.路牌贴纸可导致识别为其他标志← 正确答案
  • B.攻击只能在固定角度和距离内生效← 正确答案
  • C.多传感器融合可缓解此类攻击← 正确答案
  • D.物理攻击对自动驾驶毫无威胁

答案:ABC。历史研究已证明路牌贴纸能把 STOP 识别为限速牌,但攻击有严格的视角和距离窗口。多传感器融合(激光雷达、毫米波雷达)能交叉验证视觉结果,有效缓解单一视觉攻击。选项 D 与已知事实完全相反。物理攻击有点像“视觉魔术”,离得近正对着看有效,换个角度或加个雷达就穿帮了。

Q10. 关于 EOT 中变换的梯度回传,下列说法正确的是?

单选题 · extreme

  • A.变换必须是可微的或可用数值方式近似← 正确答案
  • B.变换必须是非线性的才可以回传
  • C.变换必须由 Gumbel-Softmax 采样得到
  • D.变换的梯度只能被丢弃不能回传

答案:A。EOT 要让梯度穿过变换层传到对抗扰动上,因此变换必须可微;平移、旋转、亮度调整都有可微实现,不可微的变换也可以用数值近似。非线性不是可微的前提,Gumbel-Softmax 是处理离散采样的技巧,与 EOT 的通用变换无关,丢弃梯度更是与 EOT 背道而驰。就像裁缝修改衣服时必须知道每根线改动带来的变化方向,如果模特走秀的动作完全无规律可循,设计师就无法针对性地改衣服。