目录
4. 对比学习损失函数:Repelling Contrastive Loss
【1】无监督学习(Unsupervised Learning)和
自监督学习(Self-Supervised Learning)
【2】ReConPatch 中的 Pairwise Similarity 和 Contextual Similarity 是什么?
2. Contextual Similarity(上下文相似性)
【3】WideResNet-50是什么,不是说依赖ImageNet吗?
✅ 对的兄弟对的对的,ReConPatch 确实依赖于预训练模型,而这个预训练模型就是在 ImageNet 上训练的 WideResNet-50(WRS-50)。
整体概括
论文标题
ReConPatch : Contrastive Patch Representation Learning for Industrial Anomaly Detection
核心问题
本论文旨在解决工业制造中的异常检测难题,如错误零件、组件错位和产品损坏等缺陷识别问题。由于这些异常在训练数据中稀有甚至缺失,且异常类型多变、不可预知,传统方法难以构建有效的判别模型。尤其在工业图像中,现有预训练视觉模型存在领域差异、特征分布不一致等问题,导致识别精度下降。
创新方法
论文提出了一种新的无监督度学习【1】框架 ReConPatch,核心思想是通过对比学习方式对预训练模型提取的图像块(patch)特征进行线性变换,使得同类块特征更加聚集,不同类块特征更加分离,从而提升异常检测性能。其关键创新点包括:
-
线性特征调制器(Linear Modulator):不需微调整个模型,仅训练一个线性变换层,降低计算成本。
-
伪标签生成机制:结合成对相似性(pairwise similarity)和上下文相似性(contextual similarity),实现无监督伪标签生成,用于对比学习。(PS:阿哲,那你还是没有发现吗,这实际上是自监督学习的一种实现形式,只不过采用了“伪标签”这种说法来强调其“从数据中生成标签”的过程。你完全可以理解为:这篇论文通过构建自监督对比学习任务,在没有真实标签的情况下对图像块的语义结构进行建模。)
-
无需输入增强(No Input Augmentation):避免工业图像中对数据增强设计依赖。
📌 是否依赖预训练模型:是,基于 ImageNet 预训练模型提取特征。
论文讲解
论文的整体结构与逻辑严谨,流程如下:
-
引言与问题提出:指出工业异常检测的关键性与挑战性,强调预训练模型的迁移性问题。
-
相关工作综述:从重构方法、预训练特征蒸馏、对比学习等方向介绍现有方案及其不足。
-
方法 ReConPatch概述:
-
使用预训练模型提取图像 patch 特征;
-
设计线性调制器模块对特征进行目标导向的调整;
-
使用 pairwise/contextual similarity【2】 生成伪标签;
-
应用对比学习进行无监督训练,优化特征分布。
-
-
实验评估:
-
在标准工业数据集 MVTec AD 和 BTAD 上验证;
-
与现有 SOTA 方法对比,ReConPatch 达到 99.72% 和 95.8% 的检测准确率;
-
分析不同模块对性能的贡献(消融实验)。
-
局限分析
尽管 ReConPatch 在性能上表现优异,但仍存在以下限制:
-
计算成本:虽然只训练线性层,相比端到端模型开销较小,但依赖特征提取过程(使用大模型),仍有一定计算资源需求。
-
泛化能力:方法高度依赖于预训练模型的特征质量,对于与 ImageNet 差距极大的工业图像,预训练模型的表示能力可能仍有限。
-
数据需求:虽然无需标签,但仍需大量正常样本以构建高质量特征空间,对异常样本无需求但对正常样本分布有隐性依赖。
-
伪标签准确性:使用相似度生成伪标签存在误差风险,可能会对模型训练带来噪声。
提出的问题
• Why型:
为什么该方法比传统方案更优?
传统方案如基于重构的方法难以处理细粒度缺陷,而 ReConPatch 通过对比学习明确拉近正常样本、远离潜在异常,使得特征空间更加分离,提高了异常检测的鲁棒性和准确性。
• How型:
如何将该方法扩展到其他场景?
可以将 ReConPatch 的线性调制器和伪标签机制扩展至非工业领域(如医疗图像或视频监控),关键是设计适配的相似性度量与领域特征提取器,以保证特征调制的有效性。
方法 ReConPatch详解
ReConPatch 提出了一种块级对比表征学习机制,具体创新点如下:
-
Patch-based Representation:图像被划分为多个 patch,针对每个 patch 提取表示。
-
伪标签生成机制:结合 成对相似度(Pairwise Similarity) 与 上下文相似度(Contextual Similarity),在无监督设定下生成伪标签,用于指导对比学习。
-
特征调制器(Feature Modulator):增强特征的上下文相关性,提升局部差异的敏感度。
-
Repelling-Contrastive Loss(RC Loss):设计用于最大化相似块之间的吸引力、不同块之间的排斥力。
-
✅ 是否依赖预训练模型:是,基于 WideResNet-50(WRS-50)进行特征提取。
ReConPatch 方法详解
1. 整体目标
ReConPatch 是一种无监督工业异常检测方法,目标是在不使用异常样本的前提下,学习图像中不同区域(patch)的判别性表示,用于实现图像级和像素级异常识别。
2. 核心流程
ReConPatch 的处理流程可以分为以下几个步骤:
① 图像分块与特征提取
-
将输入图像划分为多个局部区域(patches),例如 8×8 网格。
-
每个 patch 送入主干网络(WideResNet-50【3】)中提取特征向量
-
注意:主干网络参数被冻结,仅提取 patch 表征,不参与训练。
② 特征调制器(Feature Modulator)
-
该模块是一个轻量级的两层 MLP【4】,用于对 patch 特征进一步变换,增强上下文适应性。
-
输入为 patch 特征
,输出为 modulated 特征
。
-
作用:将 backbone 提取的基础特征映射到一个更适合对比学习的空间。
3. 伪标签生成机制
为实现对比学习,需要知道哪些 patch 是“正样本”(相似),哪些是“负样本”(不相似)。由于无监督,因此需自动生成这些标签:
① Pairwise Similarity 
用于衡量 patch i 和 patch j 的直接相似度。
② Contextual Similarity 
其中 是 patch j 的邻域,用于衡量 patch i 与 patch j 所在局部区域之间的上下文相似度。
③ 综合伪标签相似度
其中 是一个超参数(如 0.5),用于平衡两类相似度。
4. 对比学习损失函数:Repelling Contrastive Loss
一旦有了伪标签,即可进行对比学习:
(1)构建正负样本对
-
若
,则视为正样本对;
-
若
,则视为负样本对;
-
中间区域可能被忽略或使用 margin。
(2)损失函数形式
确定了吸引(pull)和排斥(push)损失项的权重。
计算的是样本 i 和样本 j 嵌入向量之间的平方相对距离。
部分是当两个样本的距离大于给定的排斥边距 m 时,才对它们施加一个惩罚,目的是让不同的样本尽可能远离彼此。
5. 推理阶段(inference)
-
测试图像被划分为 patch;
-
每个 patch 提取特征,与训练时收集的“正常特征库”进行最近邻匹配;
-
异常分数 = 当前 patch 与最近邻特征的距离(例如欧氏距离);
-
将所有 patch 异常分数组合为热图(可做 pixel-level segmentation)。
6. 优势
-
局部判别能力强:通过 patch 级别建模,更容易捕捉细粒度异常;
-
伪标签机制不依赖人为标注;
-
模块设计轻量(主干冻结,训练部分只需调制器 + 对比模块);
-
实验中在多个工业数据集(MVTec-AD)上超过 PatchCore、CFlow 等方法。
名词解释
【1】无监督学习(Unsupervised Learning)和
无监督学习
定义:
无监督学习是指在没有标注数据的情况下,通过分析数据的内在结构、分布或模式来获得知识的学习方式。
常见任务类型:
-
聚类(Clustering)
- 目标:将数据划分为若干组(簇),使得同一组内的数据相似,不同组之间的差异较大。
- 算法举例:K-Means、层次聚类、DBSCAN
-
降维(Dimensionality Reduction)
- 目标:将高维数据映射到低维空间,同时保留尽可能多的信息。
- 算法举例:PCA(主成分分析)、t-SNE、UMAP
-
密度估计(Density Estimation)
- 目标:估计数据的概率分布,常用于异常检测。
- 算法举例:高斯混合模型(GMM)、核密度估计(KDE)
-
关联规则学习
- 目标:发现变量之间的有趣关系。
- 算法举例:Apriori、FP-Growth
-
生成模型
- 学习数据分布以生成新样本。
- 算法举例:VAE(变分自编码器)、GANs(虽然通常有监督成分,但本质可视为无监督)
特点:
- 不需要人工标注的数据
- 更关注数据本身的结构与分布
- 应用广泛,如客户分群、图像分割、推荐系统等
自监督学习(Self-Supervised Learning)
定义:
自监督学习是一种特殊的无监督学习形式,它通过构造伪标签(pseudo-labels)来实现监督信号,从而让模型能够像有监督一样训练,而不需要人工标注。
核心思想:
利用数据本身提供的“上下文”信息来自动生成监督信号。
常见任务类型(预训练任务):
在自然语言处理(NLP)中:
- Masked Language Modeling(MLM)
- 预测被遮蔽的词(如 BERT)
- Next Sentence Prediction(NSP)
- 预测两个句子是否连续
- Permutation Language Modeling
- 如 XLNet,预测排列后的词序
在计算机视觉(CV)中:
- 图像补全(Image Inpainting)
- 预测图像中缺失区域的内容
- 旋转预测(Rotation Prediction)
- 预测图像被旋转的角度(如 RotNet)
- 对比学习(Contrastive Learning)
- 通过对比正负样本对学习特征表示(如 MoCo、SimCLR)
- 掩码图像建模(Masked Image Modeling)
- 类似 MLM,预测图像中被掩码区域(如 MAE、BEiT)
特点:
- 使用数据自身的结构构建监督信号
- 能够学到高质量的特征表示
- 通常作为预训练手段,在下游任务中微调效果显著
- 是当前大模型(如BERT、MAE、ViT)的基础
三、两者的区别与联系
维度 | 无监督学习 | 自监督学习 |
---|---|---|
是否使用标签 | 完全无标签 | 构造伪标签 |
方法核心 | 发现数据结构 | 构造代理任务 |
典型任务 | 聚类、降维、密度估计 | 掩码建模、对比学习、旋转预测 |
表示能力 | 一般较弱 | 强,适合迁移学习 |
应用场景 | 数据探索、可视化、初步分析 | 预训练+微调、大模型训练 |
联系:自监督学习可以看作是无监督学习的一种进阶形式,利用了更智能的方式来挖掘数据中的潜在监督信号。
四、总结
类型 | 目标 | 代表算法/模型 | 应用领域 |
---|---|---|---|
无监督学习 | 发现数据内在结构 | K-Means, PCA, GMM | 客户分群、图像分割、异常检测 |
自监督学习 | 学习通用表示 | BERT, SimCLR, MAE | NLP、CV的大规模预训练模型 |
随着深度学习的发展,尤其是大规模模型的兴起,自监督学习已成为主流方向之一,因为它能够在大量未标注数据上学习出强大的语义表示,为后续的有监督微调打下良好基础。
【2】ReConPatch 中的 Pairwise Similarity 和 Contextual Similarity 是什么?
它们是论文中提出的两种用于生成伪标签(即自监督学习中的正负对)的相似性度量策略,用于指导对比学习。
Pairwise similarity 和 contextual similarity 的思想本身并非 ReConPatch 首创,这篇论文是将两者结合,用于生成 patch-level 伪标签,指导线性特征调制器的对比学习训练,是一种 “已有思想 + 新应用场景 + 组合创新” 的方式。
我们按顺序来看:
1. Pairwise Similarity(成对相似性)
含义:衡量两个图像块(patch)在特征空间中的距离是否足够近。
-
如果两个块的特征距离很近 → 被认为是“正样本对”(positive pair);
-
如果距离较远 → 被认为是“负样本对”(negative pair)。
做法:
-
对一张正常图像提取多个 patch 的特征;
-
计算这些 patch 两两之间的相似度(cosine 相似度);
-
将相似度高于阈值的配对视作“相同类别”(正对),低于阈值的视为“不同类别”(负对);
-
形成伪标签,如:patch A 和 B 是一对“正样本”。
作用:帮助模型拉近“相似特征”的样本对,使得正常样本的特征空间更加聚集。
2. Contextual Similarity(上下文相似性)
含义:
利用图像中的空间结构(即 patch 的位置)来判断某 patch 与其邻居 patch的语义是否一致,从而形成“正对”或“负对”。
直观理解:
工业图像中的异常 常常是局部出现的,一个异常块周围的 patch(邻居)很可能是正常的;反之,正常图像中相邻 patch 往往语义一致。
做法:
-
对于图像中的某个 patch,取它的空间邻居(上下左右等);
-
比较该 patch 与邻居的特征距离;
-
如果上下文差异很小,则认为其与邻居属于同一语义类别(正对);
-
如果差异大,视为负对。
作用:增强模型对图像结构的理解,避免单纯依赖特征距离带来的误判。
总结
相似性类型 | 来源 | 原理 | 作用 |
---|---|---|---|
Pairwise | 特征空间 | 特征相似度高 → 正对,低 → 负对 | 全局特征语义区分 |
Contextual | 图像局部邻域结构 | 相邻 patch 相似 → 正对,不相似 → 负对 | 利用图像空间结构增强鲁棒性 |
这两个相似性机制结合起来,使得伪标签更加可信,适用于对比学习中构造正负样本对。
【3】WideResNet-50是什么,不是说依赖ImageNet吗?
✅ 对的兄弟对的对的,ReConPatch 确实依赖于预训练模型,而这个预训练模型就是在 ImageNet 上训练的 WideResNet-50(WRS-50)。
🔍 具体出处分析:
在论文中明确说明(例如在方法部分 3.3 和 4.1 的实验设置中):
-
ReConPatch 使用的是 WideResNet-50(WRS-50)作为 backbone(骨架)。
-
该网络是 在 ImageNet 上预训练得到的。
-
之后在 ReConPatch 的训练流程中 固定 backbone 权重,不进行微调,只训练特征调制器和对比模块。
❗所以总结:
项目 | 依赖情况 | 说明 |
---|---|---|
是否依赖预训练模型 | ✅ 是 | 使用在 ImageNet 上预训练的 WideResNet-50 |
是否 end-to-end 微调主干网络 | ❌ 否 | 主干网络参数冻结,仅训练轻量级模块 |
是否设计了自己的网络结构 | ❌ 否 | 借用已有主干,创新集中在伪标签生成和对比损失上 |
“ReConPatch 依赖于在 ImageNet 上预训练的 WideResNet-50 模型作为特征提取器,但不会对其进行微调,只是提取高质量特征用于后续模块学习。”
【4】MLP是什么
MLP,全称为多层感知机(Multilayer Perceptron),是一种前馈人工神经网络模型。它至少由三层组成:输入层、至少一个隐藏层和输出层。每层由多个神经元(或节点)组成,除了输入层外,每个神经元通过权重与下一层的所有神经元相连,形成一个完全连接的网络结构。
MLP的关键特性:
-
层次结构:
- 输入层:负责接收外部数据。
- 隐藏层:可以有一个或多个隐藏层,用于学习数据的复杂表示。每个隐藏层中的神经元通过对输入数据进行加权求和并应用激活函数来计算其输出。
- 输出层:根据任务的不同(分类、回归等),输出层产生最终的结果。
-
激活函数: 为了引入非线性因素,使得网络能够学习更复杂的模式,隐藏层通常会使用激活函数,如Sigmoid、Tanh、ReLU等。激活函数的选择对网络的学习能力和性能有重要影响。
-
训练方法: MLP通常采用反向传播算法结合梯度下降法来调整网络中各层间的权重,以最小化损失函数(衡量预测值与真实值之间的差异)。随着训练的进行,网络逐渐学会从输入到输出的映射关系。
-
应用场景: MLP因其通用逼近性质(在一定条件下,MLP能够逼近任何连续函数)而被广泛应用于各种领域,包括但不限于:
- 分类问题(例如手写数字识别)
- 回归分析
- 模式识别
- 数据预处理
在 ReConPatch 中,它的主要作用是对每个 patch 的特征进行“调制”或“变换”,以适应后续的对比学习任务。