跳转至

MAGIC: Few-Shot Mask-Guided Anomaly Inpainting with Prompt Perturbation, Spatially Adaptive Guidance, and Context Awareness

会议: CVPR 2026 Findings
arXiv: 2507.02314
代码: GitHub
领域: 图像生成 / 异常检测
关键词: 少样本异常生成, 扩散模型, inpainting, 工业质检, prompt扰动, 空间自适应引导, 掩码对齐
作者: JaeHyuck Choi, MinJun Kim, Je Hyeong Hong (汉阳大学)

一句话总结

提出 MAGIC 框架,通过微调 inpainting 扩散模型,结合高斯 prompt 扰动、掩码引导空间噪声注入和上下文感知掩码对齐三个互补模块,在少样本条件下生成高保真、多样化、空间合理的工业异常图像,在 MVTec-AD 下游任务上达到 SOTA。

背景与动机

工业质检场景中,正常图像大量可得,但异常图像极其稀缺。虽然异常检测可以仅靠正常样本训练(如单类分类、重建方法),但异常分类(对根因分析至关重要)仍然需要有标签的异常样本。因此,利用生成模型合成真实感异常图像成为关键需求。

现有扩散模型方案存在两类问题: - 全局异常生成(GAG)方法(如 DualAnoDiff)同时生成异常图像和掩码,但由于不接受正常图像引导,经常破坏正常背景纹理 - 掩码引导异常生成(MAG)方法(如 AnomalyDiffusion、AnoGen)保留背景,但存在异常区域与输入掩码不对齐、掩码偏移到物体边界外等问题,且冻结骨干网络限制了生成质量

核心矛盾在于:直接对 inpainting 模型进行少样本微调可以保证背景保真和掩码对齐,但会严重过拟合——生成结果缺乏多样性,且当掩码放在语义不合理的位置时生成质量差。

方法详解

整体框架

MAGIC 要解决的是工业场景里异常样本太少、直接微调 inpainting 模型又会严重过拟合(多样性塌缩、掩码放歪就生成崩坏)的困境。它以 Stable Diffusion 2 inpainting 为底座、用 DreamBooth 微调,并固定一个稀有 token(如「sks」)当异常 prompt,省掉对每类物体写文本描述的需求。训练时把异常图像 \(I_A\)、真实掩码 \(M_{GT}\) 和被掩码遮挡的正常背景 \(I_A^M\) 拼接成输入,配上经高斯扰动的 prompt embedding \(c_p\) 训练网络;推理时给定正常图像 \(I_N\) 和自动掩码 \(M\),先用 CAMA 把掩码对齐到语义合理位置得到 \(M_a\),再用随机扰动的 \(c_p\) 和 MGNI 局部噪声注入去噪生成。三个模块分别从全局纹理、局部纹理、空间位置三个维度补回微调丢掉的能力。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    Base["底座:SD2 inpainting + DreamBooth 微调<br/>固定稀有 token「sks」作异常 prompt"]
    Base -->|训练| T1["拼接输入:异常图 + 真实掩码 + 遮挡背景"]
    Base -->|推理| F1["输入:正常图 + 自动掩码"]
    T1 --> GPP["高斯 Prompt 扰动 GPP<br/>prompt embedding 注入高斯噪声"]
    GPP --> T2["训练去噪网络<br/>学平滑的 embedding 球→图像映射"]
    F1 --> CAMA["上下文感知掩码对齐 CAMA<br/>三关键点语义对应、对齐到合理位置"]
    CAMA --> Gen["DDIM 去噪生成<br/>推理时同用 GPP 扰动 prompt"]
    Gen --> MGNI["掩码引导空间噪声注入 MGNI<br/>仅缺陷区注噪 + 时间衰减门控"]
    MGNI --> Out["高保真 + 多样 + 位置合理的异常图像"]

关键设计

1. 高斯 Prompt 扰动(GPP):让异常概念对应一个 embedding 球而非一个点

直接微调最大的代价是多样性塌缩——同一个固定 prompt 永远生成几乎一样的异常。GPP 在 prompt embedding 空间注入高斯噪声 \(c_p = \tau(\mathcal{P}) + \delta,\ \delta \sim \mathcal{N}(0, \sigma^2 I)\)\(\sigma=1.0\))来撑开全局纹理多样性。真正的关键不在加噪本身,而在训练和推理同时加:若只在推理时加噪,模型没见过这种扰动分布,会产生不真实纹理;训练时也注入同分布扰动,模型才学到从 embedding 球到图像空间的平滑映射,推理时从同一个球上采样自然得到「多样但都逼真」的异常。

2. 掩码引导空间噪声注入(MGNI):只在缺陷区补局部纹理多样性

GPP 管的是全局,缺陷内部的细粒度纹理还是偏单一。MGNI 在 DDIM 去噪时只往掩码区域内额外注入随机噪声,强度由尺度因子 \(a\)(从 \([0, 0.6]\) 均匀采样)和时间衰减门控 \(\lambda(t) = a \cdot \mathbb{1}_{t > t_{\min}}\) 控制:去噪早期(\(t \approx 1\))注噪丰富纹理,后期(\(t \to 0\))退回标准 DDIM 更新以保住保真度。具体是在标准 DDIM 更新上加一项局部化噪声 \(\sqrt{1-\alpha_{t-1}} \cdot \lambda(t) \cdot M \cdot \eta_t\),因为乘了掩码 \(M\) 所以只作用在缺陷像素、完全不碰背景。

3. 上下文感知掩码对齐(CAMA):把缺陷放到语义说得通的位置

对螺丝、电缆这类物体型类别,异常只该出现在特定语义子区域,掩码随便放就会生成质量差。CAMA 用预训练的 GeoAware-SC 语义对应模型,只从异常样本里取三个关键点——掩码质心 \(p_c\)、上边界点 \(p_u\)、下边界点 \(p_\ell\)——建立与正常图像的语义对应:先为三点各算相似度图 \(S_u, S_c, S_\ell\),匹配上下边界点得到 \(q_u^*, q_\ell^*\) 构成候选线 \(\mathcal{L}\),再在候选线、前景掩码 \(M_f\) 和相似度图 \(S_c\) 的联合约束下优化质心 \(q_c^*\),最后把掩码平移到新位置并与前景取交集。只靠三个关键点就完成鲁棒的掩码迁移,比稠密对应省得多又够准。

实验关键数据

生成质量评估(MVTec-AD, Table 1)

方法 KID (×10³) ↓ IC-LPIPS ↑
AnomalyDiffusion 104.01 0.30
AnoGen 105.39 0.31
DualAnoDiff 96.82 0.36
MAGIC (Ours) 46.06 0.30

MAGIC 的 KID 分数大幅领先(低 52%+),表明生成分布与真实异常最为接近。DualAnoDiff 的 IC-LPIPS 较高部分归因于背景破坏带来的虚假多样性。

下游异常分类准确率(ResNet-34, Table 2)

方法 平均分类准确率 (%)
Crop-Paste 56.17
AnomalyDiffusion 64.90
AnoGen 56.92
DualAnoDiff 68.50
MAGIC (Ours) 76.39

MAGIC 分类准确率比次优方法 DualAnoDiff 高 7.89 个百分点。在 hazelnut(95.83%)、screw(83.95%)等类别上提升尤为显著。

下游异常检测与定位(U-Net, Table 3)

方法 AUROC-P AP-P F1-P AP-I
Crop-Paste 94.4 69.1 70.7 98.9
AnomalyDiffusion 98.2 75.0 73.2 99.1
DualAnoDiff 97.4 76.8 72.9 98.6
MAGIC (Ours) 99.0 81.7 77.4 99.5

在所有像素级和图像级指标上 MAGIC 均达最优,AP-P 领先次优近 5 个百分点。

消融实验(Table 4)

GPP MGNI CAMA KID↓ 分类准确率(%)
40.36 70.09
33.87 74.07
40.13 74.50
38.76 76.39

GPP 单独使用显著降低 KID 并提升分类~3%;MGNI 增加多样性虽略微提升 KID 但改善下游表现;CAMA 在物体类别上带来额外~2.85% 提升。

关键发现

  • 在 prompt embedding 空间注入高斯扰动比简单换随机种子更能有效增加全局纹理多样性
  • 训练时也使用 GPP 是关键——仅推理时用会导致分布偏移产生不真实纹理
  • 空间局部噪声注入(MGNI)和 prompt 级扰动(GPP)分别增强局部和全局多样性,二者互补
  • 仅用三个关键点的语义对应就能完成高效掩码对齐,比密集对应计算成本低得多

亮点与洞察

  1. 问题定义精准:明确提出异常生成器需同时满足三个需求(背景保真、掩码对齐、语义合理位置),现有方法最多满足两个
  2. 从个性化生成技术迁移洞察:借鉴 DreamBooth 微调获得保真度,但通过 embedding 空间扰动恢复多样性——本质是在过拟合和欠拟合之间找平衡
  3. 不需要物体特定文本描述:仅用"sks"这样的稀有 token,提升了对无语义标签的工业零件的通用性
  4. 评价公平性:所有基线方法统一复现、统一评估协议、不做手动筛选,评价可信度高
  5. 训练与推理的对称性设计(GPP 同时在 train 和 test 使用)体现了对分布一致性的深刻理解

局限性

  • CAMA 依赖输入掩码与真实缺陷形状的粗略匹配,偏差过大时语义对应不准
  • 依赖预训练组件(U2-Net 提取前景、GeoAware-SC 做语义对应),在重复结构或未见领域可能失效
  • 仅在 MVTec-AD 一个数据集上验证,未测试 VisA 等其他常用异常数据集
  • 每个异常类别需独立训练约 1.5 小时(5000 步),类别数多时训练成本较高
  • CAMA 增加推理时间(约 5 倍),实时性受限

相关工作与启发

  • AnomalyDiffusion:冻结骨干+文本反演生成异常,MAGIC 改为微调 inpainting 获得更好保真度
  • DualAnoDiff:双流注意力共享的全局方法,多样性高但背景破坏严重
  • DreamBooth/Textual Inversion:个性化生成的两条路线,MAGIC 取 DreamBooth 的保真度然后用扰动补多样性
  • DreamDistribution:同样在 embedding 空间做分布采样增加多样性,但面向通用个性化生成而非异常
  • DefectFill:同期工作,也微调 inpainting,但需物体特定 prompt 且不处理掩码错位

启发:embedding 空间高斯扰动+对称训练推理的技巧具有通用性,可迁移到其他少样本条件生成任务(如医学图像增强、小样本风格迁移)。CAMA 的轻量级语义对应思路也值得在需要空间先验的生成任务中借鉴。

评分

  • 新颖性: ⭐⭐⭐⭐ — 三个模块各有新意,GPP 训练推理对称设计尤其巧妙
  • 实验充分度: ⭐⭐⭐⭐ — 消融完整、公平对比、下游任务覆盖全面,但仅一个数据集略显不足
  • 写作质量: ⭐⭐⭐⭐ — 问题动机清晰,方法表述完整,图表质量好
  • 价值: ⭐⭐⭐⭐ — 对工业异常检测的数据增强具有实用价值,技术洞察可迁移