当前位置: 首页 > news >正文

工业视觉异常检测:PatchCore与EfficientAD原理、实战与调优

工业视觉异常检测:PatchCore与EfficientAD原理、实战与调优

一、为什么异常检测是工业视觉的「最后一公里」

去年参与一个 PCB 检测项目时,我被一个现实打脸:缺陷样本根本不够。产线上每天流转数十万块板子,但真正的缺陷品一个月不到 200 块——其中 80% 还集中在 3 种缺陷类型上,剩下 20 种缺陷类型合起来不到 40 个样本。传统的监督学习(分类 / 目标检测)在这个数据分布面前直接崩溃:类别极度不均衡,稀有缺陷甚至只有 1-2 张训练图。

更棘手的是「开放集问题」——产线随时可能出现训练集中从未见过的缺陷形态。你永远不知道明天操作工会不会搞出一种新的焊接不良。这种情况在纺织、玻璃、金属表面、医药包装等行业普遍存在。

这就是**异常检测(Anomaly Detection)**的用武之地。它的核心思路很巧妙:只学「正常长什么样」,凡是偏离正常的都是异常。不需要缺陷样本,不需要标注,天然适配工业场景。

近年工业异常检测的 SOTA 方法可以归为几大范式:

范式代表方法核心思想推理速度
特征嵌入 + 记忆库PatchCore, PaDiM提取正常特征 → 构建 memory bank → 测试时查最近邻⭐⭐
教师-学生网络EfficientAD, STFPM学生网络只学「正常」的输出,异常输入会产生大的 feature discrepancy⭐⭐⭐
重构模型DRAEM, AutoEncoder只重构正常图像,异常区域重构误差大⭐⭐
归一化流FastFlow, CFlow将正常特征分布建模为高斯,异常偏离该分布⭐⭐⭐

本文聚焦工业界落地效果最好的两种方法——PatchCore(检测精度天花板)和EfficientAD(速度与精度的完美折中),从原理到代码到调优,一杆子捅到底。

二、PatchCore:特征记忆库 + 核心集采样

2.1 直觉理解

PatchCore 的核心思想朴素但有效:

用预训练 CNN 提取正常图像的特征 → 存到记忆库 → 测试时,对测试图像的每个 patch 特征,在记忆库里找最近的正常 patch → 距离越大,越可能是异常。

可以类比为:「我有一本正常产品的相册,现在来了一个新样品,我把它拆成小区域逐一比对——哪个区域在相册里找不到类似的,哪个区域就有问题。」

2.2 核心原理拆解

Step 1:特征提取

使用在 ImageNet 上预训练的 WideResNet-50 作为 backbone,取第 2 层和第 3 层的输出。为什么不用最后一层?因为浅层特征保留更多空间细节,对定位小缺陷至关重要。

对于一张输入图像X ∈ R H × W × 3 X \in \mathbb{R}^{H \times W \times 3}XRH×W×3,提取到的特征图:

ϕ i j = f θ ( X ) ∈ R H ′ × W ′ × C \phi_{ij} = f_\theta(X) \in \mathbb{R}^{H' \times W' \times C}ϕij=fθ(X)RH×W×C

其中C CC是通道数(WideResNet-50 的 layer2+layer3 拼接后通常为 1024 或 1536 维)。

Step 2:构建记忆库

把所有N NN张正常图像的 patch 特征拉平成N × H ′ × W ′ N \times H' \times W'N×H×WC CC维向量,得到记忆库M ∈ R ∣ M ∣ × C \mathcal{M} \in \mathbb{R}^{|\mathcal{M}| \times C}MRM×C

但如果正常图像很多(几百张),记忆库会膨胀到几百万个向量,推理时做最近邻搜索会非常慢。PatchCore 的关键创新在这里:核心集采样(Coreset Subsampling)

Step 3:核心集采样

目标:从M \mathcal{M}M中选出一个子集M c \mathcal{M}_cMc,使得M c \mathcal{M}_cMc能「代表」整个记忆库,同时大幅缩小尺寸。

PatchCore 采用greedy coreset via minimax facility location

  1. 随机选一个种子点放入M c \mathcal{M}_cMc
  2. 迭代:每次选M \mathcal{M}M中到M c \mathcal{M}_cMc最近距离最大的那个点加入M c \mathcal{M}_cMc
  3. 重复直到达到目标采样率(默认 10%,即∣ M c ∣ = 0.1 × ∣ M ∣ |\mathcal{M}_c| = 0.1 \times |\mathcal{M}|Mc=
http://www.jsqmd.com/news/943411/

相关文章:

  • Windows安卓应用安装终极指南:告别模拟器,5分钟玩转APK安装器
  • 虚拟显示的革命:ParsecVDD如何让你的Windows电脑拥有无限屏幕空间
  • XTOOL朗仁新能源维修设备打造一站式解决方案
  • 输入框自动记住常用词,点开就能搜历史、模糊匹配快速选
  • 基于Arduino与LSM303的简易伺服罗盘:从传感器到执行器的嵌入式实践
  • VS2022 + OpenCV 4.52 形状模板匹配C++工程(含MFC界面与PCI运动控制支持)
  • Axure RP 11 中文语言包终极配置指南:3步打造原生中文体验
  • NBTExplorer:开启我的世界数据编辑的新纪元,成为游戏世界的真正创造者
  • Circuit Playground 制作电子彩虹云朵帽:STEAM 亲子编程与手工指南
  • 计算机毕业设计之“暖医伴老行”老年智能医护小程序的设计与开发
  • 3步实现群晖NAS网络性能翻倍:RTL8152系列USB网卡驱动完整配置指南
  • 基于鲁本斯管原理的声控火焰与LED灯光交互系统DIY
  • Obsidian Border主题深度定制:技术架构解析与高效工作流优化
  • OpCore-Simplify终极指南:30分钟完成OpenCore EFI配置,成功率92.3%
  • Windows端口老被占?可能是这些后台进程在捣鬼(附排查与预防指南)
  • Diff Checker:3分钟掌握高效文本差异对比的终极解决方案
  • Betaflight Configurator:3步掌握无人机飞行控制配置的完整指南
  • Douyin-Downloader:抖音内容批量下载的技术解决方案
  • 智慧职教刷课脚本:三分钟告别重复学习,解放你的宝贵时间
  • Relique:优质卡牌作为 RWA 资产上链的意义
  • 3分钟解锁RPG Maker加密资源:从黑盒到开源编辑的完整方案
  • 君南信息三效系统解决方案:打造数智驱动的运营新范式
  • 传统出汗越多排毒越好,编写程序根据心率,体温,出汗量,判断出汗类型,区分正常出汗与体虚盗汗。
  • 电子负载的作用
  • YOLOv8训练省时又省力:结合Early Stopping与自定义指标,提前锁定最佳模型
  • 2026黔西州本地黄金回收铂金白银回收哪家强?TOP5 正规门店榜单 + 联系方式 - 中安检金银铂钻回收
  • Diff Checker:三分钟掌握高效文本差异对比的终极解决方案
  • AssetRipper完整指南:如何3分钟快速上手Unity资源提取工具
  • Langflow完整使用指南:5个技巧快速掌握可视化AI工作流构建
  • NarratoAI终极指南:开源AI视频解说工具快速入门