通过计算实例简单地理解PatchCore异常检测
- 前言
- 相关介绍
- PatchCore的工作原理:
- 优点:
- 缺点:
- 通过计算实例简单地理解PatchCore异常检测
- 总体流程
- 训练阶段
- 训练数据(正常图像)
- 特征提取
- Coreset 采样(假设 coreset_ratio=0.5 → K=4)
- 预测阶段
- 测试数据
- 特征提取
- 计算最近邻距离(输出异常分数)
- 异常分数图生成
- 参考文献


前言
- 由于本人水平有限,难免出现错漏,敬请批评改正。
相关介绍
- [1] PatchCore 源代码地址:https://github.com/amazon-science/patchcore-inspection.git
- [2] PatchCore 论文地址:https://arxiv.org/abs/2106.08265
PatchCore是一种用于异常检测的方法,它特别适用于工业视觉检查和其他需要在未见过的正常样本上进行训练的应用场景。这种方法是一种无监督或半监督学习方法。
PatchCore的工作原理:
- 数据预处理:将输入图像分割成多个局部区域(patch)。
- 特征提取:使用预先训练好的卷积神经网络(CNN)提取每个patch的特征向量。
- 背景建模:构建一个背景模型来估计正常patch的分布。这通常是通过计算各个层激活的相似性矩阵,并使用这些矩阵来构建近邻图。
- 异常得分计算:对于一个新的输入图像,计算其patch与背景模型之间的距离,从而得到异常得分。如果得分高于某个阈值,则认为该图像存在异常。
优点:
- 简单快速:不需要对特定任务进行额外的训练,只需要预先训练好的模型。
- 适应性强:可以应用于多种类型的图像数据和不同领域的应用场景。
- 资源效率高:内存占用相对较小,因为只需要存储少量的参考样本。
- 可扩展性:能够随着新的正常样本的增加而更新背景模型。
缺点:
- 依赖于高质量的特征提取器:特征提取的质量直接影响到异常检测的效果。
- 阈值设定:需要人为设置阈值来区分正常和异常样本,这可能需要一定的专业知识和经验。
- 对背景模型的选择敏感:不同的背景建模技术可能会导致显著不同的结果。
- 可能忽略全局信息:由于是基于局部patch进行分析,因此可能会忽略图像中的全局结构信息。
总体来说,PatchCore提供了一种高效且易于实现的异常检测方法,尤其适合于那些难以获得大量标注异常样本的情况。然而,在应用时也需要根据具体问题的特点选择合适的参数和背景模型。
通过计算实例简单地理解PatchCore异常检测
总体流程


训练阶段
训练数据(正常图像)
特征提取
关键说明:
- 每个3x3图像被划分为2x2=4个Patch
- 每个Patch提取两个特征值:[平均值, 最大值]
- 正常图像的所有Patch特征高度一致
Coreset 采样(假设 coreset_ratio=0.5 → K=4)
Coreset作用:
- 原始8个点 → 压缩为2个代表点
- 保持原始分布特征(两个聚类中心)
- 计算效率提升4倍
预测阶段
测试数据
特征提取
计算最近邻距离(输出异常分数)
异常分数图生成
参考文献
[1] PatchCore 源代码地址:https://github.com/amazon-science/patchcore-inspection.git
[2] PatchCore 论文地址:https://arxiv.org/abs/2106.08265
[3] https://link.springer.com/content/pdf/10.1007/s11263-020-01400-4.pdf
[4] https://www.mvtec.com/company/research/datasets/mvtec-ad/
213

被折叠的 条评论
为什么被折叠?



