[ ICLR 24 ] AnomalyCLIP:用于零样本异常检测的对象不可知提示学习
作者:周启航*、庞冠松*、田雨、何世波、陈吉明。
2024 年 3 月 19 日:代码已发布!
08.08.2024 :更新测试一张图像的代码。
零样本异常检测(ZSAD)需要使用辅助数据训练的检测模型来检测目标数据集中没有任何训练样本的异常。当由于数据隐私等各种问题而无法访问训练数据时,这是一项至关重要的任务,但它具有挑战性,因为模型需要泛化到不同领域的异常,其中前景对象、异常区域和背景特征的出现,例如不同产品/器官上的缺陷/肿瘤可能会有很大差异。最近,大型预训练视觉语言模型(VLM),例如 CLIP,在各种视觉任务(包括异常检测)中表现出了强大的零样本识别能力。然而,它们的 ZSAD 性能很弱,因为 VLM 更多地关注于对前景对象的类语义进行建模,而不是对图像中的异常/正常进行建模。在本文中,我们介绍了一种新颖的方法,即 AnomalyCLIP,使 CLIP 适应不同领域的准确 ZSAD。 AnomalyCLIP 的关键见解是学习与对象无关的文本提示,无论其前景对象如何,都可以捕获图像中的一般正常性和异常性。这使得我们的模型能够专注于异常图像区域而不是对象语义,从而能够对不同类型的对象进行广义的正常性和异常性识别。对 17 个真实世界异常检测数据集的大规模实验表明,AnomalyCLIP 在来自各种缺陷检查和医学成像领域的高度多样化的类语义数据集中实现了卓越的零样本检测和分割异常性能。所有实验均在 PyTorch-2.0.0 中使用单个 NVIDIA RTX 3090 24GB 进行。
下载以下数据集:
工业领域:MVTec、VisA、MPDD、BTAD、SDD、DAGM、DTD-Synthetic
医学领域:HeadCT、BrainMRI、Br35H、COVID-19、ISIC、CVC-ColonDB、CVC-ClinicDB、Kvasir、Endo、TN3K。
Google Drive 链接(经常请求的数据集):SDD、Br35H、COVID-19
以MVTec AD为例(具有多个异常类别)
MVTec 文件夹的结构:
mvtec/ │ ├── meta.json │ ├── bottle/ │ ├── ground_truth/ │ │ ├── broken_large/ │ │ │ └── 000_mask.png | | | └── ... │ │ └── ... │ └── test/ │ ├── broken_large/ │ │ └── 000.png | | └── ... │ └── ... │ └── ...
cd 生成_数据集_json python mvtec.py
以SDD为例(单一异常类别)
SDD文件夹的结构:
SDD/ │ ├── electrical_commutators/ │ └── test/ │ ├── defect/ │ │ └── kos01_Part5_0.png | | └── ... │ └── good/ │ └── kos01_Part0_0.png │ └── ... │ └── meta.json
cd 生成_数据集_json 蟒蛇SDD.py
选择相应的脚本并运行它(我们提供了 AnomalyCLIP 报告的数据集的所有脚本)。生成的 JSON 存储 AnomalyCLIP 所需的所有信息。
根据您自己的数据集的折叠结构,在折叠generate_dataset_json中创建一个新的JSON脚本。
在脚本 dataset.py 中添加数据集的相关信息(即数据集名称和类名称)
快速启动(使用预先训练的权重)
bash测试.sh
训练自己的重量
bash 火车.sh
我们感谢您提供的代码存储库:open_clip、DualCoOp、CLIP_Surgery 和 VAND。
如果您发现本文和存储库有用,请引用我们的论文。
@inproceedings{zhou2023anomalyclip, title={AnomalyCLIP: Object-agnostic Prompt Learning for Zero-shot Anomaly Detection}, author={Zhou, Qihang and Pang, Guansong and Tian, Yu and He, Shibo and Chen, Jiming}, booktitle={The Twelfth International Conference on Learning Representations}, year={2023} }