يحتوي هذا الريبو على تطبيق Pytorch لـ LDMSeg: أسلوب نشر كامن بسيط للتجزئة الشاملة ورسم القناع. يتضمن الكود المقدم كلا من التدريب والتقييم.
أسلوب الانتشار الكامن البسيط للتجزئة البانوبتيكية ورسم القناع
فوتر فان غانسبيكي وبيرت دي براباندير
تقدم هذه الورقة طريقة الانتشار الكامن المشروط لمعالجة مهمة التجزئة الشاملة. الهدف هو حذف الحاجة إلى بنيات متخصصة (على سبيل المثال، شبكات اقتراح المنطقة أو استعلامات الكائنات)، ووظائف الخسارة المعقدة (على سبيل المثال، المطابقة المجرية أو القائمة على المربعات المحيطة)، وطرق المعالجة اللاحقة الإضافية (على سبيل المثال، التجميع، NMS ، أو لصق الكائن). ونتيجة لذلك، فإننا نعتمد على Stable Diffusion، وهو إطار عمل مستقل عن المهام. يتكون النهج المعروض من خطوتين: (1) مشروع أقنعة التجزئة البانوبتيكية إلى مساحة كامنة باستخدام جهاز تشفير تلقائي ضحل؛ (2) تدريب نموذج الانتشار في الفضاء الكامن، مشروطًا بصور RGB.
المساهمات الرئيسية : مساهماتنا ثلاثية:
يعمل الكود مع إصدارات Pytorch الحديثة، على سبيل المثال 2.0. علاوة على ذلك، يمكنك إنشاء بيئة بايثون باستخدام Anaconda:
conda create -n LDMSeg python=3.11
conda activate LDMSeg
نوصي باتباع التثبيت التلقائي (انظر tools/scripts/install_env.sh
). قم بتشغيل الأوامر التالية لتثبيت المشروع في الوضع القابل للتحرير. لاحظ أنه سيتم تثبيت جميع التبعيات تلقائيًا. نظرًا لأن هذا قد لا يعمل دائمًا (على سبيل المثال، بسبب مشكلات CUDA أو gcc)، يرجى إلقاء نظرة على خطوات التثبيت اليدوي.
python -m pip install -e .
pip install git+https://github.com/facebookresearch/detectron2.git
pip install git+https://github.com/cocodataset/panopticapi.git
يمكن تثبيت الحزم الأكثر أهمية بسرعة باستخدام النقطة على النحو التالي:
pip install torch torchvision einops # Main framework
pip install diffusers transformers xformers accelerate timm # For using pretrained models
pip install scipy opencv-python # For augmentations or loss
pip install pyyaml easydict hydra-core # For using config files
pip install termcolor wandb # For printing and logging
راجع data/environment.yml
للحصول على نسخة من بيئتي. نعتمد أيضًا على بعض التبعيات من Detectron2 وPanopticapi. يرجى اتباع وثائقهم.
نحن ندعم حاليًا مجموعة بيانات COCO. يرجى اتباع المستندات الخاصة بتثبيت الصور وأقنعة التجزئة البانوبتيكية المقابلة لها. ألقِ نظرة أيضًا على الدليل ldmseg/data/
للحصول على بعض الأمثلة على مجموعة بيانات COCO. كملاحظة جانبية، يجب أن يكون الهيكل المعتمد قياسيًا إلى حد ما:
.
└── coco
├── annotations
├── panoptic_semseg_train2017
├── panoptic_semseg_val2017
├── panoptic_train2017 -> annotations/panoptic_train2017
├── panoptic_val2017 -> annotations/panoptic_val2017
├── test2017
├── train2017
└── val2017
أخيرًا وليس آخرًا، قم بتغيير المسارات في configs/env/root_paths.yml
إلى جذر مجموعة البيانات ودليل الإخراج المطلوب على التوالي.
النهج المقدم ذو شقين: أولاً، نقوم بتدريب جهاز التشفير التلقائي لتمثيل خرائط التجزئة في مساحة ذات أبعاد أقل (على سبيل المثال، 64 × 64). بعد ذلك، نبدأ من نماذج الانتشار الكامن (LDM) المدربة مسبقًا، وخاصةً الانتشار المستقر، لتدريب نموذج يمكنه إنشاء أقنعة بانوبتيكية من صور RGB. يمكن تدريب النماذج عن طريق تشغيل الأوامر التالية. افتراضيًا، سوف نتدرب على مجموعة بيانات COCO باستخدام ملف التكوين الأساسي المحدد في tools/configs/base/base.yaml
. لاحظ أنه سيتم تحميل هذا الملف تلقائيًا لأننا نعتمد على حزمة hydra
.
python - W ignore tools / main_ae . py
datasets = coco
base . train_kwargs . fp16 = True
base . optimizer_name = adamw
base . optimizer_kwargs . lr = 1e-4
base . optimizer_kwargs . weight_decay = 0.05
يمكن العثور على مزيد من التفاصيل حول تمرير الوسائط في tools/scripts/train_ae.sh
. على سبيل المثال، أقوم بتشغيل هذا النموذج لـ 50 ألف تكرار على وحدة معالجة رسومات واحدة تبلغ سعتها 23 جيجابايت بإجمالي حجم دفعة يبلغ 16.
python - W ignore tools / main_ldm . py
datasets = coco
base . train_kwargs . gradient_checkpointing = True
base . train_kwargs . fp16 = True
base . train_kwargs . weight_dtype = float16
base . optimizer_zero_redundancy = True
base . optimizer_name = adamw
base . optimizer_kwargs . lr = 1e-4
base . optimizer_kwargs . weight_decay = 0.05
base . scheduler_kwargs . weight = 'max_clamp_snr'
base . vae_model_kwargs . pretrained_path = '$AE_MODEL'
يشير $AE_MODEL
إلى المسار إلى النموذج الذي تم الحصول عليه من الخطوة السابقة. يمكن العثور على مزيد من التفاصيل حول تمرير الوسائط في tools/scripts/train_diffusion.sh
. على سبيل المثال، قمت بتشغيل هذا النموذج لـ 200 ألف تكرار على 8 وحدات معالجة رسوميات سعة 16 جيجابايت بإجمالي حجم دفعة يبلغ 256.
نحن نخطط لإصدار العديد من النماذج المدربة. يتم توفير مقياس PQ (الحادي للفئة) في مجموعة التحقق من صحة COCO.
نموذج | #بارامس | مجموعة البيانات | التكرارات | PQ | ميدان | طلب البحث | رابط التحميل |
---|---|---|---|---|---|---|---|
إ | ~2 م | كوكو | 66 ألف | - | - | - | تنزيل (23 ميجابايت) |
LDM | ~800 م | كوكو | 200 ألف | 51.7 | 82.0 | 63.0 | تنزيل (3.3 جيجابايت) |
ملحوظة: AE الأقل قوة (أي طبقات الاختزال أو الاختزال الأقل) يمكن أن يفيد في كثير من الأحيان في الطلاء، حيث أننا لا نقوم بإجراء ضبط إضافي.
يجب أن يبدو التقييم كما يلي:
python - W ignore tools / main_ldm . py
datasets = coco
base . sampling_kwargs . num_inference_steps = 50
base . eval_only = True
base . load_path = $ PRETRAINED_MODEL_PATH
يمكنك إضافة معلمات إذا لزم الأمر. يمكن للعتبات الأعلى مثل --base.eval_kwargs.count_th 700
أو --base.eval_kwargs.mask_th 0.9
أن تزيد الأرقام بشكل أكبر. ومع ذلك، فإننا نستخدم القيم القياسية عن طريق تحديد العتبة عند 0.5 وإزالة الأجزاء ذات المساحة الأصغر من 512 للتقييم.
لتقييم نموذج تم تدريبه مسبقًا من الأعلى، قم بتشغيل tools/scripts/eval.sh
.
وهنا نتصور النتائج:
إذا وجدت هذا المستودع مفيدًا لبحثك، فيرجى التفكير في الاستشهاد بالمقالة التالية:
@article { vangansbeke2024ldmseg ,
title = { a simple latent diffusion approach for panoptic segmentation and mask inpainting } ,
author = { Van Gansbeke, Wouter and De Brabandere, Bert } ,
journal = { arxiv preprint arxiv:2401.10227 } ,
year = { 2024 }
}
لأية استفسارات، يرجى الاتصال بالمؤلف الرئيسي.
تم إصدار هذا البرنامج بموجب ترخيص المشاع الإبداعي الذي يسمح بالاستخدام الشخصي والبحثي فقط. للحصول على ترخيص تجاري يرجى الاتصال بالمؤلفين. يمكنك عرض ملخص الترخيص هنا.
أنا ممتن لجميع المستودعات العامة (انظر أيضًا المراجع في الكود)، وعلى وجه الخصوص لمكتبات Detectron2 ومكتبات الناشرين.