一 整体概览

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使用参考

图片

图片

图片

图片

图片

图片

图片

十 使用示例

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐