يعد هذا الريبو التنفيذ الرسمي لـ INTR: محول بسيط قابل للتفسير لتصنيف الصور الدقيقة وتحليلها. ويتضمن حاليًا تعليمات برمجية ونماذج لتفسير البيانات الدقيقة. سنقدم رابطًا لإجراءات ICLR 2024 القادمة لهذه الورقة عندما تصبح متاحة على الإنترنت.
INTR هو استخدام جديد للمحولات لجعل تصنيف الصور قابلاً للتفسير. في INTR، ندرس نهجًا استباقيًا للتصنيف، حيث نطلب من كل فصل البحث عن نفسه في الصورة. نحن نتعلم الاستعلامات الخاصة بفئة معينة (واحدة لكل فئة) كمدخلات إلى وحدة فك التشفير، مما يسمح لها بالبحث عن وجودها في الصورة عبر الانتباه المتبادل. نوضح أن INTR يشجع بشكل جوهري كل فصل على الحضور بشكل مميز؛ وبالتالي توفر أوزان الانتباه المتقاطع تفسيرًا ذا معنى لتنبؤ النموذج. ومن المثير للاهتمام، أنه من خلال الاهتمام المتبادل متعدد الرؤوس، يمكن لـ INTR أن يتعلم كيفية توطين السمات المختلفة لفئة ما، مما يجعلها مناسبة بشكل خاص للتصنيف والتحليل الدقيق.
في نموذج INTR، يكون كل استعلام في وحدة فك التشفير مسؤولاً عن التنبؤ بالفئة. لذلك، يبحث الاستعلام في نفسه للعثور على ميزات خاصة بفئة معينة من خريطة الميزات. أولاً، نقوم بتصور خريطة الميزات، أي مصفوفة القيمة لبنية المحولات لرؤية الأجزاء المهمة من الكائن في الصورة. للعثور على الميزات المحددة، حيث يهتم النموذج في مصفوفة القيمة، نعرض الخريطة الحرارية لاهتمام النموذج. ولتجنب التدخل الخارجي في التصنيف، نستخدم ناقل وزن مشترك للتصنيف، وبالتالي فإن وزن الانتباه يفسر تنبؤ النموذج.
INTR على العمود الفقري DETR-R50، وأداء التصنيف، والنماذج المضبوطة بدقة على مجموعات البيانات المختلفة.
مجموعة البيانات | حساب@1 | حساب@5 | نموذج |
---|---|---|---|
شبل | 71.8 | 89.3 | تحميل نقطة التفتيش |
طائر | 97.4 | 99.2 | تحميل نقطة التفتيش |
فراشة | 95.0 | 98.3 | تحميل نقطة التفتيش |
إنشاء بيئة بايثون (اختياري)
conda create -n intr python=3.8 -y
conda activate intr
استنساخ المستودع
git clone https://github.com/dipanjyoti/INTR.git
cd INTR
تثبيت تبعيات بايثون
pip install -r requirements.txt
اتبع التنسيق أدناه للبيانات.
datasets
├── dataset_name
│ ├── train
│ │ ├── class1
│ │ │ ├── img1.jpeg
│ │ │ ├── img2.jpeg
│ │ │ └── ...
│ │ ├── class2
│ │ │ ├── img3.jpeg
│ │ │ └── ...
│ │ └── ...
│ └── val
│ ├── class1
│ │ ├── img4.jpeg
│ │ ├── img5.jpeg
│ │ └── ...
│ ├── class2
│ │ ├── img6.jpeg
│ │ └── ...
│ └── ...
لتقييم أداء INTR في مجموعة بيانات CUB ، في إعدادات وحدات معالجة الرسومات المتعددة (على سبيل المثال، 4 وحدات معالجة رسومات)، قم بتنفيذ الأمر أدناه. تتوفر نقاط فحص INTR في نموذج الضبط الدقيق والنتائج.
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port 12345 --use_env main.py --eval --resume < path/to/intr_checkpoint_cub_detr_r50.pth > --dataset_path < path/to/datasets > --dataset_name < dataset_name >
لإنشاء تمثيلات مرئية لتفسيرات INTR، قم بتنفيذ الأمر المقدم أدناه. سيقدم هذا الأمر تفسيرًا لفئة معينة باستخدام الفهرس
python -m tools.visualization --eval --resume < path/to/intr_checkpoint_cub_detr_r50.pth > --dataset_path < path/to/datasets > --dataset_name < dataset_name > --class_index < class_number >
التنبؤ بالصورة الواحدة وتصورها لوقت الاستدلال: لقد قدمنا أيضًا Jupyter Notebook، demo.ipynb، المصمم للتنبؤ بالصورة الواحدة وتصورها أثناء عملية الاستدلال. يرجى ملاحظة أن العرض التوضيحي يركز على مجموعة بيانات CUB.
لإعداد INTR للتدريب، استخدم النموذج المُدرب مسبقًا DETR-R50. للتدريب على مجموعة بيانات معينة، قم بتعديل "--num_queries" عن طريق تعيينه على عدد الفئات في مجموعة البيانات. ضمن بنية INTR، يتم تعيين كل استعلام في وحدة فك التشفير بمهمة التقاط ميزات خاصة بالفئة، مما يعني أنه يمكن تكييف كل استعلام من خلال عملية التعلم. وبالتالي، فإن العدد الإجمالي لمعلمات النموذج سينمو بما يتناسب مع عدد الفئات في مجموعة البيانات. لتدريب INTR على نظام متعدد وحدات معالجة الرسومات (على سبيل المثال، 4 وحدات معالجة رسومات)، قم بتنفيذ الأمر أدناه.
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port 12345 --use_env main.py --finetune < path/to/detr-r50-e632da11.pth > --dataset_path < path/to/datasets > --dataset_name < dataset_name > --num_queries < num_of_classes >
نموذجنا مستوحى من طريقة DEtection TRansformer (DETR).
نشكر مؤلفي DETR على القيام بهذا العمل الرائع.
إذا وجدت عملنا مفيدًا لبحثك، فيرجى التفكير في الاستشهاد بمدخل BibTeX.
@inproceedings{paul2024simple,
title={A Simple Interpretable Transformer for Fine-Grained Image Classification and Analysis},
author={Paul, Dipanjyoti and Chowdhury, Arpita and Xiong, Xinqi and Chang, Feng-Ju and Carlyn, David and Stevens, Samuel and Provost, Kaiya and Karpatne, Anuj and Carstens, Bryan and Rubenstein, Daniel and Stewart, Charles and Berger-Wolf, Tanya and Su, Yu and Chao, Wei-Lun},
booktitle={International Conference on Learning Representations},
year={2024}
}