工业缺陷检测,无监督异常检测算法,深度学习库Anomalib

Anomalib是一个深度学习库,专注于收集前沿的异常检测算法,以便在公共和私有数据集上开展基准测试。它尤为侧重于基于图像的异常检测,算法旨在识别数据集中的异常图像,或定位图像里的异常像素区域,在工业制造过程的缺陷检测领域应用广泛。

异常检测的核心目的,在于找出与正常样本不同的异常及缺陷模式。但该领域面临诸多挑战,如获取大量异常数据难度大,正常样本与异常样本间差异细微,且异常类型往往事先未知。目前,无监督异常检测和定位方法主要分为判别法和生成法:

  • 判别方法:尝试对异常样本和正常样本间的决策边界进行建模。这类方法通常从图像中提取嵌入,再与来自“正常”图像的参考嵌入对比,以两者距离作为异常分数。虽能给出不错的异常检测结果,但常缺乏可解释性,难以明确图像的哪部分致使其被判定为异常。例如SPaDE,测试时需对完整的嵌入向量集运行k最近邻(k-NN)聚类,这使得推理复杂度与训练集大小呈线性关系。而在制造业中,高推理速度至关重要,这大大限制了该方法的实用性。
  • 生成方法:试图模拟每个类别的实际分布,进而可从中采样,比如生成新图像。基于这类模型的异常检测方法,其原理是由于训练集中不存在异常,所以无法生成异常样本。像基于自动编码器的方法,通过比较自动编码器的输出与输入来检测异常,若重建错误高,则意味着存在异常区域;基于生成对抗网络(GAN)的方法,假设只能生成正样本。虽然这些生成方法直观且具有可解释性,但其性能存在局限,有时对异常图像也能得到较好的重建结果。

目前,Anomalib库中已涵盖13个异常检测模型,具体包括CFADS、Flow、CFlow、DFKDE、DFM、Draem、FastFlow、GANomaly、Padim、PatchCore、ReverseDistillation、R-KDE、STFPM等 。

Anomalib部署流程

配置Anomalib模块主要有两种方式:使用配置文件或API。若要在生产系统中应用Anomalib,建议采用配置文件(yaml文件),这涉及核心的训练和测试过程,其中涵盖数据集、模型、实验及回调管理等设置。该文件可在存储库的“anomalib/src/anomalib/models/padim/config.yaml”路径下找到,若使用其他模型,需在列表中找到对应名称以选择正确的配置文件。以下为各模块介绍:

  • 模型管理器:可使用“anomalib.models”导入Padim等模型。
  • 回调管理器:用于添加一些“非必要”逻辑,如保存权重、提前停止训练、标准化异常分数,以及可视化输入/输出图像等。Anomalib拥有自身的回调函数,同时也支持PyTorch Lightning的原生回调。
  • 训练:以“Padim”模型训练为例,在导入部分,需从“anomalib.deploy”模块导入相关内容。
  • 推理:读取框架后,利用OpenVINO运行推理。
  • 预测结果:执行推理时,需从OpenVINO Inference调用“predict”方法,在此可设置OpenVINO模型和模型元数据的位置,并指定使用的设备。预测结果包含诸多与结果相关的信息,如原始图像、预测分数、异常图、热图图像、预测掩码和分割结果等。

Anomalib部署测试

部署测试时,首先需引入相关包。例如测试数据集中若包含5000多张高分辨率图像,且分为15个不同的对象和纹理类别,每个类别有一组无缺陷的训练图像,以及一组含各种缺陷和无缺陷的图像。若数据集不在根数据集目录,Anomalib会自动安装。

训练模型可借助datamodule、model和callbacks。Callbacks是包含非必要逻辑的自包含对象,可注入多种回调,如模型加载、计时、指标计算、归一化和可视化等。

除训练外,若想使用OpenVINO进行推理,需将导出配置设为OpenVINO,以便Anomalib将训练好的模型导出为OpenVINO格式,之后还可查看OpenVINO模型的存储位置。

Anomalib的特点

  • 简单且模块化的API和CLI:便于进行训练、推理、基准测试以及超参数优化。
  • 丰富的算法和数据集集合:拥有大量现成可用的深度学习异常检测算法,以及丰富的基准测试数据集。
  • 基于Lightning的模型实现:能减少样板代码,将实现工作聚焦于关键部分。
  • 模型导出支持:大多数模型可导出为OpenVINO中间表示(IR)格式,以加速在英特尔硬件上的推理。
  • 便捷的推理工具:提供一系列推理工具,便于快速、轻松地部署标准或自定义的异常检测模型。

Anomalib的安装

Anomalib提供了两种安装方式:

  • 通过PyPI安装:若仅使用库而不修改源代码,推荐此方式,在命令行执行“pip install anomalib”即可完成安装。
  • 本地安装:适用于需要对库进行修改的情况。建议先创建虚拟环境,如使用conda,可通过“yes | conda create -n anomalib_env python=3.10”创建名为“anomalib_env”的虚拟环境,再用“conda activate anomalib_env”激活环境;若使用其他虚拟环境工具,按相应方式操作。接着克隆仓库并以可编辑模式安装,执行“git clone https://github.com/openvino toolkit/anomalib.git”克隆仓库,进入仓库目录“cd anomalib”后,使用“pip install -e.”完成安装 。

在这里插入图片描述

总的来说,Anomalib通过提供全面的异常检测算法、实用的工具及便捷的部署方式,有力推动了异常检测在多领域的应用与发展,无论是研究人员开展算法研究,还是工程师进行实际项目开发,都能从Anomalib中获得有力支持 。

### Anomalib 支持的模型列表 Anomalib 是一个专注于异常检测深度学习,提供了一系列预构建的模型来处理不同类型的异常检测任务。这些模型位于 `anomalib/models` 文件夹内,并且每个模型都有对应的配置文件和实现代码。 #### 已经集成到 Anomalib 的主要模型包括: - **Padim (Patch Distribution Modeling)** Padim 使用自监督方法通过建模正常样本的空间特征分布来进行异常检测[^1]。 - **Stfpm (Student-Teacher Feature Pyramid Matching)** Stfpm 利用了教师网络与学生网络之间的特征金字塔匹配机制,在无标签的情况下完成异常定位的任务[^2]。 - **FastFlow** FastFlow 结合了流形估计的思想,能够快速有效地识别图像中的异常区域[^3]。 - **CflowAd** CflowAd 基于条件生成对抗网络设计而成,特别适用于工业产品表面缺陷检测场景下的应用需求[^4]。 除了上述提到的具体算法之外,用户还可以基于框架结构自行扩展新的模型。为了方便开发者添加自定义模型,官方文档给出了详细的指导说明,比如如何创建一个新的子目录用于保存模型相关文件及其必要组件,如初始化脚本 (`__init__.py`)、PyTorch 模型定义(`torch_model.py`) 和 PyLightning 训练逻辑(`lightning_model.py`) 等。 对于想要深入了解某个特定模型的工作原理或参数设置的人而言,可以直接查看对应模型文件夹内的 `README.md` 文档获取更多信息;而对于希望调整实验环境的人来说,则可以通过编辑各模型自带的 `config.yaml` 来改变超参设定以适应不同的应用场景。 ```yaml # 示例:config.yaml 配置片段 model: name: padim ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值