أشكان جانج 1 · هانغ سو 2 · تيان غو 1
1 معهد ورسستر للفنون التطبيقية 2 أبحاث نفيديا
لقد أصدرنا نسخة محسنة من HybridDepth، وهي متاحة الآن بميزات جديدة وأداء محسّن!
يقدم هذا العمل HybridDepth. HybridDepth هو حل عملي لتقدير العمق يعتمد على صور المكدس البؤري الملتقطة من الكاميرا. يتفوق هذا النهج على النماذج الحديثة عبر العديد من مجموعات البيانات المعروفة، بما في ذلك NYU V2 وDDFF12 وARKitScenes.
30-10-2024 : تم إصدار الإصدار 2 من HybridDepth مع أداء محسّن وأوزان مدربة مسبقًا.
30-10-2024 : دعم متكامل لـ TorchHub لسهولة تحميل النموذج واستدلاله.
2024-07-25 : الإصدار الأولي للنماذج المدربة مسبقًا.
23-07-2024 : تم إطلاق مستودع GitHub ونموذج HybridDepth.
ابدأ بسرعة باستخدام HybridDepth باستخدام دفتر ملاحظات Colab.
يمكنك تحديد نموذج تم تدريبه مسبقًا مباشرةً باستخدام TorchHub.
النماذج المدربة مسبقًا المتاحة:
HybridDepth_NYU5
: تم تدريبه مسبقًا على مجموعة بيانات NYU Depth V2 باستخدام إدخال مكدس بؤري خماسي، مع تدريب كل من فرع DFF وطبقة التحسين.
HybridDepth_NYU10
: تم تدريبه مسبقًا على مجموعة بيانات NYU Depth V2 باستخدام مدخلات مكدس ذات 10 بؤر، مع تدريب كل من فرع DFF وطبقة التحسين.
HybridDepth_DDFF5
: تم تدريبه مسبقًا على مجموعة بيانات DDFF باستخدام إدخال مكدس ذي 5 بؤر.
HybridDepth_NYU_PretrainedDFV5
: تم تدريبه مسبقًا فقط على طبقة التحسين باستخدام مجموعة بيانات NYU Depth V2 باستخدام مكدس 5 بؤري، بعد التدريب المسبق مع DFV.
model_name = 'HybridDepth_NYU_PretrainedDFV5' #change thismodel = torch.hub.load('cake-lab/HybridDepth', model_name , pretrained=True)model.eval()
استنساخ المستودع وتثبيت التبعيات:
استنساخ البوابة https://github.com/cake-lab/HybridDepth.gitcd HybridDepth كوندا إنف إنشاء -f بيئة.yml كوندا تنشيط العمق الهجين
تنزيل الأوزان المدربة مسبقًا:
قم بتحميل الأوزان الخاصة بالنموذج من الروابط أدناه ووضعها في دليل checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
تنبؤ
للاستدلال، يمكنك تشغيل الكود التالي:
# تحميل النموذج checkpointmodel_path = 'checkpoints/NYUBest5.ckpt'model = DepthNetModule.load_from_checkpoint(model_path)model.eval()model = model.to('cuda')
بعد تحميل النموذج، استخدم الكود التالي لمعالجة الصور المدخلة والحصول على خريطة العمق:
ملاحظة : حاليًا، تدعم وظيفة prepare_input_image
الصور بتنسيق .jpg
فقط. قم بتعديل الوظيفة إذا كنت بحاجة إلى دعم لتنسيقات الصور الأخرى.
from utils.io import Preparation_input_imagedata_dir = 'دليل صور المكدس البؤري' # المسار إلى صور المكدس البؤري في مجلد# تحميل المكدس البؤري Imagesfocal_stack, rgb_img, focus_dist = Prepar_input_image(data_dir)# تشغيل الاستدلال باستخدام torch.no_grad(): out = model (rgb_img، focus_stack، focus_dist) metric_ Deep = out[0].squeeze().cpu().numpy() # العمق المتري
يرجى أولاً تحميل الأوزان الخاصة بالنموذج من الروابط أدناه ووضعها في دليل checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
NYU Depth V2 : قم بتنزيل مجموعة البيانات باتباع الإرشادات المقدمة هنا.
DDFF12 : قم بتنزيل مجموعة البيانات باتباع الإرشادات المقدمة هنا.
ARKitScenes : قم بتنزيل مجموعة البيانات باتباع الإرشادات المقدمة هنا.
قم بإعداد ملف التكوين config.yaml
في دليل configs
. تتوفر الملفات التي تم تكوينها مسبقًا لكل مجموعة بيانات في دليل configs
، حيث يمكنك تحديد المسارات وإعدادات النموذج والمعلمات الفائقة الأخرى. فيما يلي مثال للتكوين:
البيانات: class_path: dataloader.dataset.NYUDataModule # المسار إلى وحدة تحميل البيانات الخاصة بك في dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # المسار إلى مجموعة البيانات المحددةimg_size: [480, 640] # اضبط بناءً على متطلبات DataModule الخاصة بكremove_white_border: Truenum_workers: 0 # اضبط على 0 في حالة استخدام علامات datause_labels الاصطناعية: Truemodel: invert_ Deep: True # Set إلى True إذا كان النموذج يُخرج Deepckpt_path مقلوبًا: نقاط التفتيش/checkpoint.ckpt
حدد ملف التكوين في البرنامج النصي test.sh
:
اختبار بايثون cli_run.py --config configs/config_file_name.yaml
ثم قم بتنفيذ التقييم باستخدام:
مخطوطات القرص المضغوط ش تقييم.ش
قم بتثبيت الحزمة المطلوبة المستندة إلى CUDA لتركيب الصور:
تثبيت python utils/synthetic/gauss_psf/setup.py
يؤدي هذا إلى تثبيت الحزمة اللازمة لتجميع الصور.
قم بإعداد ملف التكوين config.yaml
في دليل configs
، مع تحديد مسار مجموعة البيانات وحجم الدفعة ومعلمات التدريب الأخرى. يوجد أدناه نموذج تكوين للتدريب باستخدام مجموعة بيانات NYUv2:
النموذج: العمق العكسي: صحيح # معدل التعلم lr: 3e-4 # اضبط حسب الحاجة #انخفاض الوزن wd: 0.001 # اضبط البيانات حسب الحاجة: class_path: dataloader.dataset.NYUDataModule # المسار إلى وحدة تحميل البيانات الخاصة بك في dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # Dataset pathimg_size: [480, 640] # ضبط لـ NYUDataModuleremove_white_border: Truebatch_size: 24 # الضبط بناءً على الذاكرة المتوفرة: 0 # اضبط على 0 في حالة استخدام datause_labels الاصطناعية: Trueckpt_path: null
حدد ملف التكوين في البرنامج النصي train.sh
:
قطار بايثون cli_run.py --config configs/config_file_name.yaml
تنفيذ أمر التدريب:
مخطوطات القرص المضغوط قطار ش.sh
إذا كان عملنا يساعدك في بحثك، يرجى ذكره على النحو التالي:
@misc{ganj2024hybridعمقروبوستمتريديبث، العنوان={HybridDepth: اندماج العمق المتري القوي من خلال الاستفادة من العمق من التركيز والصورة الفردية المسبقة}، المؤلف={Ashkan Ganj and Hang Su and Tian Guo}، السنة={2024}، الطباعة الإلكترونية={2407.18443} ، أرشيفبريفيكس = {arXiv}، PrimaryClass={cs.CV}, url={https://arxiv.org/abs/2407.18443}, }