一 整体概览
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使用参考







十 使用示例










