[ ICLR 24 ] AnomalyCLIP: ゼロショット異常検出のためのオブジェクト非依存プロンプト学習
Qihang Zhou*、Guansong Pang*、Yu Tian、Shibo He、Jiming Chen 著。
03.19.2024 : コードがリリースされました !!!
08.08.2024 : 1 つの画像をテストするコードを更新しました。
ゼロショット異常検出 (ZSAD) では、ターゲット データセット内のトレーニング サンプルなしで異常を検出するには、補助データを使用してトレーニングされた検出モデルが必要です。これは、データプライバシーなどのさまざまな懸念によりトレーニングデータにアクセスできない場合に重要なタスクですが、前景のオブジェクト、異常な領域、および背景の特徴の出現など、さまざまなドメインにわたる異常にモデルを一般化する必要があるため、困難です。異なる製品/臓器の欠損/腫瘍など、大きく異なる可能性があります。 CLIP など、最近の大規模な事前トレーニング済み視覚言語モデル (VLM) は、異常検出を含むさまざまな視覚タスクにおいて強力なゼロショット認識能力を実証しています。ただし、VLM は画像の異常/正常性ではなく、前景オブジェクトのクラス セマンティクスのモデル化に重点を置いているため、ZSAD のパフォーマンスは弱くなります。このペーパーでは、さまざまなドメインにわたって正確な ZSAD を実現するために CLIP を適応させるための新しいアプローチ、つまり AnomalyCLIP を紹介します。 AnomalyCLIP の重要な洞察は、前景のオブジェクトに関係なく、画像内の一般的な正常性と異常性を捉える、オブジェクトに依存しないテキスト プロンプトを学習することです。これにより、モデルはオブジェクトのセマンティクスではなく異常な画像領域に焦点を当てることができ、さまざまなタイプのオブジェクトに対する一般化された正常性と異常性の認識が可能になります。 17 の実世界の異常検出データセットに対する大規模実験では、AnomalyCLIP が、さまざまな欠陥検査および医療画像ドメインからの非常に多様なクラス セマンティクスのデータセットで異常を検出およびセグメント化する優れたゼロショット パフォーマンスを達成することが示されています。すべての実験は、1 台の NVIDIA RTX 3090 24GB を備えた PyTorch-2.0.0 で実行されます。
以下のデータセットをダウンロードします。
産業分野: MVTec、VisA、MPDD、BTAD、SDD、DAGM、DTD-Synthetic
医療ドメイン: HeadCT、BrainMRI、Br35H、COVID-19、ISIC、CVC-ColonDB、CVC-ClinicDB、Kvasir、Endo、TN3K。
Google ドライブのリンク (頻繁にリクエストされるデータセット): 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 Python SDD.py
対応するスクリプトを選択して実行します (AnomalyCLIP が報告したデータセットのスクリプトはすべて提供されています)。生成された JSON には、AnomalyCLIP が必要とするすべての情報が保存されます。
独自のデータセットのフォールド構造に従って、フォールドgenerate_dataset_json内に新しいJSONスクリプトを作成します。
データセットの関連情報 (つまり、データセット名とクラス名) をスクリプト dataset.py に追加します。
クイックスタート (事前にトレーニングされた重みを使用)
bash テスト.sh
自分の体重をトレーニングする
bash train.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} }