PatchCore:工业异常检测中的全面召回
- 前言
- 相关介绍
- PatchCore的工作原理:
- 优点:
- 缺点:
- 实验环境
- 项目地址
- Linux
- Windows
- 项目结构
- 具体用法
- 准备数据
- 进行训练
- 进行测试
- 常见问题
- ModuleNotFoundError: No module named 'patchcore'
- 解决方法
- OMP: Error
- 解决方法
- AttributeError: 'MVTecDataset' object has no attribute 'transform_std'
- 解决方法
- 保存结果图时总是会将原图覆盖掉
- 参考文献
前言
- 由于本人水平有限,难免出现错漏,敬请批评改正。
相关介绍
- [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 源代码地址:https://github.com/amazon-science/patchcore-inspection.git
Linux
Windows
请到
https://github.com/amazon-science/patchcore-inspection.git
网站下载源代码zip压缩包。
项目结构
具体用法
准备数据
- 本文以 MVTEC公开数据集中的bottle数据集进行示例。
进行训练
进行测试
常见问题
ModuleNotFoundError: No module named ‘patchcore’
解决方法
在运行命令前,先设置环境变量:
OMP: Error
解决方法
在运行命令前,先设置环境变量:
AttributeError: ‘MVTecDataset’ object has no attribute ‘transform_std’
解决方法
- 因为主干是基于imagenet数据集训练的,所以均值和方差都是imagenet,因此可以在patchcore/datasets/mvtec.py中,在类class MVTecDataset 的def init 的函数中加入下面两行
- 参考 issues80:
in patchcore/datasets/mvtec.py in class MVTecDataset in def init add this rows:
保存结果图时总是会将原图覆盖掉
- src/patchcore/utils.py代码存在bug,需要进行了修改,如下图所示。
参考文献
[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/