


https://www.nerfacc.com/
[الأخبار] 2023/04/04. إذا كنت تستخدم nerfacc <= 0.3.5 وترغب في الترحيل إلى أحدث إصدار لدينا ( nerfacc >= 0.5.0 ) ، يرجى التحقق من changelog حول كيفية الترحيل.
NERFACC هو صندوق أدوات تسريع PYTORCH NERF لكل من التدريب والاستدلال. إنه يركز على أخذ العينات الفعالة في خط أنابيب التقديم الحجمي لحقول الإرود ، وهو عالمي وتوصيل ولعب لمعظم NERFs. مع الحد الأدنى من التعديلات على Codebases الحالية ، يوفر NERFACC سرعات كبيرة في تدريب أوراق NERF الحديثة. وهي واجهة بيثون نقية مع واجهات برمجة التطبيقات المرنة!

الاعتماد : يرجى تثبيت Pytorch أولاً.
الطريقة الأسهل هي التثبيت من PYPI. وبهذه الطريقة ، ستقوم ببناء رمز CUDA في المدى الأول (JIT).
pip install nerfacc
أو تثبيت من المصدر. وبهذه الطريقة ، ستقوم ببناء رمز CUDA أثناء التثبيت.
pip install git+https://github.com/nerfstudio-project/nerfacc.git
نحن نقدم أيضًا عجلات مصممة مسبقًا تغطي مجموعات رئيسية من Pytorch + CUDA بدعم من Pytorch الرسمي.
# e.g., torch 1.13.0 + cu117
pip install nerfacc -f https://nerfacc-bucket.s3.us-west-2.amazonaws.com/whl/torch-1.13.0_cu117.html
| Windows & Linux | cu113 | cu115 | cu116 | cu117 | cu118 |
|---|---|---|---|---|---|
| الشعلة 1.11.0 | ✅ | ✅ | |||
| الشعلة 1.12.0 | ✅ | ✅ | |||
| الشعلة 1.13.0 | ✅ | ✅ | |||
| الشعلة 2.0.0 | ✅ | ✅ |
بالنسبة للإصدار السابق من Nerfacc ، يرجى التحقق هنا من العجلات المدعومة مسبقًا.
تتمثل فكرة NERFACC في إجراء أخذ العينات الحجمي الفعالة مع مقدر رخيص من الناحية الحسابية لاكتشاف الأسطح. لذلك يمكن لـ NERFACC العمل مع أي حقل إشعاع محدد من قبل المستخدم. لتوصيل خط أنابيب عرض NerfACC في الكود الخاص بك والاستمتاع بالتسارع ، تحتاج فقط إلى تحديد وظيفتين مع حقل الراديو الخاص بك.
sigma_fn : حساب الكثافة في كل عينة. سيتم استخدامه من قبل المقدر (على سبيل المثال ، nerfacc.OccGridEstimator ، nerfacc.PropNetEstimator ) لاكتشاف الأسطح.rgb_sigma_fn : حساب اللون والكثافة في كل عينة. سيتم استخدامه من قبل nerfacc.rendering لإجراء عرض حجمي قابل للتمييز. ستتلقى هذه الوظيفة التدرجات لتحديث حقل الإشعاع الخاص بك.مثال بسيط هو مثل هذا:
import torch
from torch import Tensor
import nerfacc
radiance_field = ... # network: a NeRF model
rays_o : Tensor = ... # ray origins. (n_rays, 3)
rays_d : Tensor = ... # ray normalized directions. (n_rays, 3)
optimizer = ... # optimizer
estimator = nerfacc . OccGridEstimator (...)
def sigma_fn (
t_starts : Tensor , t_ends : Tensor , ray_indices : Tensor
) -> Tensor :
""" Define how to query density for the estimator."""
t_origins = rays_o [ ray_indices ] # (n_samples, 3)
t_dirs = rays_d [ ray_indices ] # (n_samples, 3)
positions = t_origins + t_dirs * ( t_starts + t_ends )[:, None ] / 2.0
sigmas = radiance_field . query_density ( positions )
return sigmas # (n_samples,)
def rgb_sigma_fn (
t_starts : Tensor , t_ends : Tensor , ray_indices : Tensor
) -> Tuple [ Tensor , Tensor ]:
""" Query rgb and density values from a user-defined radiance field. """
t_origins = rays_o [ ray_indices ] # (n_samples, 3)
t_dirs = rays_d [ ray_indices ] # (n_samples, 3)
positions = t_origins + t_dirs * ( t_starts + t_ends )[:, None ] / 2.0
rgbs , sigmas = radiance_field ( positions , condition = t_dirs )
return rgbs , sigmas # (n_samples, 3), (n_samples,)
# Efficient Raymarching:
# ray_indices: (n_samples,). t_starts: (n_samples,). t_ends: (n_samples,).
ray_indices , t_starts , t_ends = estimator . sampling (
rays_o , rays_d , sigma_fn = sigma_fn , near_plane = 0.2 , far_plane = 1.0 , early_stop_eps = 1e-4 , alpha_thre = 1e-2 ,
)
# Differentiable Volumetric Rendering.
# colors: (n_rays, 3). opacity: (n_rays, 1). depth: (n_rays, 1).
color , opacity , depth , extras = nerfacc . rendering (
t_starts , t_ends , ray_indices , n_rays = rays_o . shape [ 0 ], rgb_sigma_fn = rgb_sigma_fn
)
# Optimize: Both the network and rays will receive gradients
optimizer . zero_grad ()
loss = F . mse_loss ( color , color_gt )
loss . backward ()
optimizer . step () قبل تشغيل هذه البرامج النصية على سبيل المثال ، يرجى التحقق من البرنامج النصي حول مجموعة البيانات اللازمة ، وتنزيل مجموعة البيانات أولاً. يمكنك استخدام --data_root لتحديد المسار.
# clone the repo with submodules.
git clone --recursive git://github.com/nerfstudio-project/nerfacc/انظر المعايير الكاملة هنا: https://www.nerfacc.com/en/stable/examples/static.html
NGP الفوري على مجموعة بيانات NERF-Synthetic مع أداء أفضل في 4.5 دقيقة.
# Occupancy Grid Estimator
python examples/train_ngp_nerf_occ.py --scene lego --data_root data/nerf_synthetic
# Proposal Net Estimator
python examples/train_ngp_nerf_prop.py --scene lego --data_root data/nerf_syntheticNGP الفوري على مجموعة بيانات MIP-NERF 360 مع أداء أفضل في 5 دقائق.
# Occupancy Grid Estimator
python examples/train_ngp_nerf_occ.py --scene garden --data_root data/360_v2
# Proposal Net Estimator
python examples/train_ngp_nerf_prop.py --scene garden --data_root data/360_v2الفانيليا MLP NERF على مجموعة بيانات NERF-Synthetic في ساعة واحدة.
# Occupancy Grid Estimator
python examples/train_mlp_nerf.py --scene lego --data_root data/nerf_syntheticTensorf on Tanks & Temple و NERF-Synthetic Cets (البرنامج المساعد في قاعدة الشفرة الرسمية).
cd benchmarks/tensorf/
# (set up the environment for that repo)
bash script.sh nerfsyn-nerfacc-occgrid 0
bash script.sh tt-nerfacc-occgrid 0انظر المعايير الكاملة هنا: https://www.nerfacc.com/en/stable/examples/dynamic.html
T-NERF على مجموعة بيانات D-NERF في ساعة واحدة.
# Occupancy Grid Estimator
python examples/train_mlp_tnerf.py --scene lego --data_root data/dnerfK-Lanes على مجموعة بيانات D-RENF (المكون الإضافي في قاعدة الشفرة الرسمية).
cd benchmarks/kplanes/
# (set up the environment for that repo)
bash script.sh dnerf-nerfacc-occgrid 0TINUVOX على مجموعات بيانات Hypernerf و D-NERF (البرنامج المساعد في قاعدة الشفرة الرسمية).
cd benchmarks/tineuvox/
# (set up the environment for that repo)
bash script.sh dnerf-nerfacc-occgrid 0
bash script.sh hypernerf-nerfacc-occgrid 0
bash script.sh hypernerf-nerfacc-propnet 0انظر المعايير الكاملة هنا: https://www.nerfacc.com/en/stable/examples/camera.html
BARF على مجموعة بيانات NERF-Synthetic (البرنامج المساعد في قاعدة الشفرة الرسمية).
cd benchmarks/barf/
# (set up the environment for that repo)
bash script.sh nerfsyn-nerfacc-occgrid 0 @article { li2023nerfacc ,
title = { NerfAcc: Efficient Sampling Accelerates NeRFs. } ,
author = { Li, Ruilong and Gao, Hang and Tancik, Matthew and Kanazawa, Angjoo } ,
journal = { arXiv preprint arXiv:2305.04966 } ,
year = { 2023 }
}