[ ICLR 24 ] AnomalyCLIP: การเรียนรู้พร้อมท์แบบไม่เชื่อเรื่องพระเจ้าสำหรับการตรวจจับความผิดปกติแบบ Zero-shot
โดย Qihang Zhou*, Guansong Pang*, Yu Tian, Shibo He, Jiming Chen
03.19.2024 : โค้ดออกแล้ว !!!
08.08.2024 : อัปเดตโค้ดสำหรับทดสอบหนึ่งภาพ
การตรวจจับความผิดปกติแบบ Zero-shot (ZSAD) ต้องใช้โมเดลการตรวจจับที่ได้รับการฝึกโดยใช้ข้อมูลเสริมเพื่อตรวจจับความผิดปกติโดยไม่ต้องมีตัวอย่างการฝึกในชุดข้อมูลเป้าหมาย เป็นงานที่สำคัญเมื่อไม่สามารถเข้าถึงข้อมูลการฝึกอบรมได้เนื่องจากข้อกังวลต่างๆ เช่น ความเป็นส่วนตัวของข้อมูล แต่ก็เป็นเรื่องที่ท้าทายเนื่องจากแบบจำลองจำเป็นต้องสรุปความผิดปกติในโดเมนต่างๆ ซึ่งลักษณะของวัตถุเบื้องหน้า ขอบเขตที่ผิดปกติ และคุณสมบัติพื้นหลัง เช่น ข้อบกพร่อง/เนื้องอกในผลิตภัณฑ์/อวัยวะต่างๆ อาจแตกต่างกันอย่างมีนัยสำคัญ โมเดลภาษาการมองเห็น (VLM) ขนาดใหญ่ที่ได้รับการฝึกอบรมล่วงหน้าเมื่อเร็วๆ นี้ เช่น CLIP ได้แสดงให้เห็นถึงความสามารถในการจดจำช็อตศูนย์ที่แข็งแกร่งในงานการมองเห็นต่างๆ รวมถึงการตรวจจับความผิดปกติ อย่างไรก็ตาม ประสิทธิภาพ ZSAD ของพวกเขาอ่อนแอเนื่องจาก VLM มุ่งเน้นไปที่การสร้างแบบจำลองซีแมนทิกส์คลาสของวัตถุเบื้องหน้ามากกว่าความผิดปกติ/ปกติในรูปภาพ ในบทความนี้ เราแนะนำแนวทางใหม่ ได้แก่ AnomalyCLIP เพื่อปรับ CLIP สำหรับ ZSAD ที่แม่นยำในโดเมนต่างๆ ข้อมูลเชิงลึกที่สำคัญของ AnomalyCLIP คือการเรียนรู้ข้อความแจ้งเตือนแบบ object-agnostic ที่จับภาพความปกติและความผิดปกติทั่วไปในภาพโดยไม่คำนึงถึงวัตถุเบื้องหน้า สิ่งนี้ทำให้โมเดลของเรามุ่งเน้นไปที่ขอบเขตของภาพที่ผิดปกติมากกว่าความหมายของวัตถุ ทำให้สามารถรับรู้ถึงภาวะปกติและความผิดปกติทั่วไปในวัตถุประเภทต่างๆ การทดลองขนาดใหญ่บนชุดข้อมูลการตรวจจับความผิดปกติในโลกแห่งความเป็นจริง 17 ชุด แสดงให้เห็นว่า AnomalyCLIP บรรลุประสิทธิภาพการทำงานแบบ Zero-shot ที่เหนือกว่าในการตรวจจับและแบ่งส่วนความผิดปกติในชุดข้อมูลของซีแมนทิกส์คลาสที่หลากหลายสูงจากการตรวจสอบข้อบกพร่องและโดเมนการถ่ายภาพทางการแพทย์ต่างๆ การทดลองทั้งหมดดำเนินการใน PyTorch-2.0.0 ด้วย NVIDIA RTX 3090 24GB เครื่องเดียว
ดาวน์โหลดชุดข้อมูลด้านล่าง:
โดเมนอุตสาหกรรม: MVTec, VisaA, MPDD, BTAD, SDD, DAGM, DTD-สังเคราะห์
โดเมนทางการแพทย์: 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 | | └── ... │ └── ... │ └── ...
ซีดี Generate_dataset_json หลาม mvtec.py
ยกตัวอย่าง SDD (พร้อมหมวดหมู่ความผิดปกติเดียว)
โครงสร้างของโฟลเดอร์ SDD:
SDD/ │ ├── electrical_commutators/ │ └── test/ │ ├── defect/ │ │ └── kos01_Part5_0.png | | └── ... │ └── good/ │ └── kos01_Part0_0.png │ └── ... │ └── meta.json
ซีดี Generate_dataset_json หลาม SDD.py
เลือกสคริปต์ที่เกี่ยวข้องและเรียกใช้ (เราจัดเตรียมสคริปต์ทั้งหมดสำหรับชุดข้อมูลที่ AnomalyCLIP รายงาน) JSON ที่สร้างขึ้นจะจัดเก็บข้อมูลทั้งหมดที่ AnomalyCLIP ต้องการ
สร้างสคริปต์ JSON ใหม่ใน fold Generate_dataset_json ตามโครงสร้างพับของชุดข้อมูลของคุณเอง
เพิ่มข้อมูลที่เกี่ยวข้องของชุดข้อมูลของคุณ (เช่น ชื่อชุดข้อมูลและชื่อคลาส) ในสคริปต์ dataset.py
เริ่มต้นอย่างรวดเร็ว (ใช้ตุ้มน้ำหนักที่ผ่านการฝึกอบรมมาแล้ว)
ทุบตี test.sh
ฝึกน้ำหนักของคุณเอง
ทุบตี 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} }