AdaCLIP 开源项目使用教程
1. 项目介绍
AdaCLIP 是一个针对零样本异常检测(Zero-Shot Anomaly Detection, ZSAD)任务的开源项目。该项目基于预训练的视觉语言模型 CLIP,通过引入可学习的提示(prompts)并对这些提示进行优化,以增强 CLIP 在零样本异常检测方面的能力。AdaCLIP 提出了两种类型的提示:静态提示和动态提示,结合这两种提示可以实现更好的异常检测效果。在多个现实世界的异常检测数据集上的实验表明,AdaCLIP 的性能优于其他 ZSAD 方法,并且能够更好地泛化到不同的类别甚至领域。
2. 项目快速启动
环境安装
首先,克隆项目仓库:
git clone https://github.com/caoyunkang/AdaCLIP.git
cd AdaCLIP
然后,可以使用提供的安装脚本来自动设置环境:
sh install.sh
如果希望手动设置环境,可以按照以下步骤进行:
conda create -n AdaCLIP python=3.9.5 -y
conda activate AdaCLIP
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
pip install tqdm tensorboard setuptools==58.0.4 opencv-python scikit-image scikit-learn matplotlib seaborn ftfy regex numpy==1.26.4
pip install gradio # 可选,用于应用
确保在 config.py
中更新数据集的根目录:
DATA_ROOT = '../datasets'
数据集准备
请将处理过的视觉异常检测数据集下载到 DATA_ROOT
指定的路径。
训练模型
默认情况下,使用 MVTec AD 和 ColonDB 数据集进行训练,VisA 数据集用于验证:
CUDA_VISIBLE_DEVICES=0 python train.py --save_fig True --training_data mvtec colondb --testing_data visa
如果需要在 MVTec AD 和 ColonDB 上进行评估,可以使用 VisA 和 ClinicDB 数据集进行训练,MVTec AD 数据集用于验证:
CUDA_VISIBLE_DEVICES=0 python train.py --save_fig True --training_data visa clinicdb --testing_data mvtec
为了构建一个健壮的 ZSAD 模型,也可以在提到的所有 AD 数据集上训练 AdaCLIP:
CUDA_VISIBLE_DEVICES=0 python train.py --save_fig True \
--training_data \
br35h brain_mri btad clinicdb colondb \
dagm dtd headct isic mpdd mvtec sdd tn3k visa \
--testing_data mvtec
测试模型
从验证集中选择最佳模型,并将其放置在 weights/
目录中。然后运行以下测试脚本:
sh test.sh
如果想要在单张图像上测试,可以参考 test_single_image.sh
:
CUDA_VISIBLE_DEVICES=0 python test.py --testing_model image --ckt_path weights/pretrained_all.pth --save_fig True \
--image_path asset/img.png --class_name candle --save_name test.png
3. 应用案例和最佳实践
- 案例一:使用 AdaCLIP 进行工业视觉异常检测,如 MVTec AD 数据集中的各类物体。
- 最佳实践:在训练过程中,使用半精度浮点数(FP16)可能会导致训练不稳定,建议多次运行训练过程,并选择在验证集上性能最佳的模型。
4. 典型生态项目
- VAND-APRIL-GAN:一个用于异常检测的生成对抗网络项目。
- AnomalyCLIP:另一个基于 CLIP 的异常检测项目。
- SAA:用于异常检测的自适应 attention 机制项目。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考