异常检测Anomalib库使用说明

一 整体概览

Anomalib 是由 Intel OpenVINO 团队开源的深度学习异常检测库,提供从数据加载、模型训练、推理到可视化的完整流水线。覆盖图像、视频、3D点云等多种模态的异常检测,内置25+种SOTA异常检测算法。

整体代码结构如下:

主要使用了以下技术栈:

1)核心框架: Python 3.10+, PyTorch 2.6+, PyTorch Lightning 2.6+

2)配置管理: OmegaConf, jsonargparse

3)数据处理: TorchVision, OpenCV, Pillow, scikit-image

4)模型优化: OpenVINO (可选), ONNX

5)可视化: Matplotlib, Rich

6)日志追踪: WandB, Comet.ml, TensorBoard, MLflow (可选)

7)Web应用: FastAPI + React (Anomalib Studio)

Anomalib库具有以下功能:

1)提供25+种工业级异常检测算法实现(图像/视频)

2)统一的训练、验证、测试、推理接口

3)自动化数据集下载与管理(MVTecAD等15+标准数据集)

4)模型导出与加速推理(OpenVINO/ONNX)

5)超参数优化(HPO)支持

6)低代码Web应用(Anomalib Studio)

通过pip进行安装:

pip install anomalib

二 数据集

Anomalib库封装了常用的点云、图像、视频异常检测公开数据集,通过数据类对整体Anomalib中的数据进行了高层次抽象,具有类型安全特性,分别实现了PyTorch和Numpy版本。

2.1 数据类

数据类是Anomalib库所有数据对象的高层抽象类,规定了所有模型方法的输出应该如下:

其中:

1)anomaly_map:异常热力图

2)pred_score:异常预测分数值

3)pred_mask:异常预测mask图

4)pred_label:异常预测类别

5)explanation:异常检测结果输出路径

2.2 包含的数据集

Anomalib库中的数据集底层通过pandas的DataFrame结构进行管理,主要包括以下属性:

主要集成了以下几种数据集:

3D点云异常数据集

图像异常数据集

视频异常数据集

常用数据集说明

2.3 MVTec数据集加载

通过以下方法进行MVTec异常检测图像数据集加载:

2.4 自定义数据集加载

可以通过Anomalib库中的Folder方法加载自定义的异常检测数据集,数据集目录应该按照以下结构进行组织存放,注意mask文件夹中的mask标记图片文件名必须和异常数据文件夹中的图片一一对应:

Folder类定义如下:

参数意义如下:

重要参数意义如下:

1)name:自定义数据集的名称,日志和结果记录时使用

2)normal_dir:自定义数据集中正常数据所在路径

3)root:自定义数据集所在根路径

4)normal_split_ratio:正常数据用于测试的数据比例,默认0.2,也就是20%正常数据用于测试,不参与模型训练

5)extensions:指定要加载的图像类型

6)train_batch_size:训练batch_size,默认32

7)augmentations:统一的数据增强配置(PyTorch的Transform类型)

8)val_split_ratio:测试数据中用于验证的比例,默认0.2,也就是从测试数据中抽取20%作为验证集

使用示例如下:

2.5 数据处理工具

Anomalib提供了一些常用的数据处理方法,避免二次开发,主要包括目录处理、图像处理、视频处理、张量处理等,下面挑一些常用的数据处理方法进行说明:

图像处理

为图像的读写、格式转换提供基础处理工具

填充图像,使图像各维度尺度相同

读取、存储、显示图像

矩形框处理

提供常用矩形框处理方法,如矩形框缩放处理、矩形框和mask、热力图的转换

数据集分割

提供数据集分割方法,包括随机分割、标签分布自适应分割等

数据合成

基于perlin噪声在正常图像或者正常图像数据集上生成异常数据

除了生成单张带有perlin noise的图像,还可以从正常数据集生成异常数据集

三 模型

所有模型均继承自AnomalibModule。支持统一的pre_processor/post_processor/evaluator/visualizer配置。Anomalib的模型层主要包含三部分内容:

1)model components:所有模型的底层block定义、基础工具等

2)image models:所有图像异常检测SOTA模型

3)video models:所有视频异常检测SOTA模型

3.1 model components

model components中封装了常用的工具

1)feature extractors:从不同的backbone提取输入图像特征

2)dimensionality reduction:特征维度降维、分解

3)normalizing flows:归一化流操作

4)sampling components:采样方法

5)filters:卷积处理方法

6)classification:特征分类处理

7)cluster:特征聚类处理

8)statistical components:异常检测结果统计

Feature Extractors

提供用于特征提取的类和特征维度获取的函数

Dimensionality Reduction

包含PCA、SparseRandomProjection特征降维方法

3.2 image model

支持以下图像异常检测模型、方法

四 模型训练、推理、可视化

所有模型通过统一引擎Engine 进行训练、推理:

将模型进行指定类型导出

在指定数据集上进行模型训练

利用指定模型在指定数据集上进行预测、和测试

4.1 模型训练

可以自定义参数进行训练

4.2 模型推理

使用engine进行推理

4.3 结果可视化

模型初始化时会默认开启可视化:

五 流程处理

提供一些常用的预处理和后处理方法

5.1 预处理

可封装、管理不同的PyTorch预处理方法,精准指定对于不同数据集进行的预处理

5.2 后处理

模型推理结果后处理,包括:

1)图像归一化、像素尺度异常分数处理

2)自适应计算异常分类阈值

3)格式化模型推理结果

六 指标计算

Anomalib支持以下评价指标的评测、计算:

七 日志和回调

支持以下几种日志记录器

这四个都是深度学习实验的日志记录/追踪工具

在Anomalib里开启Tensorboard日志记录

八 工作流构建

通过编写工作流,可以整合不同的训练流程在一起运行

九 API使用参考

十 使用示例

相关推荐
程序员学习Chat18 天前
计算机视觉-异常检测
人工智能·计算机视觉·异常检测
__土块__18 天前
AI 管理后台首页信息过载治理:从指标泛滥到决策摘要的视图重构实践
异常检测·可观测性·故障排查·信息架构·ai工程·管理后台设计·状态机建模
Rnan-prince24 天前
Node2Vec 从理论到工程:图嵌入驱动的文件系统异常检测实战
异常检测·图嵌入·node2vec
EDPJ1 个月前
(2026|成电,超图,图文融合和对齐,高阶推理/将异常显式地推理为语义-结构一致性的违反)H2VLR:用于少样本异常检测的异构超图视觉语言推理
人工智能·计算机视觉·异常检测
Coovally AI模型快速验证1 个月前
无人机拍叶片→AI找缺陷:CEA-DETR改进RT-DETR做风电叶片表面缺陷检测,mAP50达89.4%
人工智能·3d·视觉检测·无人机·异常检测·工业质检
quetalangtaosha1 个月前
Anomaly Detection系列(CVPR2025 TAO论文解读)
人工智能·异常检测
Dfreedom.1 个月前
异常检测算法详解:从“何为异常”到“如何发现”
人工智能·算法·机器学习·聚类·异常检测
quetalangtaosha1 个月前
Anomaly Detection系列(CVPR2025 Odd-One-Out论文解读)
人工智能·计算机视觉·异常检测
quetalangtaosha1 个月前
Anomaly Detection系列(CVPR2025 DeCo-Diff论文解读)
人工智能·计算机视觉·异常检测