AnomalyDiffusion 项目使用教程
1. 项目介绍
AnomalyDiffusion 是一个用于异常图像生成的开源项目,基于扩散模型(Diffusion Model)实现。该项目的主要目标是支持少样本(Few-Shot)异常图像生成,适用于异常检测、定位和分类等任务。AnomalyDiffusion 在 AAAI 2024 会议上发表,由上海交通大学和腾讯优图实验室联合开发。
主要功能
- 异常图像生成:通过扩散模型生成异常图像。
- 异常检测:训练模型以检测生成的异常图像。
- 异常定位:定位图像中的异常区域。
- 异常分类:对异常图像进行分类。
2. 项目快速启动
环境准备
首先,确保你的环境满足以下要求:
- Ubuntu
- Python 3.8
- CUDA 11.8
- GCC 7.5.0
安装依赖:
conda env create -f environment.yaml
conda activate Anomalydiffusion
下载预训练模型
下载潜在扩散模型(Latent Diffusion Model)的预训练模型:
mkdir -p models/ldm/text2img-large/
wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt
训练异常生成模型
使用以下命令训练异常生成模型:
CUDA_VISIBLE_DEVICES=$gpu_id python main.py --spatial_encoder_embedding --data_enhance --base configs/latent-diffusion/txt2img-1p4B-finetune-encoder+embedding.yaml -t --actual_resume models/ldm/text2img-large/model.ckpt -n test --gpus 0 --init_word anomaly --mvtec_path=$path_to_mvtec_dataset
生成异常图像-掩码对
训练掩码生成模型并生成异常图像-掩码对:
CUDA_VISIBLE_DEVICES=$gpu_id python run-mvtec.py --data_path=$path_to_mvtec_dataset
测试异常检测性能
训练和测试异常检测模型:
python train-localization.py --generated_data_path $path_to_the_generated_data --mvtec_path=$path_to_mvtec
python test-localization.py --generated_data_path $path_to_mvtec
训练和测试异常分类模型:
python train-classification.py --mvtec_path=$path_to_mvtec --generated_data_path=$path_to_the_generated_data
python test-classification.py --mvtec_path=$path_to_mvtec --generated_data_path=$path_to_the_generated_data
3. 应用案例和最佳实践
应用案例
- 工业检测:在工业生产中,通过生成异常图像来训练检测模型,提高生产线的质量控制。
- 医学影像分析:在医学领域,生成异常图像用于训练模型,辅助医生进行疾病诊断。
最佳实践
- 数据增强:在训练过程中使用数据增强技术,提高模型的泛化能力。
- 模型微调:根据具体应用场景,对预训练模型进行微调,以获得更好的性能。
4. 典型生态项目
- Latent Diffusion Model:AnomalyDiffusion 基于 Latent Diffusion Model 实现,该项目提供了强大的图像生成能力。
- MVTec AD Dataset:用于训练和测试异常检测模型的标准数据集,AnomalyDiffusion 支持该数据集。
- PyTorch:AnomalyDiffusion 使用 PyTorch 作为深度学习框架,提供了灵活的模型训练和推理能力。
通过以上步骤,你可以快速上手 AnomalyDiffusion 项目,并将其应用于实际的异常检测任务中。