跳转至

Explaining Object Detectors via Collective Contribution of Pixels

会议: CVPR 2026
arXiv: 2412.00666
代码: https://github.com/tttt-0814/VX-CODE (有)
领域: 目标检测 / 可解释性
关键词: 检测器可解释性、Shapley值、像素交互、贪心patch选择、忠实度

一句话总结

本文提出 VX-CODE,用博弈论中的 Shapley 值(个体贡献)与 interaction(集体贡献)来解释目标检测器,并通过 self-context 变体 + 贪心 patch 选择把指数级计算降到可用,生成同时覆盖"主体特征 + 协同背景线索"的忠实热力图,insertion/deletion AUC 相比 SOTA 最高提升约 19%。

研究背景与动机

领域现状:目标检测器被广泛用于自动驾驶、医学影像等安全敏感场景,理解"图像里哪些像素影响了检测"对排查偏置、提升鲁棒性很关键。已有解释方法大致分三类:梯度类(ODAM)、CAM 类(SSGrad-CAM++)、扰动类(D-RISE、BSED)。

现有痛点:这些方法都只衡量单个像素的独立贡献,谁的梯度/激活/边际收益高就高亮谁。但检测器是靠多个视觉特征协同来判断的——一个像素单独看不重要、但和别的像素组合起来才决定了框的大小或类别。只看独立贡献,会漏掉这类"次要但关键"的组合线索,或者反过来抓到虚假相关。

核心矛盾:检测决策本质是"集体的",而主流解释指标是"个体的"。论文给的例子很直观:冲浪者检测里现有方法只高亮冲浪板,却忽略了"冲浪板 + 周围海面"这种共同支撑检测的组合;解释偏置模型时,现有方法要么只高亮训练集里植入的方块标记、要么糊满整个框,无法同时点出"物体 + 标记"这两个被模型同时依赖的线索。

切入角度:博弈论里恰好有现成工具——Shapley 值衡量单个玩家的平均边际贡献,interaction 衡量两个玩家"合在一起比各自之和多/少多少"。把图像 patch 当玩家、检测得分当收益,就能显式刻画集体贡献。难点在于这两个指标的精确计算随 patch 数指数爆炸(\(\mathcal{O}(n\cdot 2^n)\))。

核心 idea:用 Shapley 值 + interaction 同时建模个体与集体贡献,再用一个贪心 patch 插入/删除策略把它高效嵌进解释流程,并从序贯联盟博弈(\(\pi^*\)-index)的角度给这个贪心一个理论解释。

方法详解

整体框架

VX-CODE 解决的是这样一个问题(Problem 1):给定一张图、一个已检测出的实例 \((L^x, P^x)\),找出大小为 \(k\) 的最小 patch 子集 \(S_k\),使得只插入这些 patch 到空白图就能复现检测(insertion setup,找最小充分信息),或删除它们就让检测失败(deletion setup,找最完整必要信息)。衡量"复现程度"的奖励函数同时考虑定位和分类:

\[f(\mathcal{D}(x_S);(L^x,P^x))=\max_{(L,P)\in\mathcal{D}(x_S)}\mathrm{IoU}(L^x,L)\cdot\frac{P^x\cdot P}{\|P^x\|\|P\|}\]

其中 \(\mathrm{IoU}\) 项管框对齐、余弦项管类别一致。整个流程是:输入图切成 patch → 每一步用"博弈论度量"给候选 patch 组合打分 → 贪心选出本步 \(r\) 个最有价值的 patch → 累积成重要 patch 集合 → 渲染成热力图。关键在于每步的打分不只看单 patch,而是通过 self-context 值自然地把 Shapley 值与 interaction 揉进选择里。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入图像 +<br/>一个检测实例"] --> B["切分为 patch"]
    B --> C["集体贡献度量<br/>Shapley值 + interaction"]
    C --> D["self-context 贪心选择<br/>每步选 r 个 patch"]
    D -->|"加速:top-m 候选 + 早停 γn"| D
    D --> E["重要 patch 集合"]
    E --> F["热力图 / 解释"]

关键设计

1. 用 Shapley 值 + interaction 同时刻画个体与集体贡献:让"组合才重要"的线索浮出来

针对"现有方法只看单像素独立贡献、漏掉组合线索"这个痛点,本文把 patch 当玩家放进联盟博弈。Shapley 值 \(\phi(i|N)\) 取玩家 \(i\) 加入各种子集时的平均边际收益,刻画个体贡献;interaction \(I(i,j|N)=\phi(S_{ij}|N')-\phi(i|N\setminus\{j\})-\phi(j|N\setminus\{i\})\)\(i,j\) 视作一个合并玩家,衡量"二者合体的贡献"减去"各自单独贡献"。这个量的符号很有信息:当两个 patch 编码近乎相同的信息(合体不比单个多),interaction 变——正好用来识别最小、无冗余的解释 patch 集。反过来,只挑 Shapley 值高的 patch(旧做法)会偏向物体主体,把"单独看贡献小、但与主体协同才生效"的辅助信息(如背景、上下文)漏掉,而这恰恰是解释偏置和失败案例时最关键的线索

2. self-context 变体 + 贪心 patch 选择:把指数计算压到可跑,且 interaction 自动冒出来

精确 Shapley/interaction 是 \(\mathcal{O}(n\cdot 2^n)\),无法用。本文引入 self-context 值绕过:self-context Shapley 值 \(\phi^{sc}(S)=f(S)-f(\emptyset)\) 直接把整个子集 \(S\) 当作一个玩家;self-context interaction \(I^{sc}(S)=\phi^{sc}(S)-\sum_{S'\in\mathcal{P}^*(S)}\phi^{sc}(S')\)\(\mathcal{P}^*(S)\)\(S\) 的所有真子集)则是原 interaction 定义的自然推广。贪心策略据此运行:每步 \(k\) 从剩余 patch 中选出 \(r\) 个的集合 \(B_k=\arg\max_{B}\phi^{sc}(\{\mathcal{B}_{k-1}\}\cup B)\),其中 \(\mathcal{B}_{k-1}\) 是前面各步累积的 patch(被当作单个玩家)。妙处在于这个目标可被分解为

\[\phi^{sc}(\{\mathcal{B}_{k-1}\}\cup B)=I^{sc}(\{\mathcal{B}_{k-1}\}\cup B)+\sum_{B'\in\mathcal{P}^*(\{\mathcal{B}_{k-1}\}\cup B)}\phi^{sc}(B')\]

也就是说,看似只在选大小为 \(r\) 的集合,实际上 interaction 项与各子集 Shapley 项自动浮现——贪心在最大化"个体贡献 + 集体交互"之和,从而选出信息量大且不冗余的 patch。这就把"考虑 interaction"从一句口号落到了具体可计算的目标上(\(r=1\) 时退化为只看个体贡献)

3. \(\pi^*\)-index:用序贯联盟博弈给贪心一个理论解释

self-context 值是原始指标的"概念类比",并不满足联盟博弈的全部公理(如 efficiency)。为了给框架一个站得住的理论根,本文提出 \(\pi^*\)-index:考虑一个序贯联盟博弈,玩家按某顺序逐个加入,最优顺序 \(\pi^*=\arg\max_{\pi}\sum_{k=1}^n f(\pi(1),\dots,\pi(k))\) 让总奖励最大(即"先招最重要的玩家"),每个玩家的 index \(\psi(k|\pi^*)=f(\pi^*(1),\dots,\pi^*(k))-f(\pi^*(1),\dots,\pi^*(k-1))\) 就是它入列时带来的奖励增量。它满足联盟博弈公理,且有个漂亮关系——把 \(\psi(k|\pi)\) 在所有排列上平均就还原成 Shapley 值(\(\pi^*\) 关注"最好情况"、Shapley 关注"平均情况")。求精确 \(\pi^*\) 是 NP-hard,而前一步的贪心恰好可看作它的贪心近似:\(\psi(k|\hat\pi)=\phi^{sc}(\{\mathcal{B}_{k-1}\}\cup B_k)-\phi^{sc}(\mathcal{B}_{k-1})\)。虽不保证 \(\hat\pi=\pi^*\),但实验表明这个近似已足够强

4. patch selection + step restriction:把 \(r\ge2\) 的组合爆炸再砍一刀

\(r\ge2\),每步要枚举 \(\binom{|N\setminus\mathcal{B}_{k-1}|}{r}\) 个组合,实时性吃紧。本文加两个轻量模块:patch selection 每步只让单 patch 奖励影响排前 \(m\) 的候选参与组合(实验取 \(m=30\)),把组合数从 \(\binom{|N|}{r}\) 降到 \(\binom{m}{r}\)step restriction 在已识别出 \(\gamma n\)(实验取 \(\gamma=0.1\))个 patch 后就停止组合搜索、剩下的退回逐个选(\(r=1\)),因为最重要的 patch 通常在前几步就被挑出。两者把复杂度从 \(\mathcal{O}(n^{r+1}/r)\) 降到 \(\mathcal{O}(\frac{\gamma n}{r}m^r+(1-\gamma)n^2)\),生成时间锐减而精度只略降——有趣的是 step restriction 还提升了 insertion/deletion 指标,侧面印证"信息量大的 patch 集中在前几步"

损失函数 / 训练策略

VX-CODE 是事后(post-hoc)解释方法,不训练任何模型、无损失函数。它直接在已训练好的检测器(DETR、Faster R-CNN,ResNet-50 backbone,基于 detectron2)上前向推理,靠局部零掩码(local zero masking)或模糊(blurring)来模拟 patch 缺席。唯一的"超参"是每步选取数 \(r\in\{1,2,3\}\)、候选数 \(m=30\)、早停比例 \(\gamma=0.1\)

实验关键数据

主实验

忠实度用 insertion/deletion AUC 衡量:insertion 往空白图逐步加入重要 patch(越早把得分拉高越好,AUC 越高越好),deletion 从原图逐步删除重要 patch(越早把得分压垮越好,AUC 越低越好),overall (OA) = Ins − Del。每个设置在预测类别得分 > 0.7 的 1,000 个实例上平均。

数据集 / 检测器 方法 Ins ↑ Del ↓ OA ↑
MS-COCO / DETR SSGrad-CAM++(次优) .871 .114 .757
MS-COCO / DETR VX-CODE (r=1) .904 .053 .851
MS-COCO / DETR VX-CODE (r=3) .909 .052 .857
MS-COCO / Faster R-CNN SSGrad-CAM++ .900 .126 .774
MS-COCO / Faster R-CNN VX-CODE (r=3) .922 .067 .855
PASCAL VOC / DETR SSGrad-CAM++ .813 .166 .647
PASCAL VOC / DETR VX-CODE (r=3) .838 .067 .771
PASCAL VOC / Faster R-CNN SSGrad-CAM++ .890 .140 .750
PASCAL VOC / Faster R-CNN VX-CODE (r=3) .850 .063 .787

VX-CODE (r=1) 已在几乎所有指标上超过现有方法(唯一例外是 Faster R-CNN / VOC 的 insertion),增大 \(r\) 进一步改善,\(r=3\) 在所有检测器/数据集上拿到最佳 OA。论文强调 insertion/deletion AUC 最高提升约 19%;在 COCO 上,于 10% 面积处 VX-CODE 比次优方法 insertion 高 20%、deletion 低 50%,说明它用更少像素就锁定了关键区域。

失败案例上(DETR/COCO,各 200 实例)同样领先:

失败类型 方法 Ins ↑ Del ↓
误分类 SSGrad-CAM++ .647 .220
误分类 VX-CODE (r=3) .738 .168
误定位 SSGrad-CAM++ .766 .120
误定位 VX-CODE (r=3) .787 .078

消融实验

patch selection (PS) + step restriction (SR) 的效果(DETR/COCO,50 实例,RTX A6000,\(r=2\)):

PS SR Ins ↑ Del ↓ OA ↑ 单实例耗时 (s) ↓
.917 .057 .860 768.13
.917 .059 .858 287.61
.922 .056 .866 281.78
.921 .058 .863 96.25

关键发现

  • 两个加速模块几乎不掉点却砍掉约 87% 时间:全开时耗时从 768s 降到 96s(约 8×),Ins/Del/OA 仅微动;其中 step restriction 单开反而把 OA 从 .860 提到 .866,印证"关键 patch 集中在前几步"。
  • \(r\) 越大覆盖越全:长颈鹿例子里 \(r=1,2\) 只点出脖子/额头/耳朵,\(r=3\) 还抓到鼻子;马克杯例子里 \(r=1\) 漏掉杯沿和把手,\(r=2,3\) 能提前找到。大 \(r\) 通过考虑更多 patch 间交互,缓解"奖励增量几乎相等、难以排序"的平坦奖励问题。
  • insertion vs deletion 解释侧重不同:patch insertion 会把"冲浪板 + 海面"这类协同背景一并高亮,patch deletion 优先移除最掉置信度的实例特征、解释更"以物体为中心",可改善定位。
  • 泛化性:在 Grounding DINO(开放词表)上 VX-CODE Ins .962 / Del .211 / OA .751,显著超过对比的 VPS(OA .646);也在单阶段 RetinaNet 上验证有效。

亮点与洞察

  • 把"集体贡献"这个直觉做成可计算的目标:interaction 为负正好对应"两个 patch 信息冗余",这给"找最小无冗余解释集"提供了一个干净的判据,比"挑 Shapley 高的"更贴合检测器"靠组合决策"的本质。
  • 贪心目标的代数分解很巧\(\phi^{sc}(\{\mathcal{B}_{k-1}\}\cup B)\) 看着只是选大小 \(r\) 的集合,展开却自动包含 interaction 项与各子集 Shapley 项——不用显式枚举 interaction,它"免费"出现在贪心里。
  • \(\pi^*\)-index 把工程 heuristic 接回理论:序贯联盟博弈视角下,贪心被解释成对 NP-hard 最优顺序的近似,而"\(\pi^*\)-index 在所有排列上平均 = Shapley 值"这个关系很优雅,给 self-context 这套"非公理化"变体一个体面的理论落点。
  • 可迁移:这套"Shapley + interaction + 贪心 patch 选择"框架不绑定目标检测,凡是输出依赖多区域协同、又想要最小忠实解释的任务(分割、VLM grounding、医学影像)都可借鉴,只需替换奖励函数 \(f\)

局限与展望

  • 计算仍偏重:即便全加速后单实例约 96s(A6000),离实时/大规模审计还远;deletion setup 与 \(r\) 增大都会进一步加成本。
  • 贪心无最优性保证\(\hat\pi=\pi^*\) 没有理论保证,作者也观察到 \(r=1\) 时"早期信息不足"会导致某些案例失败(靠增大 \(r\) 缓解),说明解释质量对 patch 选择顺序敏感。
  • patch 粒度与掩码方式是隐含变量:解释建立在 patch 划分 + 零掩码/模糊"模拟缺席"之上,掩码引入的分布外伪影可能影响奖励,论文虽在附录讨论了奖励形式与掩码方式,但 patch 尺寸的敏感性值得更系统评估。
  • 指标本身的局限:insertion/deletion AUC 是间接代理,不直接等于"人类觉得解释对",pointing game 等只在附录补充;自定义 self-context 值不满 efficiency 公理这点虽不影响实用,但解释的可加性/守恒性较弱。

相关工作与启发

  • vs ODAM / SSGrad-CAM++(梯度/CAM 类):它们靠梯度×特征或带空间信息的 Grad-CAM 算单像素重要性,只反映独立贡献;VX-CODE 显式建模 patch 间 interaction,能点出"次要但协同"的线索(如背景海面、植入标记),在所有数据集/检测器上忠实度领先。
  • vs D-RISE(扰动类):D-RISE 用 5,000 个随机掩码估计每像素重要性,本质仍是个体贡献且解释偏噪;VX-CODE 用结构化的贪心 patch 选择替代随机掩码,更省评估次数、解释更干净。
  • vs BSED / FSOD(已用 Shapley 的检测解释):它们用 Shapley 值估计 per-pixel/per-region 重要性,但不建模交互;本文是首个从 Shapley 值 + interaction + 序贯联盟博弈视角分析贪心 patch 选择的工作。
  • vs MoXI / PredDiff(分类领域的集体贡献):分类上已有工作显示建模集体贡献更忠实,本文把这一思路(含 self-context 变体)迁移并扩展到目标检测,并补上 \(\pi^*\)-index 的理论解释。

评分

  • 新颖性: ⭐⭐⭐⭐ 首个用 Shapley + interaction + 序贯联盟博弈解释检测器、并给贪心理论根的工作,切入角度扎实
  • 实验充分度: ⭐⭐⭐⭐ 覆盖两数据集×两检测器 + Grounding DINO/RetinaNet + 偏置/失败案例 + 加速消融,较全面
  • 写作质量: ⭐⭐⭐⭐ 动机用偏置/失败案例讲得直观,理论推导清晰,但 self-context 与原始指标的关系略绕
  • 价值: ⭐⭐⭐⭐ 解释忠实度明显提升且可用于偏置/失败诊断,对安全敏感场景的检测器审计有实用价值