👋 简介
Anomalib是一个深度学习库,旨在收集最先进的异常检测算法,以便在公共和私有数据集上进行基准测试。Anomalib提供了几种最新文献中描述的异常检测算法的现成实现,以及一套便于开发和实现自定义模型的工具。该库重点关注视觉异常检测,其目标是检测和/或定位数据集中图像或视频内的异常。Anomalib不断更新新的算法和训练/推理扩展,所以请持续关注!
主要特点
- 简单且模块化的API和CLI,用于训练、推理、基准测试和超参数优化。
- 最大的公开深度学习异常检测算法和基准数据集集合。
- 基于Lightning的模型实现,减少样板代码,将实现工作限制在最基本的内容上。
- 大多数模型可以导出为OpenVINO中间表示(IR),以在Intel硬件上加速推理。
- 一套推理工具,用于快速轻松地部署标准或自定义异常检测模型。
📦 安装
Anomalib提供两种安装库的方法。第一种是通过PyPI,第二种是通过本地安装。如果你想使用库而不对源代码进行任何更改,建议使用PyPI安装。如果你想对库进行更改,则建议进行本地安装。
从PyPI安装
使用pip安装库是开始使用anomalib最简单的方法。pip install anomalib
这将使用pyproject.toml
文件中的依赖项安装Anomalib CLI。Anomalib CLI是用于训练、推理、基准测试和超参数优化的命令行界面。如果你想将库作为Python包使用,可以使用以下命令安装:
# 获取安装参数的帮助
anomalib install -h
# 安装完整包
anomalib install
# 详细输出安装过程
anomalib install -v
# 仅安装核心包选项,用于通过Torch和Lightning训练和评估模型
anomalib install --option core
# 仅安装OpenVINO选项。这对于边缘部署很有用,因为wheel包大小较小。
anomalib install --option openvino
从源代码安装
要从源代码安装,你需要克隆仓库并使用pip以可编辑模式安装库。# 强烈建议使用虚拟环境
# 使用conda
yes | conda create -n anomalib_env python=3.10
conda activate anomalib_env
# 或使用你喜欢的虚拟环境
# ...
# 克隆仓库并以可编辑模式安装
git clone https://github.com/openvinotoolkit/anomalib.git
cd anomalib
pip install -e .
这将使用pyproject.toml
文件中的依赖项安装Anomalib CLI。Anomalib CLI是用于训练、推理、基准测试和超参数优化的命令行界面。如果你想将库作为Python包使用,可以使用以下命令安装:
# 获取安装参数的帮助
anomalib install -h
# 安装完整包
anomalib install
# 详细输出安装过程
anomalib install -v
# 仅安装核心包选项,用于通过Torch和Lightning训练和评估模型
anomalib install --option core
# 仅安装OpenVINO选项。这对于边缘部署很有用,因为wheel包大小较小。
anomalib install --option openvino
🧠 训练
Anomalib支持基于API和CLI的训练。API更灵活,允许更多自定义,而CLI训练使用命令行界面,对于那些希望开箱即用的人来说可能更容易。
通过API训练
# 导入所需模块
from anomalib.data import MVTec
from anomalib.models import Patchcore
from anomalib.engine import Engine
# 初始化数据模块、模型和引擎
datamodule = MVTec()
model = Patchcore()
engine = Engine()
# 训练模型
engine.fit(datamodule=datamodule, model=model)
通过CLI训练
# 获取训练参数的帮助,运行:
anomalib train -h
# 使用默认值进行训练
anomalib train --model Patchcore --data anomalib.data.MVTec
# 通过覆盖参数进行训练
anomalib train --model Patchcore --data anomalib.data.MVTec --data.category transistor
# 使用配置文件进行训练
anomalib train --config <path/to/config>
🤖 推理
Anomalib包含多个推理脚本,包括Torch、Lightning、Gradio和OpenVINO推理器,用于使用训练/导出的模型进行推理。这里我们展示一个使用Lightning推理器的推理示例。对于其他推理器,请参阅推理文档。
通过API进行推理
以下示例演示了如何通过加载检查点文件来执行Lightning推理。
# 假设已从前面的步骤初始化了datamodule、model和engine,
# 可以通过检查点文件进行预测,如下所示:
predictions = engine.predict(
datamodule=datamodule,
model=model,
ckpt_path="path/to/checkpoint.ckpt",
)
通过CLI进行推理
# 要获取参数帮助,请运行:
anomalib predict -h
# 使用默认值进行预测。
anomalib predict --model anomalib.models.Patchcore \
--data anomalib.data.MVTec \
--ckpt_path <path/to/model.ckpt>
# 覆盖参数进行预测。
anomalib predict --model anomalib.models.Patchcore \
--data anomalib.data.MVTec \
--ckpt_path <path/to/model.ckpt>
--return_predictions
# 使用配置文件进行预测。
anomalib predict --config <path/to/config> --return_predictions
⚙️ 超参数优化
Anomalib支持使用wandb和comet.ml进行超参数优化(HPO)。更多详情请参阅HPO文档
通过API进行HPO
# 将在v1.1版本中启用
通过CLI进行HPO
以下示例演示了如何对Patchcore模型执行HPO。
anomalib hpo --backend WANDB --sweep_config tools/hpo/configs/wandb.yaml
🧪 实验管理
Anomalib通过pytorch lightning loggers集成了各种实验跟踪库,如Comet、tensorboard和wandb。更多信息请参阅日志记录文档
通过API进行实验管理
# 将在v1.1版本中启用
通过CLI进行实验管理
以下是如何启用超参数、指标、模型图和测试数据集图像预测的日志记录示例。
首先需要修改config.yaml
文件以启用日志记录。以下示例展示了如何启用日志记录:
# 在此处放置实验管理配置。
# 在此处放置实验管理CLI命令。
📊 基准测试
Anomalib提供了一个基准测试工具,用于评估给定数据集上异常检测模型的性能。基准测试工具可用于评估模型在给定数据集上的性能,或比较多个模型在给定数据集上的性能。
Anomalib中的每个模型都在一组数据集上进行了基准测试,结果可在src/anomalib/models/<type>/<model_name>/README.md
中找到。例如,Patchcore模型的MVTec AD结果可在相应的README.md文件中找到。
通过API进行基准测试
# 将在v1.1版本中启用
通过CLI进行基准测试
要运行基准测试工具,请执行以下命令:
anomalib benchmark --config tools/benchmarking/benchmark_params.yaml
✍️ 引用
如果您使用并喜欢这个库,请使用以下方式引用它 🤗
@inproceedings{akcay2022anomalib,
title={Anomalib: A deep learning library for anomaly detection},
author={Akcay, Samet and Ameln, Dick and Vaidya, Ashwin and Lakshmanan, Barath and Ahuja, Nilesh and Genc, Utku},
booktitle={2022 IEEE International Conference on Image Processing (ICIP)},
pages={1706--1710},
year={2022},
organization={IEEE}
}
👥 贡献
对于那些想为这个库做出贡献的人,请查看CONTRIBUTING.md了解详情。
感谢所有已经做出贡献的人 - 我们感谢你们的支持!