跳转至

DeltaDeno: Zero-Shot Anomaly Generation via Delta-Denoising Attribution

会议: ECCV2026
论文: ECCV 原文
代码: https://github.com/CROVO1026/DeltaDeno
领域: 异常检测 / 图像生成
关键词: 零样本异常生成、去噪差分归因、提示精炼、空间注意力偏置、潜空间修补

一句话总结

DeltaDeno 用正常与异常提示驱动两条同步扩散轨迹,将去噪后的潜变量差异累积成缺陷定位图,再用该图约束局部生成,在不微调生成器、不使用真实异常样本的条件下,将 MVTec AD 下游图像级 AUROC 从 AnomalyAny 的 77.6 提升至 84.7。

研究背景与动机

工业质检面临的困难不是正常图像不够,而是缺陷既稀少又不断变化,像素级标注还依赖专家。 当生产材料、光照或工艺发生变化时,旧异常样本也未必代表新产线可能出现的故障。 异常生成因此希望从容易收集的正常图像出发,补充可用于训练和压力测试的缺陷图像及对应掩码。 DRAEM 等合成策略容易迁移,但拼接区域可能与原图的材质、光照不一致;AnomalyDiffusion 等少样本方法能够学习真实缺陷,却仍需要真实异常图像和标注。 这使“为了弥补异常数据不足而先收集异常数据”成为实际部署门槛,而且微调得到的类别先验未必能迁移到陌生物体。

零样本异常生成把问题进一步收紧:只能依靠正常参考图、缺陷文字描述和预训练生成器,不进行面向任务的模型适配。 这不只是给图像添加一个视觉变化,还要求同时知道变化发生在哪里,否则合成图像无法提供可靠的分割监督。 AnomalyAny 从交叉注意力图提取掩码,但注意力图较粗,表示“这个词关注哪里”也不等于精确指出“哪里真的被改成缺陷”。 缺陷提示还可能连带改变背景或物体整体形态,使掩码包含与异常无关的变化。 因此,定位、生成和背景保持不能分开考虑:定位过宽会允许无关编辑,定位不准又会让错误掩码污染下游训练。

本文把定位信号改为扩散过程自身的变化:在相同随机种子和调度下,仅改变提示中的异常属性,观察两条轨迹在哪里逐渐分离。 正常参考图提供原始结构,成对提示建立对照,而提示精炼与空间偏置帮助把差异集中到缺陷语义及合理物体区域。 这种对照是操作性的归因,并不是经过严格因果辨识的真实缺陷解释;它是否有用仍需通过生成结果和下游检测验证。 核心 idea:先从正常与异常条件的去噪差异中发现编辑区域,再让该区域反过来约束后半程生成,从而联合产生局部缺陷及其监督掩码。

方法详解

整体框架

输入是一张正常图像、正常提示、只增加异常属性的异常提示,以及用于细化缺陷语义的描述短语。 输出是一张含局部缺陷的图像和最终二值缺陷掩码;不是直接输出针对真实测试图像的异常判别结果。 方法先做“提示精炼”,再从部分加噪的正常图像潜变量启动同步双分支,进行“空间引导的差分归因”,最后执行“掩码约束的后期精炼”。 早期空间先验由 SAM 提供物体前景,后期先验改为归因得到的中间掩码,因此前景掩码与缺陷掩码不能混为一谈。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
        Prompt["成对提示与<br/>缺陷描述"] --> Refine["提示精炼"]
        Image["正常参考图"] --> Init["VAE 编码与部分加噪<br/>SAM 前景掩码"]
        Refine --> Delta["空间引导的差分归因"]
        Init --> Delta
        Delta -->|中间掩码;累积器清零| Late["掩码约束的后期精炼"]
        Init -->|同时间步正常参考潜变量| Late
        Late --> Output["缺陷图像与<br/>最终缺陷掩码"]

这里的两条分支共享预训练扩散模型、随机种子和时间调度,并不是分别训练的正常生成器和异常生成器。 VAE 将正常图像编码为潜变量,加入部分噪声后再反向去噪,避免从纯噪声重新发明一个同类别物体。 这种初始化保留几何与光照的起点,也缩短实际反向轨迹,但不意味着整个过程只有一次网络前向计算。 原文将方法称为 training-free,准确含义是生成器权重不进行任务微调,而非推理时完全没有优化步骤。

关键设计

1. 提示精炼:让双分支的语义差异尽量只来自缺陷

正常提示描述物体,异常提示在同一描述后添加缺陷属性,例如给物体增加裂纹。 如果直接把大量形状、深浅、纹理描述塞进异常句子,新增文字可能改变整句的上下文表示,让非异常区域也发生变化。 作者因此单独编码详细描述,将其作为异常 token 的语义锚点,而不是直接把详细描述拼进主提示。 异常语义蒸馏推动异常 token 靠近这个锚点,使“裂纹”能携带更具体的形态或强度信息。 另一项上下文约束则计算异常提示中非异常 token 的均值表示,并用均方误差正则让这些 token 向该上下文中心靠拢。 需要注意,原文给出的实现描述是向异常提示自身的上下文中心收缩,并未明确写成与正常提示中每个对应 token 逐一匹配。

这两项约束仅用少量梯度迭代更新异常提示嵌入,扩散模型本身保持冻结。 从机制上看,前者增大缺陷语义的可辨识性,后者试图抑制无关上下文漂移,使后续潜变量差分更像异常信号。 它们并不保证非异常词的语义严格不变,因此背景保持还需要后续空间约束。 缓存中异常蒸馏损失及联合损失的部分运算符损坏,本笔记只解释文字可确认的优化目标,不补写未经核实的精确损失公式。 论文给出固定步长、少量迭代的描述,但所读正文没有提供足以复现的完整数值配置。

2. 空间引导的差分归因:用同步潜变量的分离定位缺陷

早期尚不知道缺陷在哪里,SAM 前景掩码先限定哪些表面区域适合响应缺陷文字。 具体做法是在交叉注意力 softmax 之前,仅给异常 token 对应的列加入由空间掩码调制的偏置。 这不是把整张注意力图替换成掩码,也不是对所有词同时增强,而是让缺陷词在前景位置更容易被图像特征关注。 其他 token 的 logits 没有直接加偏置,但 softmax 归一化仍可能改变它们最终的注意力权重,不能理解成其他权重数学上完全固定。 正常与异常分支随后按同一调度更新各自潜变量,对每个空间位置计算更新后潜变量的通道差异,再沿轨迹累积。

依照第 3.2 节对式 (8)–(9) 的文字定义,这个核心操作可写为:

\[ d_{t-1}(u)=\left\|z_{t-1}^{(n)}(u)-z_{t-1}^{(a)}(u)\right\|_2, \qquad S_{t-1}(u)=S_t(u)+d_{t-1}(u). \]

其中 \(u\) 是潜空间位置,通道维上取二范数,\(S\) 是从零开始的空间累积图。 虽然摘要强调 denoiser prediction 的差异,正文具体比较的是每次反向更新之后的潜变量,而不是直接阈值化一张原始噪声预测图。 累积能够保留多步一致的空间分离信号,减少仅依赖单次注意力快照的局限,但无关的持续漂移也可能被累积。 到中间阶段时,作者对累积图轻度平滑、归一化,再用阈值 0.6 得到中间二值掩码。 该掩码回答的是后续允许在哪里编辑,尚不是最终交给检测器的监督掩码。

3. 掩码约束的后期精炼:把粗定位变成局部生成与最终标注

得到中间掩码后,累积器清零,后半程只重新收集后期潜变量差异,以关注局部细节与边界。 注意力偏置的空间先验从 SAM 前景切换为中间掩码,异常 token 的响应因而从整个物体表面收缩到已发现的缺陷区域。 与此同时,潜空间修补将掩码内的编辑结果与掩码外的正常参考潜变量混合,防止异常语义扩散到正常背景。 参考潜变量由原始正常图像的编码加噪至当前对应时间步得到,不是任意一张正常图,也不是无噪声潜变量直接替换。 用式 (5) 的通用写法表示,第 3.2 节的后期融合为:

\[ z_{t-1}=M_{\mathrm{mid}}\odot\tilde z_{t-1} +(1-M_{\mathrm{mid}})\odot z^{\mathrm{src}}_{t-1}. \]

这里 \(\tilde z_{t-1}\) 是本步提出的编辑潜变量,\(z^{\mathrm{src}}_{t-1}\) 是同噪声级别的正常参考,\(\odot\) 表示逐元素乘法。 因此,注意力偏置负责推动区域内生成缺陷,潜变量融合则约束区域外不要持续改变,两者作用不同。 去噪结束后,异常分支由 VAE 解码为图像,后期累积图再经清理、归一化和阈值 0.35 得到最终掩码。 最终阈值主要影响标注边界,中间阈值还会改变后期可编辑区域,因而能直接影响生成的缺陷外观。 该设计产生的是与生成过程配套的掩码,不提供其与真实缺陷像素边界完全一致的理论保证。

一个完整示例

以论文图 6 的 pill-crack 场景为例,输入是一张正常药片图像,正常提示只描述药片,异常提示额外要求裂纹。 详细描述可强调较大、较深的裂纹,它通过提示精炼进入裂纹 token,而不把整段细节强行加进主提示。 SAM 先给出药片前景;共享起点的正常分支尝试保留药片,异常分支在空间偏置下尝试形成裂纹。 两条轨迹持续分离的位置在累积图中变亮,经中间阈值筛选后成为可编辑区域。 后期裂纹在该区域内继续细化,区域外由同时间步的正常参考维持,随后输出裂纹图像及最终掩码。 这是依据方法和图 6 串起的流程示例,不是额外测得的单图成功案例,也没有为示例虚构裂纹尺寸。

损失函数 / 训练策略

默认骨干为 Stable Diffusion v1.5,正文报告 \(T=100\)、部分加噪比例 \(\gamma=0.3\),并给出中间/最终阈值 0.6/0.35。 但第 3.2 节同时定义 \(t_{\mathrm{start}}=\gamma T\)\(t_{\mathrm{mid}}=\lfloor T/2\rfloor\),代入后分别为 30 和 50。 若二者使用同一递减时间索引,从 30 出发不会经过 50;正文没有清楚区分完整调度与实际执行步数的索引。 本笔记保留这一复现疑点,不擅自将中点改成实际轨迹的一半,也不把它解释为已核实的代码行为。 零样本约束针对异常合成阶段:不使用真实异常图像或像素标签,不做生成器微调,提示嵌入仍在推理时优化。 下游检测实验另外训练 U-Net,使用每类同一张正常参考图生成的 100 张异常图像及其掩码,真实测试集只用于评估。 因此,“无需训练的生成器”不能误写为“无需训练的整个检测系统”。

实验关键数据

主实验

下表摘录原文表 2、表 3(第 12 页)的类别均值,数值均为百分制,越高越好。 AUROC-i、AP-i 分别是图像级 AUROC、平均精度;AUROC-p、AP-p 是对应像素级指标。 协议为每类同一张正常图生成 100 张异常图,使用相同 U-Net 架构和训练调度,在真实测试集评估,无测试时适配。

数据集 方法 AUROC-i AP-i AUROC-p AP-p
MVTec AD AnomalyAny 77.6 87.1 83.3 26.5
MVTec AD AnoStyler 84.4 91.5 78.2 30.2
MVTec AD DeltaDeno SD1.5 84.7 91.3 84.9 30.5
MVTec AD DeltaDeno FLUX 89.7 94.8 85.4 41.5
VisA AnomalyAny 74.7 77.9 87.6 7.5
VisA AnoStyler 76.5 80.7 86.0 16.6
VisA DeltaDeno SD1.5 82.1 85.7 90.1 11.6
VisA DeltaDeno FLUX 85.1 87.6 90.2 15.0

相对 AnomalyAny,SD1.5 版本的 MVTec AD 图像级 AUROC 增加 7.1 个百分点,但相对 AnoStyler 只增加 0.3 个百分点。 VisA 上 SD1.5 的图像级 AUROC 更高,像素级 AP 却低于 AnoStyler 的 16.6,不能概括为所有检测指标都领先。 FLUX 提升展示了骨干可扩展性,但换骨干同时改变预训练能力,不是只改变归因模块的受控消融。

原文表 1(第 11 页)的 MVTec AD 生成指标均值如下;IS 与 IC-LPIPS 均按论文约定越高越好。 IC-LPIPS 是簇内图像两两 LPIPS 距离,用于衡量多样性;IS 是生成质量代理指标,不等同于工业缺陷的物理真实性认证。

方法 IS IC-LPIPS
Crop-Paste 1.51 0.14
DFMGAN 1.72 0.20
AnomalyDiff 1.80 0.32
AnomalyAny 2.02 0.33
AnoStyler 2.04 0.32
DeltaDeno 2.05 0.36

平均 IS 相对 AnoStyler 仅高 0.01,而 IC-LPIPS 相对 AnomalyAny 高 0.03;二者支持有限的平均优势,不支持逐类别全面获胜。 例如表 1 中 leather 的 IS 为 1.77,低于 AnoStyler 的 2.94,说明类别差异很大。 该表混有少样本与零样本方法,所需监督资源不同,不能视作所有输入条件完全一致的排名。

消融实验

下表来自原文表 4(第 14 页),为 MVTec AD 下游检测类别均值,数值为百分制,越高越好。 各变体从同一正常引导图生成相同数量的异常图,再训练 U-Net;完整配置与表 2 的 SD1.5 行一致。

配置 AUROC-i AP-i AUROC-p AP-p
去掉潜空间掩码修补 A 79.7 87.6 81.2 25.8
去掉注意力偏置 B 79.5 88.2 83.4 28.3
去掉提示精炼 C 78.8 86.3 83.1 28.1
完整模型 84.7 91.3 84.9 30.5

关键发现

  • 去掉提示精炼后图像级 AUROC 从 84.7 降为 78.8,下降 5.9 个百分点,是这组消融中该指标的最大降幅。
  • 去掉潜空间掩码修补后像素级 AP 从 30.5 降为 25.8,下降 4.7 个百分点,显示背景和编辑边界约束对定位监督尤其重要。
  • 图 5 的阈值分析主要是定性展示:中间阈值影响生成区域,最终阈值主要改变掩码,不应给它补造未报告的最优指标。
  • 表 2 中 FLUX 的 screw 图像级 AUROC 为 100.0,但像素级 AUROC/AP 仅为 46.6/0.2,说明识别有异常与准确定位异常可能严重分离。

亮点与洞察

  • 掩码来自多步生成轨迹的差分,而非额外训练的缺陷分割器。定位与合成共享内部状态,使生成图像天然拥有一个候选监督区域。
  • 两阶段掩码具有不同职责,中间掩码控制编辑,最终掩码提供标注。将控制区域与监督边界分开,避免一个阈值同时承担两种不完全相同的目标。
  • 提示精炼不是单纯扩写提示,而是增强异常 token、压缩无关上下文漂移。这说明提高条件差异的可解释性,可能比一味提高提示细节更有利于差分定位。

局限与展望

  • 作者承认,现有零样本异常生成评价协议有限,未来可考虑多模态大语言模型辅助评估,但本文尚未验证这种替代评价的可靠性。
  • 语义蒸馏对细粒度缺陷属性的控制仍有限,当前生成更偏向结构或表面缺陷,抽象的逻辑异常仍然困难。
  • 真实与合成缺陷类型分布不一致,VisA 像素级 AP 和 screw 定位结果表明更强骨干也不能自动消除这一差距。
  • 从复现角度看,时间步定义冲突、部分公式抽取损坏,以及提示优化等参数说明不足,需要原始公式或实现进一步澄清。
  • 从读者角度看,双分支、SAM 和提示优化都引入计算开销;所读正文未给出足以判断部署吞吐量的统一运行时间对比。
  • 代码链接来自论文的公开计划,本次未联网确认仓库可用性;生成区域的归因也不应被当成真实工业故障的因果解释。

相关工作与启发

  • 与 AnomalyAny 对比:同属零样本异常生成,但本文将粗交叉注意力定位替换为同步去噪轨迹的空间差分,并用后期修补限制外溢。优势需结合类别结果判断,而非仅看平均分。
  • 与 DiffEdit 对比:DiffEdit 已利用源提示与目标提示的对照得到编辑掩码,因此提示差分本身并非全新。本文重点在面向异常合成的多步累积、提示精炼及两阶段定位与修补组合。
  • 与 AnomalyDiffusion 对比:后者依靠真实缺陷和掩码微调,本文不需要这些异常监督,但对真实缺陷分布的贴合也缺少直接保障。
  • 可延伸方向:可研究用局部生成变化与最终掩码的一致性筛选合成样本,减少错误监督进入检测器。这是读者提出的研究方向,不是论文已完成的实验。

评分

  • 新颖性: 4/5。将轨迹差分、条件精炼和两阶段局部编辑组合到零样本异常生成,贡献明确,但与既有差分编辑存在方法联系。
  • 实验充分度: 4/5。覆盖生成指标、两个下游数据集、不同骨干与模块消融,但缺少统一运行效率和统计波动证据。
  • 写作质量: 3/5。整体流程清楚,但时间步索引存在歧义,且当前文本抽取不支持完整核对所有损失细节。
  • 价值: 4/5。适合真实异常样本难以获取时的数据冷启动,实际采用仍需验证目标类别的定位质量。