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) 的文字定义,这个核心操作可写为:
其中 \(u\) 是潜空间位置,通道维上取二范数,\(S\) 是从零开始的空间累积图。 虽然摘要强调 denoiser prediction 的差异,正文具体比较的是每次反向更新之后的潜变量,而不是直接阈值化一张原始噪声预测图。 累积能够保留多步一致的空间分离信号,减少仅依赖单次注意力快照的局限,但无关的持续漂移也可能被累积。 到中间阶段时,作者对累积图轻度平滑、归一化,再用阈值 0.6 得到中间二值掩码。 该掩码回答的是后续允许在哪里编辑,尚不是最终交给检测器的监督掩码。
3. 掩码约束的后期精炼:把粗定位变成局部生成与最终标注
得到中间掩码后,累积器清零,后半程只重新收集后期潜变量差异,以关注局部细节与边界。 注意力偏置的空间先验从 SAM 前景切换为中间掩码,异常 token 的响应因而从整个物体表面收缩到已发现的缺陷区域。 与此同时,潜空间修补将掩码内的编辑结果与掩码外的正常参考潜变量混合,防止异常语义扩散到正常背景。 参考潜变量由原始正常图像的编码加噪至当前对应时间步得到,不是任意一张正常图,也不是无噪声潜变量直接替换。 用式 (5) 的通用写法表示,第 3.2 节的后期融合为:
这里 \(\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。适合真实异常样本难以获取时的数据冷启动,实际采用仍需验证目标类别的定位质量。