An Incremental Unified Framework for Small Defect Inspection¶
会议: ECCV 2024
arXiv: 2312.08917
代码: https://github.com/jqtangust/IUF
领域: 其他
关键词: 缺陷检测, 增量学习, 灾难性遗忘, 语义压缩, 重建网络
一句话总结¶
提出增量统一框架IUF,首次将增量学习集成到统一重建式缺陷检测方法中,通过目标感知自注意力(OASA)建立语义边界、语义压缩损失(SCL)压缩非主要语义空间、以及基于SVD的权重更新策略保护旧对象特征,在MVTec-AD和VisA上实现图像级和像素级的SOTA增量缺陷检测性能。
研究背景与动机¶
领域现状:AI驱动的小缺陷检测(异常检测)在工业制造中至关重要,主流方法分为两类:(1) 特征嵌入方法(如PaDiM、PatchCore),通过比较测试图像与正常图像的特征分布差异来定位缺陷;(2) 重建方法(如UniAD),训练模型重建正常样本,异常区域因无法被准确重建而被检测出来。当前大多数方法采用"一个模型-一个对象"模式,即每个产品单独训练一个检测模型。
现有痛点:工业生产中产品种类多且不断变化,存在两个关键挑战:(1) 需要一个系统能同时检测多种产品的缺陷;(2) 系统需要适应频繁调整的生产计划——新产品不断加入,不可能每次都从头训练。现有的统一模型(如UniAD)可以处理多种对象,但无法处理新对象的动态加入。而基于记忆库的增量方法(如CAD)存在存储容量限制和对象分布冲突——不同对象的特征存在同一个记忆库中会相互干扰,且无法提供像素级定位。
核心矛盾:在增量学习场景下,统一重建网络面临严重的"灾难性遗忘"问题。当学习新对象时,网络的语义特征空间会被新对象的特征覆盖,导致旧对象的重建能力急剧下降。根本原因是不同对象的语义特征在重建网络中紧密耦合,没有明确的边界区分。
本文目标 1) 如何在一个统一重建模型中增量地学习新对象而不忘记旧对象;2) 如何为不同对象建立独立的语义空间以减少特征冲突;3) 如何在不保存历史数据/特征的条件下保护旧对象的重建能力。
切入角度:作者从语义空间管理的角度切入。整体策略分三步:首先通过类别信息建立不同对象的语义边界(让网络知道当前处理的是哪类对象);然后压缩每个对象的非关键语义空间,为未来新对象留出容量;最后在学习新对象时,抑制对旧对象主要语义空间的权重更新。
核心 idea:通过语义空间的"圈地-压缩-保护"三步策略,在无需记忆库的前提下实现统一重建模型的抗遗忘增量缺陷检测。
方法详解¶
整体框架¶
IUF基于Transformer重建网络(以UniAD为基础)。整体流程为:正常图像输入 → 编码器提取多层特征 → 目标感知自注意力注入类别约束 → 重建网络生成重建特征 → 通过比较输入与重建特征的差异定位缺陷。增量学习时,新对象按步骤加入训练,历史对象的训练数据不可访问。框架包含三个核心组件:OASA(建立语义边界)、SCL(压缩语义空间)、更新策略(保护旧语义)。
关键设计¶
-
Object-Aware Self-Attention (OASA,目标感知自注意力):
- 功能:为不同对象在重建网络中建立独立的语义边界,使网络能区分不同对象的特征空间
- 核心思路:引入一个辅助判别器 \(D(\cdot)\),接受输入图像并输出两个结果:(1) 对象类别预测 \(y_n\),通过交叉熵损失 \(L_{CE}(y_n, L_n)\) 训练;(2) 关键层的类别语义特征 \(C_{o_n} \in \mathbb{R}^{T \times C \times H \times W}\)(\(T\)为关键层数)。然后将 \(C_{o_n}\) 注入重建网络的自注意力机制中,具体方式为对Query进行Hadamard乘积调制:\(\text{Attention}(C_{o_n}, Q, K, V) = \text{softmax}(\frac{(C_{o_n} \cdot Q)K^T}{\sqrt{d_k}})V\)。这样,不同对象类别会产生不同的Query调制,使重建网络在处理不同对象时使用不同的语义子空间
- 设计动机:原始UniAD的重建网络对所有对象使用同一套语义空间,导致学习新对象时必然覆盖旧对象的模式。通过显式注入类别信息,相当于给每个对象在语义空间中"圈地",形成边界
-
Semantic Compression Loss (SCL,语义压缩损失):
- 功能:压缩每个对象的非主要语义特征,为未来新对象腾出更多网络容量
- 核心思路:对中间层特征 \(M \in \mathbb{R}^{B \times C \times H \times W}\) 先做空间聚合得到 \(\hat{M} \in \mathbb{R}^{B \times C}\),然后对其进行SVD分解:\(\hat{M} = USV^T\)。对角矩阵 \(S\) 的特征值反映了各通道语义信息的重要性——大特征值对应主要语义,小特征值对应非主要语义。SCL损失函数为 \(L_{sc} = \sum_{i=t}^{C} \sigma_i\),即最小化排名靠后的特征值之和,迫使对象的语义信息集中在少数关键通道上,释放其余通道给未来对象使用。超参数 \(t\) 控制压缩程度
- 设计动机:如果不压缩,每个对象的特征会扩散到所有通道,新对象加入时几乎不可避免地与旧对象在通道上冲突。通过SVD驱动的压缩,强制每个对象只"占用"最重要的少数通道,为增量学习预留空间
-
Reinforcing Primary Semantic Memory(强化主要语义记忆):
- 功能:在学习新对象时保护旧对象的关键语义空间不被覆盖
- 核心思路:分为两部分。(1) 保留旧权重:在梯度下降中持续添加旧权重的正则项,\(\theta_j' \leftarrow \theta_j + \nabla\theta_j^* + \beta\theta_j^{old}\),其中 \(\beta\) 控制正则强度。(2) 抑制旧语义空间的更新:将梯度更新向量 \(\nabla\theta_j\) 投影到旧对象的通道特征空间(利用之前SVD分解得到的 \(V_{old}^T\)),然后通过log约束函数 \(\Omega(k,c) = k \times \log(c)\) 来抑制在重要通道(排名靠前)上的更新——当通道索引 \(c=1\)(最重要)时,\(\log(1)=0\)即完全不更新;随着 \(c\) 增大,允许越来越大的更新幅度。最后将约束后的梯度投影回原始空间
- 设计动机:即使有语义边界和压缩,直接的梯度更新仍可能侵入旧对象的语义空间。log约束函数提供了平滑的保护——最重要的语义空间完全锁定,次要空间允许部分更新以保持网络的学习灵活性
损失函数 / 训练策略¶
总损失为 \(L = \lambda_0 L_1 + \lambda_1 L_{CE} + \lambda_2 L_{sc}\),其中 \(L_1\) 是重建损失(\(\lambda_0=1\)),\(L_{CE}\) 是对象分类损失(\(\lambda_1=0.5\)),\(L_{sc}\) 是语义压缩损失(\(\lambda_2 \in [1,10]\))。增量学习按步骤进行:先训练基础对象集,然后每步加入新对象,训练时只能访问当前步骤的数据和上一步的模型权重。
实验关键数据¶
主实验¶
| 数据集 | 设置 | 指标 | IUF | UniAD (无增量) | CAD (记忆库) |
|---|---|---|---|---|---|
| MVTec-AD | 10-1 with 5 Steps | Image ACC↑ | 94.2 | 78.3 | 90.1 |
| MVTec-AD | 10-1 with 5 Steps | Pixel ACC↑ | 95.1 | 83.6 | N/A |
| MVTec-AD | 10-1 with 5 Steps | Image FM↓ | 3.2 | 21.5 | 8.2 |
| MVTec-AD | 3-3 with 4 Steps | Image ACC↑ | 84.2 | 68.7 | 78.4 |
| VisA | 8-1 with 4 Steps | Image ACC↑ | 79.6 | 62.1 | 74.3 |
消融实验¶
| 配置 | 10-1/5Steps ACC (Img/Pix) | 10-1/5Steps FM (Img/Pix) |
|---|---|---|
| w/o OASA | 84.2 / 90.3 | 14.2 / 8.6 |
| w/o SCL | 93.4 / 95.1 | 3.6 / 2.7 |
| w/o US (更新策略) | 85.6 / 90.5 | 13.5 / 8.4 |
| Full IUF | 94.2 / 95.1 | 3.2 / 1.0 |
关键发现¶
- OASA是抗遗忘的基础:去掉OASA后遗忘度(FM)从3.2飙升至14.2,说明语义边界的建立是整个框架的根基。没有边界,后续的压缩和保护策略都缺乏基础
- 更新策略是第二重要组件:去掉后FM从3.2升至13.5,说明即使有语义边界,不保护旧空间仍会导致大量遗忘
- SCL的贡献相对温和但不可缺:去掉后ACC仅从94.2略降至93.4,但FM从3.2升至3.6,且在多步增量场景下效果更明显
- 步数越多,IUF优势越大:在3-3/4Steps(更多增量步骤)的困难设置下,IUF与UniAD的差距更大,说明框架在长序列增量中具有良好的可扩展性
- IUF是唯一能同时提供图像级和像素级性能的增量方法——CAD只能做图像级
亮点与洞察¶
- SVD在语义空间管理中的精妙应用:用SVD分解来量化通道重要性,然后同时用于压缩(SCL最小化小特征值)和保护(在重要通道上抑制梯度),一举两得的设计非常优雅
- 无需记忆库的增量学习:与CAD等需要存储历史特征的方法不同,IUF完全不保存历史数据或嵌入,只通过语义空间的结构化管理来抗遗忘,避免了存储开销和跨对象特征干扰
- log约束函数的直觉设计:\(\log(c)\) 在 \(c=1\) 时为0(完全保护),在 \(c\) 增大时逐渐放松,提供了平滑的保护到放行的过渡,比硬阈值更灵活
局限与展望¶
- 框架基于UniAD的Transformer重建网络,对其他架构(如基于GAN或VAE的方法)的适用性需要验证
- OASA需要类别标签作为输入——在实际部署中需要知道当前检测的是哪类产品,可能限制某些全自动场景
- SVD分解在每次训练迭代中执行,计算开销随通道数增大而增长,在非常宽的网络中可能成为瓶颈
- 超参数 \(\lambda_2\) 和 \(t\) 需要根据对象数量和增量步数调整,自动化的超参数选择会更实用
- 当增量步数非常多(>10步)时,语义空间可能最终被占满,长尾增量场景的表现需要进一步研究
- 当前实验中所有对象大小相似(工业零件),对大小差异极大的对象混合检测能力未知
相关工作与启发¶
- vs UniAD:UniAD是IUF的基础模型,可以同时处理多对象但不支持增量学习。IUF通过OASA/SCL/更新策略三组件赋予其增量能力
- vs CAD:CAD使用记忆库存储所有对象的特征嵌入,存在容量限制、跨对象干扰和无法像素级定位三个缺陷。IUF通过修改网络内部的语义表示完全避免这些问题
- vs EWC/SI/MAS:这些经典增量学习方法通过正则化保护重要参数,但不针对缺陷检测的重建任务设计。IUF的语义空间管理是专门为重建网络定制的方案
- 这篇工作启发了一个关键问题:其他需要重建的任务(如图像修复、异常检测、生成模型)是否也能从类似的语义空间管理策略中受益?
评分¶
- 新颖性: ⭐⭐⭐⭐ 首次将增量学习与统一重建缺陷检测结合,SVD驱动的语义空间管理策略原创性强
- 实验充分度: ⭐⭐⭐⭐ 两个数据集、多种增量设置、全面的消融实验和定性分析
- 写作质量: ⭐⭐⭐⭐ 问题形式化清晰,方法推导逻辑通顺,图表说明直观
- 价值: ⭐⭐⭐⭐ 解决了工业缺陷检测中的真实痛点(产线频繁切换),有直接的应用价值
相关论文¶
- [ECCV 2024] STSP: Spatial-Temporal Subspace Projection for Video Class-Incremental Learning
- [ACL 2025] AnalyticKWS: Towards Exemplar-Free Analytic Class Incremental Learning for Small-footprint Keyword Spotting
- [ACL 2025] Learning to Align Multi-Faceted Evaluation: A Unified and Robust Framework
- [ACL 2025] SSUF: A Semi-supervised Scalable Unified Framework for E-commerce Query Classification
- [NeurIPS 2025] A Unified Framework for Variable Selection in Model-Based Clustering with Missing Not at Random