يتنبأ NoPoSplat بوجود Gaussians ثلاثي الأبعاد في مساحة أساسية من صور متفرقة غير موضوعة،
تمكين تركيب عرض جديد عالي الجودة وتقدير دقيق للوضع.
تثبيت
نقاط التفتيش المدربة مسبقًا
اتفاقيات الكاميرا
مجموعات البيانات
تشغيل الكود
شكر وتقدير
الاقتباس
يعتمد الكود الخاص بنا على Python 3.10+، وتم تطويره بناءً على PyTorch 2.1.2 وCUDA 11.8، ولكن يجب أن يعمل مع إصدارات Pytorch/CUDA الأعلى أيضًا.
استنساخ NoPoSplat.
استنساخ بوابة https://github.com/cvg/NoPoSplatcd NoPoSplat
قم بتهيئة البيئة، وهنا نعرض مثالاً باستخدام conda.
conda create -y -n noposplat python=3.10 كوندا تفعيل noposplat شعلة تثبيت النقطة ==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118 تثبيت النقطة -r متطلبات.txt
اختياريًا، قم بتجميع حبات cuda لـ RoPE (كما هو الحال في CroCo v2).
# يعتمد NoPoSplat على التضمينات الموضعية لـ RoPE والتي يمكنك من خلالها تجميع بعض نواة cuda من أجل وقت تشغيل أسرع.cd src/model/encoder/backbone/croco/curope/ بايثون setup.py build_ext --inplacecd ../../../../../..
يتم استضافة عارضاتنا على Hugging Face؟
اسم النموذج | قرارات التدريب | بيانات التدريب |
---|---|---|
re10k.ckpt | 256x256 | re10k |
acid.ckpt | 256x256 | حامض |
mixRe10kDl3dv.ckpt | 256x256 | re10k، dl3dv |
mixRe10kDl3dv_512x512.ckpt | 512x512 | re10k، dl3dv |
نحن نفترض أن الأوزان التي تم تنزيلها موجودة في دليل pretrained_weights
.
نظام الكاميرا لدينا هو نفس نظام PixelSplat. يتم تطبيع المصفوفات الجوهرية للكاميرا (يتم تقسيم الصف الأول حسب عرض الصورة، والصف الثاني مقسم حسب ارتفاع الصورة). المصفوفات الخارجية للكاميرا هي مصفوفات من الكاميرا إلى العالم بأسلوب OpenCV (+X لليمين، +Y للأسفل، و+Z تنظر الكاميرا إلى الشاشة).
يرجى الرجوع إلى DATASETS.md لإعداد مجموعة البيانات.
نقطة الدخول الرئيسية هي src/main.py
. اتصل به عبر:
# 8 وحدات معالجة رسوميات، بحجم كل دفعة = 16. قم بإزالة الوسيطتين الأخيرتين إذا كنت لا تريد استخدام wandb لتسجيل الدخولpython -m src.main +experiment=re10k wandb.mode=online wandb.name=re10k
يتطلب تكوين التدريب الافتراضي هذا 8 وحدات معالجة رسومات (GPU) بحجم دفعة يبلغ 16 على كل وحدة معالجة رسومات (> = ذاكرة 80 جيجابايت). سيستغرق التدريب حوالي 6 ساعات لإكماله. يمكنك ضبط حجم الدُفعة ليناسب أجهزتك، ولكن لاحظ أن تغيير حجم الدُفعة الإجمالي قد يتطلب تعديل معدل التعلم الأولي للحفاظ على الأداء. يمكنك الرجوع إلى re10k_1x8 للتدريب على وحدة معالجة الرسومات 1 A6000 (ذاكرة 48 جيجابايت)، والتي ستنتج أداءً مشابهًا.
# RealEstate10Kpython -m src.main +experiment=re10k mode=test wandb.name=re10k dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10k.json signaling.load=./pretrained_weights /re10k.ckpt test.save_image=true# RealEstate10Kpython -m src.main +experiment=acid mode=test wandb.name=acid dataset/[email protected]_sampler=تقييم dataset.re10k.view_sampler.index_path=assets/evaluation_index_acid .json Checkinging.load=./pretrained_weights/acid.ckpt test.save_image=true
يمكنك تعيين wandb.name=SAVE_FOLDER_NAME
لتحديد مسار الحفظ.
لتقييم أداء تقدير الوضعية، يمكنك تشغيل الأمر التالي:
# RealEstate10Kpython -m src.eval_pose +experiment=re10k +evaluation=eval_pose sectioning.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_re10 k.json # ACIDpython -m src.eval_pose +experiment=acid +evaluation=eval_pose signaling.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=evaluation dataset.re10k.view_sampler.index_path=assets/evaluation_index_acid.json # ScanNet-1500python -m src.eval_pose +experiment=scannet_pose +evaluation=eval_posecheckinging.load=./pretrained_weights/mixRe10kDl3dv.ckpt
لاحظ أننا نعرض هنا التقييم باستخدام النموذج المختلط الذي تم تدريبه على RealEstate10K وDL3DV. يمكنك استبدال مسار نقطة التفتيش بنماذج مدربة أخرى.
تم تطوير هذا المشروع باستخدام العديد من عمليات إعادة الشراء الرائعة: PixelSplat وDUSt3R وCroCo. نشكر المؤلفين الأصليين على عملهم الممتاز. نشكر المساعدة الطيبة التي قدمها ديفيد شاراتان لتوفير كود التقييم والنماذج المعدة مسبقًا لبعض الطرق السابقة.
@article{ye2024noposplat, title = {No Pose, No Problem: Surprisingly Simple 3D Gaussian Splats from Sparse Unposed Images}, author = {Ye, Botao and Liu, Sifei and Xu, Haofei and Xueting, Li and Pollefeys, Marc and Yang, Ming-Hsuan and Songyou, Peng}, journal = {arXiv preprint arXiv:xxxx.xxxx}, year = {2024} }