[ 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} }