
تجزئة العناصر المحظورة عبر نمذجة ثنائية الطبقات واعية بالإطباق (ICME 2025)
التنفيذ الرسمي بـ PyTorch لتجزئة الأصناف الممنوعة عبر النمذجة ثنائية الطبقات المدركة للإطباق.
تم اختبار الكود بنجاح على لينكس مع Pytorch 2.1.2 و CUDA 11.8.
إذا لزم الأمر، قم بتثبيت numpy<2.0.0 (نستخدم 1.24.0):
conda create -n occ python=3.10
conda activate occ
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
pip install -U openmim
mim install mmcv==2.1.0
conda install mpi4py
pip install -U transformers==4.38.1 wandb==0.16.3 einops pycocotools shapely scipy terminaltables importlib peft==0.8.2 mat4py==0.6.0
conda install importlib-metadata
قم بتنزيل أوزان SAM مسبقًا (مثل SAM-vit-large) وحدّث المسارات في 'convert_model_weights.py'. يمكن تنزيل الأوزان باستخدام السكربت التالي:
from transformers import SamModel
import os
hf_pretrain_name = "facebook/sam-vit-large"
cache_dir = f"{os.path.basename(hf_pretrain_name).replace('-', '_')}"
os.makedirs(cache_dir, exist_ok=True)
model = SamModel.from_pretrained(hf_pretrain_name, use_safetensors=False)
model.save_pretrained(cache_dir, safe_serialization=False)
بعد القيام بذلك، شغّل سكربت 'convert_model_weights.py' لتوليد الأوزان الأولية لـ Occluder Mask Decoder.
قم بتنزيل مجموعات البيانات من الروابط التالية، لاحظ أن PIXray تم تحويلها إلى صيغة COCO:
استخدم 'convert_occlusion_annotation.py' لتوليد تعليقات الإطباق (occlusion annotations) لمجموعات البيانات بصيغة COCO. لتوليد مجموعات البيانات الخاصة بك مع تعليقات الإطباق، عدّل المسارات في السكربت قبل التنفيذ.
حدّث المسارات في ملفي الإعدادات 'configs/occlusion/pid.py' و 'configs/occlusion/pix.py' وفقًا لإعداداتك.
تم اختبار كودنا بنجاح على:
1 × NVIDIA A800 Tensor Core GPU
8 × NVIDIA GeForce RTX 4090 GPUs
لتدريب نموذجنا:
# Single GPU, PIDray-A
CUDA_VISIBLE_DEVICES=0 bash ./tools/dist_train.sh configs/occlusion/pid.py 1
# Single GPU, PIXray-A
CUDA_VISIBLE_DEVICES=0 bash ./tools/dist_train.sh configs/occlusion/pix.py 1
# Multiple GPUs, PIDray-A
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash ./tools/dist_train.sh configs/occlusion/pid.py 8
# Multiple GPUs, PIXray-A
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash ./tools/dist_train.sh configs/occlusion/pix.py 8
لاختبار نموذجنا، اضبط 'CHECKPOINT_FILE' على مسار نقطة التفتيش الخاصة بك، وقم بتهيئة 'GPU_NUM' ليتوافق مع إعداد وحدات المعالجة الرسومية لديك:
# PIDray-A
bash ./tools/dist_test.sh configs/occlusion/pid.py {CHECKPOINT_FILE} {GPU_NUM}
# PIXray-A
bash ./tools/dist_test.sh configs/occlusion/pix.py {CHECKPOINT_FILE} {GPU_NUM}
بالإضافة إلى ذلك، نوفر نقاط تفتيش النموذج في الرابط التالي: Checkpoints
يعتمد هذا التنفيذ على:
نشكرهم بصدق على مساهماتهم.
@inproceedings{ren2025prohibited,
title={Prohibited Items Segmentation via Occlusion-aware Bilayer Modeling},
author={Ren, Yunhan and Li, Ruihuang and Liu, Lingbo and Chen, Changwen},
booktitle={2025 IEEE International Conference on Multimedia and Expo (ICME)},
year={2025},
}