目录
📗 2.1 模式生成阶段:Pattern Generation Network
📘 2.2 模式对比阶段:Pattern Comparison Network
🔁 2.4 补充:双向预测策略(Bi-directional Inference)
论文标题
Unsupervised Industrial Anomaly Detection via Pattern Generative and Contrastive Networks
核心问题
在工业生产中,异常缺陷(如裂痕、划痕)通常出现频率低,但对产品质量影响严重。传统监督学习方法虽性能优秀,但需要大量标注缺陷数据,而实际应用中收集和标注这些异常图像成本高、难度大。本文关注的核心工业痛点是:在缺乏缺陷样本的情况下,如何准确实现工业产品图像的无监督异常检测和定位。
创新方法
本文提出一种基于Vision Transformer(ViT)【1】的无监督工业异常检测方法,结合模式生成网络【2】和对比网络【3】进行异常识别与定位。其主要技术点包括:
-
模式生成网络(Pattern Generation Network):
-
利用两个ViT编码器提取连续图像块的特征;
-
使用ViT解码器生成下一个图像块,模拟正常图像的演化模式(类似于我们人类的脑补画面)。
-
-
对比网络(Pattern Comparison Network):
-
基于Siamese网络结构【4】,对比生成图像块与真实图像块;
-
利用相似性差异实现异常区域定位。
-
-
双向推理策略(Bi-directional Inference Strategy):
-
对于预测图像边缘扩展问题,使用双向预测提高定位精度。
-
✅ 依赖预训练模型:是的,ViT模块使用预训练权重以增强特征表达和模型泛化能力。
论文讲解
整篇论文的研究逻辑可分为以下几个阶段:
1. 问题引入与动机说明
介绍工业异常检测的挑战,特别是在异常样本稀缺的背景下,传统方法的局限性。
2. 方法设计
提出整体架构,分为两个阶段:
-
模式生成阶段:模仿人类对正常图像的记忆和预测过程;
-
模式对比阶段:计算预测图像与真实图像之间的相似度。
每一部分都详细介绍了ViT模块的结构、输入输出格式及其作用,强调其对全局纹理的建模优势。
3. 实验验证
-
在公开数据集 MVTec AD 上测试,AUC达到 99.8%,超过现有SOTA方法;
-
在自建皮革与布料数据集上进行定性展示,验证算法鲁棒性与适应性。
4. 细节优化
使用双向推理策略,提升对边缘缺陷的检测能力,缓解单向推理易造成的边缘模糊问题。
局限分析
尽管方法在多个维度上表现优越,但也存在以下潜在局限:
-
计算成本高:
-
ViT模型相比CNN结构拥有更复杂的结构和更多的参数;
-
对GPU资源与推理速度有较高要求,不利于边缘部署。
-
-
数据依赖性:
-
虽然是无监督方法,但其依赖大量正常图像进行训练;
-
若正常样本不足,模式学习效果将受限。
-
-
泛化能力风险:
-
虽然模型对纹理变换表现鲁棒,但对完全不同类别的工业品仍需验证;
-
尤其是对跨品类、不同视觉风格数据的迁移能力可能有限。
-
-
可解释性:
-
尽管引入“类人推理”概念和ViT结构增强了可解释性,但模型内部机制仍属于“黑箱”,难以全面解释异常定位依据。
-
提出两个问题
• Why型:为什么该方法比传统方案更优?
传统方法(如基于AutoEncoder或聚类的方案)依赖低维压缩或特征记忆库,容易对新颖纹理失效。而本文方法利用ViT的全局建模能力结合模式生成+对比推理的方式,在纹理复杂、缺陷形态多变的场景下更具鲁棒性和泛化性,并通过生成预测增强推理可信度。
• How型:如何将该方法扩展到其他场景?
该方法可扩展至其他领域如医疗图像异常检测(如X光片/CT图)、智能制造质检或遥感图像变化检测等场景,只需提供正常样本并替换图像预处理流程,便可利用其模式生成与比对能力检测非标准区域。
模式生成阶段与模式对比方法详解
该方法旨在模仿人类的认知过程,分两个阶段完成无监督工业图像的异常检测任务:
-
第一阶段:模式生成阶段(Pattern Generation)
-
第二阶段:模式对比阶段(Pattern Comparison)
其基础网络结构全部构建于 Vision Transformer(ViT) 上,充分利用其全局感受野和多头自注意力机制,提升异常识别的感知能力。
📗 2.1 模式生成阶段:Pattern Generation Network
💡 设计动机:
模拟人类在观察时对正常图像的连续模式记忆和预测能力。如果一个图像是正常的,其局部结构演化具有可预测性,反之则无法预测。
🧱 模块结构:
-
两个 ViT 编码器(Encoder1、Encoder2):分别对图像中的 Patch1 和 Patch2 进行编码;
-
一个 ViT 解码器(Decoder):利用前两个图像块的特征,预测图像中的 Patch3。
🔄 输入输出流程:
步骤 | 模块 | 输入 | 输出 |
---|---|---|---|
1 | ViT Encoder 1 | 图像块 Patch1 | 特征向量 F1 |
2 | ViT Encoder 2 | 图像块 Patch2 | 特征向量 F2 |
3 | ViT Decoder | 组合特征 F1 + F2 | 预测 Patch3(记为 Patch3') |
预测块 Patch3′ 作为对“正常演化趋势”的模拟结果,用于下一阶段对比分析。
📌 核心技术点:
-
多头自注意力机制【5】让模型能捕捉远距离依赖特征,利于纹理结构建模;
-
ViT优于CNN的地方在于其不受感受野限制,能学习整图上下文信息,模拟出更合理的“预测块”。
📘 2.2 模式对比阶段:Pattern Comparison Network
💡 设计动机:
通过比较预测块与真实图像块之间的差异,识别是否存在异常。正常图像预测准确,异常图像则偏离严重。
🧱 模块结构:
-
Siamese双分支网络结构:
-
两个输入分支共享权重,分别处理 Patch3′(预测块)与 Patch3(真实块);
-
提取其高维语义特征后进行余弦相似度或距离计算。
-
🔄 输入输出流程:
分支 | 输入块 | 编码器 | 输出特征 |
---|---|---|---|
左支 | 预测 Patch3′ | ViT Encoder 3(共享) | 特征向量 F3' |
右支 | 真实 Patch3 | ViT Encoder 3(共享) | 特征向量 F3 |
比较 F3′ 和 F3 的相似性,作为判断标准。相似度低说明预测失败,说明该区域可能异常。
📌 核心技术点:
-
使用共享参数的孪生网络结构,保证比较结果公平且鲁棒;
-
异常图像在结构或纹理上不可预测,因此会导致显著的特征偏差。
🌐 2.3 模型整体流程图概括:
(输入图像)→ Patch 分块 → ↓ Patch1, Patch2 → ViT Encoder → ViT Decoder → Patch3′(预测) ↓ 真实 Patch3 与 Patch3′ 一起送入 Siamese 对比网络 → ↓ 相似度评分 → 构建异常热图 → 得到定位结果
🔁 2.4 补充:双向预测策略(Bi-directional Inference)
为提高图像边界区域的预测准确性,论文引入双向预测策略:
-
正向预测:Patch1 + Patch2 → Patch3
-
反向预测:Patch3 + Patch2 → Patch1
这样可利用图像两端信息进行互补,提高整体检测鲁棒性和覆盖率。
✅ 方法设计总结:
组件 | 模拟人类功能 | 技术实现 | 异常判断依据 |
---|---|---|---|
模式生成网络 | 图像模式记忆与预测 | ViT + 编解码结构 | 预测图像块与真实图像块对比 |
模式对比网络 | 推理比较、检测异常 | Siamese网络 + 相似度计算 | 相似度差异 |
名词解释
【1】VIT是什么
Vision Transformer (ViT) 是一种基于Transformer架构的模型,最初设计用于处理图像数据。它由Google在2020年提出,旨在将自然语言处理领域中Transformer的成功经验迁移到计算机视觉任务中。ViT模型直接接收整个图像的patches序列作为输入,然后使用标准的Transformer编码器对其进行处理,以此来完成各种视觉任务,比如图像分类、目标检测等。
ViT的基本工作流程如下:
-
图像分块:首先,原始图像被分割成多个固定大小的小块(patches),每个小块被展平并映射到一个高维空间,形成一个向量。
-
线性嵌入:这些向量接着通过一个线性投影层,目的是降低维度或者适应后续Transformer层的维度要求。
-
位置嵌入:为了保留小块之间的空间信息,在线性嵌入的基础上添加了位置嵌入。这使得模型能够学习到每个小块的位置信息。
-
Transformer编码器:随后,这些嵌入向量被送入多层的Transformer编码器中进行特征提取。Transformer编码器由多头自注意力机制(Multi-head Self-Attention, MSA)和前馈神经网络(Feed-Forward Neural Network, FFN)组成。
-
分类:最后,通常会采用一个简单的分类头(例如全连接层)对提取出的特征进行分类或其他任务。
ViT模型展示了即使没有复杂的卷积结构或专门设计的归纳偏置,仅依靠Transformer也能在图像识别等任务上取得优异的表现。然而,为了达到良好的性能,ViT需要在非常大的数据集上进行预训练,以便学习到有效的视觉表示。这一特点也促使了后续一系列针对效率优化和减少数据依赖的研究。
【2】模式生成网络是什么
✦ 核心思想:
模拟“正常”图像的连续演化过程,即“记住”前面的图像内容后预测下一个图像块,形成对正常图像模式的理解。
这个过程类似于人类观察图像时对缺失区域的合理想象与补全。
✦ 架构组成:
-
使用两个ViT编码器提取连续两个图像块(patch)的特征;
-
利用一个ViT解码器,根据提取到的特征生成“下一个图像块”(即模拟正常图像的后续内容)。
✦ 输入输出:
-
输入:来自正常图像的两个连续图像块(比如 Patch1 和 Patch2);
-
输出:预测得到的 Patch3(第三个图像块),模拟“正常情况下图像的下一个视觉结构”。
✦ 功能作用:
-
建立一个连续的正常图像模式轨迹;
-
为后续的对比提供一个“预测图块”与“真实图块”的比对基础。
【3】对比网络是什么
✦ 核心思想:
将上一步生成的图像块(Patch3′)与原始图像中真实的 Patch3 进行比较,通过计算相似度差异,定位异常区域。
✦ 架构组成:
-
基于Siamese(孪生)网络结构;
-
两个分支分别接收生成的 Patch 和真实的 Patch;
-
提取其高维语义特征后计算余弦相似度或L2距离,衡量两者的差异。
✦ 输入输出:
-
输入:预测图像块(生成)和真实图像块;
-
输出:相似度分数或差异图。
✦ 功能作用:
-
当图像为正常图时,生成块与真实块应高度相似;
-
如果图像中存在异常,预测块与真实块存在显著差异,相似度低,暴露异常区域。
【4】Siamese网络结构是什么
Siamese网络,也称为孪生网络或连体网络,是一种特殊的神经网络架构,主要用于比较两个输入对象的相似度。它由两个共享权重的子网络组成,这两个子网络的结构和参数完全相同。Siamese网络最初在20世纪90年代被提出用于签名验证任务,并且自此之后被广泛应用于各种领域,如图像识别、文本相似度计算、语音识别等。
Siamese网络的基本结构
-
双分支结构:Siamese网络的核心是由两个相同的子网络构成,这两个子网络可以接受不同的输入,但共享同一套参数。通常情况下,这些输入是成对出现的,例如两张图片、两段文本等。
-
特征提取:每个子网络负责将输入映射到一个特征空间中,即将输入数据转换为固定长度的向量表示。这个过程通过一系列卷积层(对于图像数据)、全连接层等实现。
-
距离计算:在得到两个输入的特征表示后,Siamese网络会计算这两个特征向量之间的距离或相似度。常用的度量方式包括欧氏距离、余弦相似度等。这个距离值随后会被传递给一个对比损失函数,用于评估两个输入是否属于同一类(正样本对)或者不同类(负样本对)。
-
对比损失:训练过程中使用对比损失来调整网络参数,使得对于正样本对来说,它们的特征表示尽可能接近;而对于负样本对,它们的特征表示则尽可能远离。这有助于学习到能够有效区分不同类别同时又能捕捉到同类样本间共性的特征表示。
应用场景
- 人脸识别与验证:通过比较两张人脸图像的特征向量来判断是否属于同一个人。
- 签名验证:类似于人脸识别,但应用在手写签名上。
- 自然语言处理:比如句子相似度计算、翻译对齐等任务。
Siamese网络的一个主要优点在于它可以有效地解决小样本学习问题,即在仅有少量标注数据的情况下学习有效的特征表示。此外,由于其独特的结构设计,Siamese网络在需要衡量输入之间相似度的任务中表现出色。
【5】多头自注意力机制
多头自注意力机制(Multi-head Self-Attention Mechanism)是Transformer架构中的核心组件,用于处理序列数据。它通过并行地使用多个自注意力层(或称注意力头),让模型能够关注输入序列中不同位置的信息,从而更有效地捕捉序列中的依赖关系。
自注意力机制
在深入多头自注意力之前,先简单介绍一下自注意力机制。自注意力(Self-Attention)允许输入序列中的每个元素注意到(或关联到)该序列中的所有元素,包括其自身。这使得模型可以考虑到序列中长距离的依赖关系,而不是像卷积神经网络那样受限于感受野大小,或者像循环神经网络那样需要逐步处理序列元素而可能遇到的梯度消失问题。
多头自注意力机制的工作原理
-
线性变换:对于输入序列中的每个元素,首先通过三个可学习的权重矩阵
、
和
分别进行线性变换,得到查询(Query)、键(Key)和值(Value)向量。这些向量用于计算注意力分数。
-
分头处理:原始的查询、键和值向量被分割成多个部分(即“头”)。每个头都有自己的查询、键和值向量,它们是原始向量的不同子空间表示。这样做可以让模型在不同的表示子空间中学习信息。
-
计算注意力分数:对于每个头,计算查询和键之间的点积,然后除以一个缩放因子(通常是键向量维度的平方根),接着应用softmax函数将结果转换为概率分布。这个过程产生了一组权重,指示了序列中其他元素对当前元素的重要性。
-
加权求和:用上一步得到的权重对值向量进行加权求和,生成每个头的输出。
-
拼接与线性变换:将所有头的输出拼接在一起,并通过另一个可学习的权重矩阵
进行线性变换,得到最终的输出。
优点
- 增强表达能力:多头机制允许模型同时关注来自不同表示子空间的信息,从而增强了模型的学习能力。
- 捕捉多样化依赖:不同的注意力头可以学习到输入序列中不同类型的关系,如语法结构、语义关系等。
通过这种设计,多头自注意力机制显著提高了模型处理复杂序列任务的能力,例如机器翻译、文本生成等,是现代自然语言处理模型的重要组成部分。