news 2026/9/6 23:47:59

(2022|CVPR|UT Amazon,局部特征聚合,贪婪核心集采样,记忆库压缩)PatchCore:工业异常检测中的全面 Recall 方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(2022|CVPR|UT Amazon,局部特征聚合,贪婪核心集采样,记忆库压缩)PatchCore:工业异常检测中的全面 Recall 方法

Towards Total Recall in Industrial Anomaly Detection


论文地址:https://arxiv.org/abs/2106.08265

项目页面:https://github.com/amazon-science/patchcore-inspection

学术交流群:922230617


目录

1. 引言

2. 方法

2.1 局部感知的 patch 特征

2.2 通过贪婪核心集进行记忆库缩减

2.3 异常检测与定位

3. 实验

3.1 设置与指标

3.2 主要结果

3.3 推理时间

3.4 消融与分析


1. 引言

工业视觉缺陷检测面临缺陷形态多样、标注困难的问题,冷启动异常检测(训练集仅含正常样本)成为实际需求。

早期方法依赖自编码器、GAN 等重建正常分布,近年工作发现,直接使用 ImageNet 预训练模型的特征即可取得优异效果,但高层特征偏向自然分类任务,与工业数据存在偏差。

SPADE 和 PaDiM 分别采用多尺度记忆库或 patch 级马氏距离,但仍受限。

本文提出的 PatchCore,基于 “只要有一个 patch 异常即可将整张图像判定为异常” 这一事实,以局部聚合的中层(mid-level) patch 特征构建丰富记忆库,在测试时通过最近邻距离判定异常,既保留充足正常上下文,又减少对 ImageNet 类别的依赖;同时,贪婪核心集采样(greedy coreset)剔除冗余信息,确保实际部署的高效性。

2. 方法

2.1 局部感知的 patch 特征

用 X_N 表示训练时可用的所有正常图像的集合(∀x ∈ X_N: y_x = 0),其中 y_x ∈ {0,1} 表示图像 x 是正常(0)还是异常(1)。相应地,定义 X_T 为测试时提供的样本集合。

PatchCore 使用在 ImageNet 上预训练的网络 ϕ。由于特定网络层的特征起着重要作用,用

表示图像 x_i ∈ X 在预训练网络 ϕ 的层次 j 的特征。除非另有说明,与现有文献一致,j 索引 ResNet-like 架构(如 ResNet-50 或 WideResnet-50)的特征图,j∈{1,2,3,4} 表示各自空间分辨率块的最终输出。

一种特征表示的选择是网络特征层次中的最后一层,但这会带来两个问题。

首先,它会丢失更多局部化的正常信息。由于测试时遇到的异常类型无法预先知道,这会对下游异常检测性能造成损害。

其次,ImageNet 预训练网络中非常深层和抽象的特征偏向于自然图像分类任务,这与冷启动工业异常检测任务及所评估的数据几乎没有重叠。

因此,本文提出使用由中间层特征表示组成的 patch 级特征记忆库 M,以利用提供的训练上下文,避免特征过于通用或过于偏向 ImageNet 分类。在 ResNet-like 架构的具体情况下,这指的是例如 j∈[2,3]。

为形式化 patch 表示,扩展之前引入的符号。假设特征图

是一个三维张量,深度为 c*,高度为 h*,宽度为 w*。

表示位置 h∈{1,…,h*} 和 w∈{1,…,w*} 处的 c* 维特征切片。假设每个 ϕ_{i,j} 的感受野大于 1,这实际上对应于图像 patch 特征表示。

理想情况下,每个 patch 表示应具有足够大的感受野,以考虑有意义的异常上下文并对局部空间变化具有鲁棒性。

  • 虽然这可以通过步长池化并沿网络层向下走来实现,但这样产生的 patch-features 会变得更加 ImageNet 特异性,因此与当前异常检测任务的相关性降低,同时训练成本增加且有效特征图分辨率下降。
  • 这促使在组合每个 patch 级特征表示时采用局部邻域聚合,以增加感受野大小和对小空间偏差的鲁棒性,同时不损失空间分辨率或特征图的可用性。

为此,扩展上述 ϕ_{i,j} (h,w) 的符号,考虑不均匀的 patch 大小 p(对应所考虑的邻域大小),纳入邻域中的特征向量:

位置 (h,w) 处的局部感知特征为:

其中,f_agg 是邻域 N_p^(h,w) 中特征向量的某种聚合函数。

对于 PatchCore,使用自适应平均池化。这类似于对每个单独特征图进行局部平滑,并在 (h,w) 处产生一个预定义维度 d 的单一表示,对所有 (h,w) 对执行,从而保留特征图分辨率。

对于特征图张量 ϕ_{i,j​},其局部感知的 patch-feature 集合 P 为:

2.2 通过贪婪核心集进行记忆库缩减

从所有正常图像中提取的 patch-feature 集合构成了初始记忆库 M。然而,这个记忆库可能包含大量冗余信息,导致存储和推理成本过高。为了解决这个问题,PatchCore 引入贪婪核心集子采样来选择一个子集 M_c​ ⊂ M,该子集在近似覆盖整个特征空间的同时显著减小记忆库规模。

核心集选择的目标是找到一个子集,使得原始集合中的每个点都靠近子集中的某个点。

  • PatchCore 采用贪婪选择策略:从空集开始,迭代地选择与当前已选集合距离最远的点,直到达到预定的预算大小。
  • 这个过程确保了选中的核心集能够最大程度地代表原始特征分布的多样性。
Algorithm 1: PatchCore memory bank. Input: Pretrained φ, hierarchies j, nominal data XN, stride s, patchsize p, coreset target l, random linear projection ψ. Output: Patch-level Memory bank M. M ← {} # 初始化空记忆库 for xi ∈ XN do # 遍历所有正常训练图像 M ← M ∪ P_{s,p}(φ_j(xi)) # 提取每个图像的所有局部感知patch特征并加入记忆库 end /* Apply greedy coreset selection. */ MC ← {} # 初始化核心集为空 for i ∈ [0, ..., l − 1] do # 迭代选择l个核心点 mi ← arg max_{m∈M−MC} min_{n∈MC} ∥ψ(m) − ψ(n)∥₂ # 选择与当前已选集合最小距离最大的点(最远点) MC ← MC ∪ {mi} # 将选中的点加入核心集 end M ← MC # 将记忆库替换为核心集

图 3. 对比:核心集(上)与随机子采样(下,红色)在从 (a) 多模态和 (b) 均匀分布中采样的二维数据(蓝色)上的效果。从视觉上看,核集子采样能更好地逼近空间支撑,而随机子采样在多模态情况下会遗漏聚类,在(b)中也显得不够均匀。

2.3 异常检测与定位

利用已构建的正常 patch 特征记忆库 M,本文通过计算测试图像 x^test 的 patch 集合 P(x^test) 中每个 patch 特征到其记忆库最近邻的距离,取其中的最大距离分数 s* 作为图像级异常分数 s∈R:

然而,为了获得更鲁棒的分数 s,本文对 s* 施加了一个加权系数,该系数考虑了异常候选 patch 的近邻行为:如果与异常候选 m^{test,∗}​ 最匹配的记忆特征 m*,其自身在记忆库中的邻近样本也距离较远(即 m* 本身就是一个稀有的正常出现),则增大异常分数:

其中,N_b(m*) 表示记忆库 M 中与测试 patch 特征 m* 最邻近的 b 个 patch 特征。本文发现这种加权方式比仅使用最大 patch 距离更加鲁棒。

有了 s 后,异常分割图可直接获得。

图像级异常分数的计算需要通过 arg⁡max⁡ 操作求出每个 patch 的异常分数。

与此类似,分割图可以在同一步骤中计算,参照文献 [14] 的做法,根据各 patch 异常分数所处的空间位置将其重新排列对齐。

为了与原始输入分辨率匹配(考虑到本文使用的是中间层网络特征),通过双线性插值对结果进行上采样。

此外,本文用高斯核(核宽度 σ=4)对结果做了平滑处理,但未对该参数进行优化。

3. 实验

3.1 设置与指标

在 MVTec AD(15 个类别,含纹理和物体)和 MTD(磁砖缺陷)数据集上评估。图像级异常检测采用 AUROC,定位采用像素级 AUROC 和 PRO 分数。默认使用 WideResNet-50,j=2,3p=3,核心集大小设为 1%(主要实验)和 10%(消融)。

3.2 主要结果

在 MVTec 上的结果如 Table 1 所示。

  • 在所有情况下,PatchCore 均取得了显著更高的平均图像级异常检测性能,且在各个子数据集上表现一致优异(详细对比见补充材料 B)。
  • 请注意,将误差从 PaDiM 的 2.1% 降低到 PatchCore-25% 的 0.9%,意味着误差减少了 57%。在工业检测场景中,这是一个相关且显著的降幅。
  • 在 MVTec 上以最优 F1 阈值判定时,1725 张测试图像中仅有 42 张被误分类,且三分之一的类别被完美解决。

此外,PatchCore 在异常分割方面也达到了 state-of-the-art,无论是在像素级 AUROC(Table 2,98.1 vs. PaDiM 的 97.5)还是 PRO 指标(Table 3,93.5 vs. 92.1)上均领先。

另外,得益于核心集记忆库子采样的高效性,本文可以将 PatchCore-10% 应用于更高分辨率的图像(例如 280/320 而非默认的 224),并可集成多个系统,同时推理时间仍低于默认分辨率下的 PatchCore-100%。这使得本文能够进一步推动图像级和像素级异常检测的性能,如 Tab. 4 所示,部分情况下误差再次减半以上(例如图像级 AUROC 从 1% 降至 0.4%)。

3.3 推理时间

本文同样关注推理时间。Table 5 报告了与 SPADE 和 PaDiM 的对比结果(均使用 WideResNet50,尽可能在 GPU 上计算),推理时间包含 backbone 前向传播。

结果表明:PatchCore-100%(无子采样)的推理时间低于 SPADE,且性能更高;加入核心集子采样后,PatchCore 可进一步加速,推理时间甚至低于 PaDiM,同时保持 SOTA 的检测与分割性能。

3.4 消融与分析

通过改变邻域大小 p 评估局部感知特征的重要性(Figure 4 上半)。

  • 结果显示局部性与全局上下文存在最优平衡,故取 p=3。
  • 向更深层推进虽能扩大感受野,但会降低分辨率并增强 ImageNet 偏差。
  • Figure 4 下半表明,单独使用第 2 层即可达 SOTA,联合第 2+3 层效果更优,因此设为默认配置。

对比贪婪核心集、随机采样和可学习三种子采样方式(Figure 5)。

  • 核心集显著优于其他方法,且未子采样性能与规模小两个数量级的核心集相当。
  • 核心集(1%)将测试时实际使用的记忆库比例从不足 30% 提升至近 95%,冗余大幅降低。
  • 在 50%~10% 的采样区间内,检测与定位的联合性能甚至超过未子采样版本。
  • 通过增大步长 s 缩减记忆库会导致性能下降(s=2 时 AUROC 为 97.6%,s=3 为 96.8%)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 23:42:49

Linux运维入门到进阶:核心命令、权限管理与实战部署全攻略

大家好,我是你们的老朋友。断断续续有读者在后台留言,说想转行做运维,或者刚入行没多久,面对 Linux 系统总觉得心里没底。网上的教程东一块西一块,命令背了又忘,遇到系统报错也不知道从哪里下手。今天这篇文…

作者头像 李华
网站建设 2026/9/6 23:39:52

DeepSeek Harness与Codex、Kimi Code:AI编程助手安装配置与对比指南

最近几天,开发者的消息列表里高频出现三个词:DeepSeek Harness、Codex、Kimi。有人在问 DeepSeek Harness 怎么安装,有人在研究怎么让 Codex 用上 DeepSeek 的模型,还有人卡在 Kimi Code 的预约队列里。如果把这些问题放在一起看&…

作者头像 李华
网站建设 2026/9/6 23:37:32

猫抓插件实用攻略:浏览器资源嗅探与视频下载,零门槛上手

猫抓插件实用攻略:浏览器资源嗅探与视频下载,零门槛上手 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 打开在线课程页面&…

作者头像 李华
网站建设 2026/9/6 23:36:21

三步装好并录出第一段视频:Cap开源录屏工具上手

三步装好并录出第一段视频:Cap开源录屏工具上手 【免费下载链接】Cap Open source Loom alternative. Beautiful, shareable screen recordings. 项目地址: https://gitcode.com/GitHub_Trending/cap1/Cap 当你需要向同事讲清一个产品流程、或者给新同事录一…

作者头像 李华
网站建设 2026/9/6 23:35:53

DeepSeek Harness、Codex、Kimi Code安装配置与对比实践

最近 AI 编程工具扎堆更新,我在本地同时折腾 DeepSeek Harness、Codex 和 Kimi Code 时,踩了不少配置和网络相关的坑。网上的资料要么只讲概念,要么只给代码片段,缺少一份从安装到对比的完整闭环。这篇文章就围绕这三款工具展开&a…

作者头像 李华
网站建设 2026/9/6 23:34:01

6184个免费SVG图标:Tabler Icons 三种方式快速接入前端项目

6184个免费SVG图标:Tabler Icons 三种方式快速接入前端项目 【免费下载链接】tabler-icons A set of over 6100 free MIT-licensed high-quality SVG icons for you to use in your web projects. 项目地址: https://gitcode.com/GitHub_Trending/ta/tabler-icons…

作者头像 李华