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中获得有力支持 。