

SDFStudio هو إطار موحد ومعيار لإعادة بناء السطح الضمني العصبي ، الذي تم تصميمه فوق مشروع NerfStudio الرائع. نحن نقدم تنفيذًا موحدًا لثلاث طرق رئيسية لإعادة بناء السطح الضمنية: UniSurf و VolSDF و Neus. يدعم SDFStudio أيضًا العديد من تمثيلات المشهد ، مثل MLPs و Tri-Plane و Multi-De. شبكات الميزات ، واستراتيجيات أخذ عينات النقطة المتعددة مثل أخذ العينات الموجهة السطحية كما في UniSurf ، وأخذ العينات الموجهة في فوكسل من NeuralReconw. يدمج كذلك التطورات الحديثة في المنطقة مثل استخدام العظة أحادية (MONOSDF) وتنظيم الهندسة (UNISURF) والاتساق متعدد الرؤية (GEO-NEUS). بفضل التنفيذ الموحد والمعياري ، يجعل SDFStudio من السهل نقل الأفكار من طريقة إلى أخرى. على سبيل المثال ، يطبق Mono-Neus الفكرة من MonosDF إلى Neus ، ويطبق Geo-Volsdf الفكرة من Geo-Neus إلى Volsdf.
2023.06.16 : أضف bakedangelo الذي يجمع بين BakedSDF مع الشبكات العددية والتدريب التدريجي لـ Neuralangelo .
2023.06.16 : أضف neus-facto-angelo الذي يجمع بين neus-facto والأشبكات العددية والتدريب التدريجي لـ Neuralangelo .
2023.06.16 : دعم Neuralangelo.
2023.03.12 : دعم BakedSDF.
2022.12.28 : دعم إعادة بناء سطح RGB-D العصبي.
يجب تثبيت CUDA على النظام. تم اختبار هذه المكتبة مع الإصدار 11.3. يمكنك العثور على مزيد من المعلومات حول تثبيت CUDA هنا.
يتطلب sdfstudio python >= 3.7 . نوصي باستخدام كوندا لإدارة التبعيات. تأكد من تثبيت كوندا قبل المتابعة.
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pipتثبيت Pytorch مع CUDA (تم اختبار هذا الريبو مع CUDA 11.3) و Tiny-CUDA-NN
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install git+https://github.com/NVlabs/tiny-cuda-nn/ # subdirectory=bindings/torchgit clone https://github.com/autonomousvision/sdfstudio.git
cd sdfstudio
pip install --upgrade pip setuptools
pip install -e .
# install tab completion
ns-install-cliما يلي سيقوم بتدريب نموذج نيوس-باكو ،
# Download some test data: you might need to install curl if your system don't have that
ns-download-data sdfstudio
# Train model on the dtu dataset scan65
ns-train neus-facto --pipeline.model.sdf-field.inside-outside False --vis viewer --experiment-name neus-facto-dtu65 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
# Or you could also train model on the Replica dataset room0 with monocular priors
ns-train neus-facto --pipeline.model.sdf-field.inside-outside True --pipeline.model.mono-depth-loss-mult 0.1 --pipeline.model.mono-normal-loss-mult 0.05 --vis viewer --experiment-name neus-facto-replica1 sdfstudio-data --data data/sdfstudio-demo-data/replica-room0 --include_mono_prior Trueإذا نجح كل شيء ، فيجب أن ترى التقدم التدريبي التالي:

سيؤدي التنقل إلى الرابط في نهاية المحطة إلى تحميل WebViewer (تم تطويره بواسطة NerfStudio). إذا كنت تعمل على جهاز بعيد ، فستحتاج إلى نقل منفذ WebSocket للأمام (الافتراضي إلى 7007). باستخدام وحدة معالجة الرسومات RTX3090 ، يستغرق الأمر حوالي 15 دقيقة لتكرار 20 ألفًا ولكن يمكنك بالفعل رؤية نتائج إعادة بناء معقولة بعد تكرارات 2K في WebViewer.

من الممكن أيضًا تحميل نموذج مسبق من خلال التشغيل
ns-train neus-facto --trainer.load-dir {outputs/neus-facto-dtu65/neus-facto/XXX/sdfstudio_models} sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 هذا سوف يستأنف التدريب تلقائيا. إذا كنت لا ترغب في استئناف التدريب ، فأضف- --viewer.start-train False إلى أمر التدريب الخاص بك. لاحظ أن ترتيب الأمر مهم ، يجب أن يأتي المفصل الفرعي DataParser بعد الموافقة الفرعية النموذجية.
بمجرد أن يكون لديك نموذج مدرب ، يمكنك تصدير شبكة وتقديم الشبكة.
ns-extract-mesh --load-config outputs/neus-facto-dtu65/neus-facto/XXX/config.yml --output-path meshes/neus-facto-dtu65.ply ns-render-mesh --meshfile meshes/neus-facto-dtu65.ply --traj interpolate --output-path renders/neus-facto-dtu65.mp4 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
ستحصل على الفيديو التالي إذا كان كل شيء يعمل بشكل صحيح.
أولاً ، يجب علينا إنشاء مسار لمتابعة الكاميرا. يمكن القيام بذلك في العارض ضمن علامة التبويب "عرض". قم بتوجيه عرض ثلاثي الأبعاد الخاص بك إلى الموقع الذي ترغب فيه في البدء ، ثم اضغط على "إضافة كاميرا". سيؤدي هذا إلى تعيين إطار مفتاح الكاميرا الأول. تابع إلى وجهات النظر الجديدة إضافة كاميرات إضافية لإنشاء مسار الكاميرا. نحن نقدم معلمات أخرى لتحسين مسار الكاميرا الخاص بك. بمجرد أن تكون راضية ، اضغط على "Render" الذي سيعرض وسيط يحتوي على الأمر اللازم لتقديم الفيديو. اقتل وظيفة التدريب (أو قم بإنشاء محطة جديدة إذا كان لديك الكثير من الحساب) والأمر لإنشاء الفيديو.
لعرض جميع خيارات تصدير الفيديو تشغيل:
ns-render --helpنحن نقدم العديد من النماذج الأخرى غير Neus-Facto ، انظر الوثائق. على سبيل المثال ، إذا كنت ترغب في تدريب نموذج Neus الأصلي ، فاستخدم الأمر التالي:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 للحصول على قائمة كاملة من النماذج المشمولة Run ns-train --help . يرجى الرجوع إلى الوثائق للحصول على شرح أكثر تفصيلاً لكل طريقة.
يحتوي كل نموذج على العديد من المعلمات التي يمكن تغييرها ، والكثير من القائمة هنا. استخدم الأمر --help لمعرفة القائمة الكاملة لخيارات التكوين.
ملاحظة ، هذا الترتيب من المعلمات يهم! على سبيل المثال ، لا يمكنك تعيين- --machine.num-gpus بعد المعلمة- --data
ns-train neus-facto --help
يدعم NerfStudio ثلاث طرق مختلفة لتتبع تقدم التدريب ، وذلك باستخدام المشاهد ، والتوتر ، والأوزان والتحيزات. يمكن أيضًا استخدام أدوات التصور هذه في SDFStudio. يمكنك تحديد المرشح الذي يجب استخدامه بواسطة Applending --vis {viewer, tensorboard, wandb} إلى أمر التدريب. لاحظ أنه يمكن استخدام واحد فقط في وقت واحد. بالإضافة إلى ذلك ، يعمل المشاهد فقط على الأساليب التي تكون سريعة (أي NeuS-facto و NeuS-acc ) ، لطرق أبطأ مثل NeuS-facto-bigmlp ، استخدم loggers الأخرى.
يرجى الرجوع إلى مجموعات البيانات ووثائق تنسيق البيانات إذا كنت ترغب في استخدام مجموعات البيانات المخصصة.

إذا كنت تستخدم هذه المكتبة أو ابحث عن الوثائق المفيدة لبحثك ، فيرجى التفكير في الإشارة إلى:
@misc { Yu2022SDFStudio ,
author = { Yu, Zehao and Chen, Anpei and Antic, Bozidar and Peng, Songyou and Bhattacharyya, Apratim
and Niemeyer, Michael and Tang, Siyu and Sattler, Torsten and Geiger, Andreas } ,
title = { SDFStudio: A Unified Framework for Surface Reconstruction } ,
year = { 2022 } ,
url = { https://github.com/autonomousvision/sdfstudio } ,
}