← 开源
google

nerfies

This is the code for Deformable Neural Radiance Fields, a.k.a. Nerfies.

Model DevelopmentArchitecturePython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
1.97k
Star
277
Fork
+2
本周
2
贡献者
创建于 2021-01-21 · 更新于 2026-10-13 · 今日第 9169 名
主要开发者
zaxioms0JamesPerlman

google/nerfies 排名第 9,169,有 1,974 个星标。

同类别比较

google/nerfies 排名第 9,169,此处有 8 个同类条目;SummitKwan/transparent_latent_gan 排名第 9,167。

同类别比较
名称排名指标
patrikhuber/eos9,152
语言:
C++
星标数:
1,982
分叉数:
592
简介:
A lightweight 3D Morphable Face Model library in modern C++
ZiyaoGeng/RecLearn9,153
语言:
Python
星标数:
1,981
分叉数:
487
简介:
Recommender Learning with Tensorflow2.x
JavierAntoran/Bayesian-Neural-Networks9,164
语言:
Jupyter Notebook
星标数:
1,976
分叉数:
306
简介:
Pytorch implementations of Bayes By Backprop, MC Dropout, SGLD, the Local Reparametrization Trick, KF-Laplace, SG-HMC and more
SummitKwan/transparent_latent_gan9,167
语言:
Python
星标数:
1,975
分叉数:
357
简介:
Use supervised learning to illuminate the latent space of GAN for controlled generation and edit
google-deepmind/mathematics_dataset9,172
语言:
Python
星标数:
1,971
分叉数:
275
简介:
This dataset code generates mathematical question and answer pairs, from a range of question types at roughly school-level difficulty.
Farama-Foundation/Gymnasium-Robotics9,187
语言:
Python
星标数:
1,959
分叉数:
156
简介:
A collection of robotics simulation environments for reinforcement learning
openai/pixel-cnn9,194
语言:
Python
星标数:
1,956
分叉数:
433
简介:
Code for the paper "PixelCNN++: A PixelCNN Implementation with Discretized Logistic Mixture Likelihood and Other Modifications"
philipperemy/tensorflow-1.4-billion-password-analysis9,196
语言:
Python
星标数:
1,956
分叉数:
389
简介:
Deep Learning model to analyze a large corpus of clear text passwords.
关键参数与规格
关键参数与规格
参数值
语言Python
类别Model Development
子类别Architecture
关键词3D, Computer vision
星标数1,974
分叉数277
贡献者2
创建日期2021-01-21
更新日期2026-10-13
1 天星标数0
7 天星标数2
排名9,169
上次排名9,211
排名变化42
7 天星标排名7,875
上次 7 天星标排名9,585
7 天星标排名变化1,710
总星标排名6,427
上次总星标排名6,422
总星标排名变化-5
国家USA
README 摘录

Nerfies: Deformable Neural Radiance Fields This is the code for Nerfies: Deformable Neural Radiance Fields. Project Page Paper Video This codebase is implemented using JAX, building on JaxNeRF. This repository has been updated to reflect the version used for our ICCV 2021 submission. Demo We provide an easy-to-get-started demo using Google Colab! These Colabs will allow you to train a basic version of our method using Cloud TPUs (or GPUs) on Google Colab. Note that due to

limited compute resources available, these are not the fully featured models. If you would like to train a fully featured Nerfie, please refer to the instructions below on how to train on your own machine. (It may run with lower versions, but we have not tested it). We recommend using Miniconda and setting up an environment: Next, install the required packages: Install the appropriate JAX distribution for your environment by following the instructions here. For example: Training After preparing a

dataset, you can train a Nerfie by running: To plot telemetry to Tensorboard and render checkpoints on the fly, also launch an evaluation job by running: The two jobs should use a mutually exclusive set of GPUs. This division allows the training job to run without having to stop for evaluation. Configuration We use Gin for configuration. We provide a couple preset configurations. Please refer to for documentation on what each configuration does. Preset configs: Training on fewer GPUs will

require tuning of the batch size and learning rates. We've provided an example configuration for 4 GPUs in but we have not tested it, so please only use it as a reference. Datasets A dataset is a directory with the following structure: At a high level, a dataset is simply the following: A collection of images (e. We have a unique identifier for each image which we call , and this is used to match the camera and images. An can

be any string, but typically it is some alphanumeric string such as . * This directory contains cameras corresponding to each image. We use a camera model identical to the OpenCV camera model, which is also supported by COLMAP. Each camera is a serialized version of the class defined in and looks like this: * This directory contains test-time camera paths which can be used to render videos. Each sub-directory in this path should contain a sequence of JSON files. The

naming scheme does not matter, but the cameras will be sorted by their filenames. * This directory contains images at various scales. Each subdirectory should be named where is an integer scaling factor. For example, would contain the original images while would contain images a quarter of the size. It is important the scaled images are integer factors of the original to allow the use of area relation when scaling the images to prevent Moiré. A simple way to do this

is to simply trim the borders of the image to be divisible by the maximum scale factor you want. * This

常见问题

记录了多少星标和分叉?

google/nerfies 有 1,974 个星标和 277 个分叉。

仓库排名是多少?

google/nerfies 排名第 9,169。

记录的语言和类别是什么?

google/nerfies 有 1,974 个星标,语言为 Python,类别为 Model Development。

哪个仓库排名最接近?

google/nerfies 与 SummitKwan/transparent_latent_gan 比较,后者排名第 9,167,有 1,975 个星标。

README

Nerfies: Deformable Neural Radiance Fields

This is the code for Nerfies: Deformable Neural Radiance Fields.

This codebase is implemented using JAX, building on JaxNeRF.

This repository has been updated to reflect the version used for our ICCV 2021 submission.

Demo

We provide an easy-to-get-started demo using Google Colab!

These Colabs will allow you to train a basic version of our method using Cloud TPUs (or GPUs) on Google Colab.

Note that due to limited compute resources available, these are not the fully featured models. If you would like to train a fully featured Nerfie, please refer to the instructions below on how to train on your own machine.

Description Link
Process a video into a Nerfie dataset
Train a Nerfie
Render a Nerfie video

Setup

The code can be run under any environment with Python 3.8 and above. (It may run with lower versions, but we have not tested it).

We recommend using Miniconda and setting up an environment:

conda create --name nerfies python=3.8

Next, install the required packages:

pip install -r requirements.txt

Install the appropriate JAX distribution for your environment by following the instructions here. For example:

# For CUDA version 11.0
pip install --upgrade "jax[cuda111]" -f https://storage.googleapis.com/jax-releases/jax_releases.html

Training

After preparing a dataset, you can train a Nerfie by running:

export DATASET_PATH=/path/to/dataset
export EXPERIMENT_PATH=/path/to/save/experiment/to
python train.py \
    --data_dir $DATASET_PATH \
    --base_folder $EXPERIMENT_PATH \
    --gin_configs configs/test_vrig.gin

To plot telemetry to Tensorboard and render checkpoints on the fly, also launch an evaluation job by running:

python eval.py \
    --data_dir $DATASET_PATH \
    --base_folder $EXPERIMENT_PATH \
    --gin_configs configs/test_vrig.gin

The two jobs should use a mutually exclusive set of GPUs. This division allows the training job to run without having to stop for evaluation.

Configuration

  • We use Gin for configuration.
  • We provide a couple preset configurations.
  • Please refer to config.py for documentation on what each configuration does.
  • Preset configs:
    • gpu_vrig_paper.gin: This is the configuration we used to generate the table in the paper. It requires 8 GPUs for training.
    • gpu_fullhd.gin: This is a high-resolution model and will take around 3 days to train on 8 GPUs.
    • gpu_quarterhd.gin: This is a low-resolution model and will take around 14 hours to train on 8 GPUs.
    • test_local.gin: This is a test configuration to see if the code runs. It probably will not result in a good looking result.
    • test_vrig.gin: This is a test configuration to see if the code runs for validation rig captures. It probably will not result in a good looking result.
  • Training on fewer GPUs will require tuning of the batch size and learning rates. We've provided an example configuration for 4 GPUs in gpu_quarterhd_4gpu.gin but we have not tested it, so please only use it as a reference.

Datasets

A dataset is a directory with the following structure:

dataset
    ├── camera
    │   └── ${item_id}.json
    ├── camera-paths
    ├── rgb
    │   ├── ${scale}x
    │   └── └── ${item_id}.png
    ├── metadata.json
    ├── points.npy
    ├── dataset.json
    └── scene.json

At a high level, a dataset is simply the following:

  • A collection of images (e.g., from a video).
  • Camera parameters for each image.

We have a unique identifier for each image which we call item_id, and this is used to match the camera and images. An item_id can be any string, but typically it is some alphanumeric string such as 000054.

camera

  • This directory contains cameras corresponding to each image.
  • We use a camera model identical to the OpenCV camera model, which is also supported by COLMAP.
  • Each camera is a serialized version of the Camera class defined in camera.py and looks like this:
{
  // A 3x3 world-to-camera rotation matrix representing the camera orientation.
  "orientation": [
    [0.9839, -0.0968, 0.1499],
    [-0.0350, -0.9284, -0.3699],
    [0.1749, 0.358, -0.9168]
  ],
  // The 3D position of the camera in world-space.
  "position": [-0.3236, -3.26428, 5.4160],
  // The focal length of the camera.
  "focal_length": 2691,
  // The principle point [u_0, v_0] of the camera.
  "principal_point": [1220, 1652],
  // The skew of the camera.
  "skew": 0.0,
  // The aspect ratio for the camera pixels.
  "pixel_aspect_ratio": 1.0,
  // Parameters for the radial distortion of the camera.
  "radial_distortion": [0.1004, -0.2090, 0.0],
  // Parameters for the tangential distortion of the camera.
  "tangential": [0.001109, -2.5733e-05],
  // The image width and height in pixels.
  "image_size": [2448, 3264]
}

camera-paths

  • This directory contains test-time camera paths which can be used to render videos.
  • Each sub-directory in this path should contain a sequence of JSON files.
  • The naming scheme does not matter, but the cameras will be sorted by their filenames.

rgb

  • This directory contains images at various scales.
  • Each subdirectory should be named ${scale}x where ${scale} is an integer scaling factor. For example, 1x would contain the original images while 4x would contain images a quarter of the size.
  • We assume the images are in PNG format.
  • It is important the scaled images are integer factors of the original to allow the use of area relation when scaling the images to prevent Moiré. A simple way to do this is to simply trim the borders of the image to be divisible by the maximum scale factor you want.

metadata.json

  • This defines the 'metadata' IDs used for embedding lookups.
  • Contains a dictionary of the following format:
{
    "${item_id}": {
        // The embedding ID used to fetch the deformation latent code
        // passed to the deformation field.
        "warp_id": 0,
        // The embedding ID used to fetch the appearance latent code
        // which is passed to the second branch of the template NeRF.
        "appearance_id": 0,
        // For validation rig datasets, we use the camera ID instead
        // of the appearance ID. For example, this would be '0' for the
        // left camera and '1' for the right camera. This can potentially
        // also be used for multi-view setups as well.
        "camera_id": 0
    },
    ...
},

scene.json

  • Contains information about how we will parse the scene.
  • See comments inline.
{
  // The scale factor we will apply to the pointcloud and cameras. This is
  // important since it controls what scale is used when computing the positional
  // encoding.
  "scale": 0.0387243672920458,
  // Defines the origin of the scene. The scene will be translated such that
  // this point becomes the origin. Defined in unscaled coordinates.
  "center": [
    1.1770838526103944e-08,
    -2.58235339289195,
    -1.29117656263135
  ],
  // The distance of the near plane from the camera center in scaled coordinates.
  "near": 0.02057418950149491,
  // The distance of the far plane from the camera center in scaled coordinates.
  "far": 0.8261601717667288
}

dataset.json

  • Defines the training/validation split of the dataset.
  • See inline comments:
{
  // The total number of images in the dataset.
  "count": 114,
  // The total number of training images (exemplars) in the dataset.
  "num_exemplars": 57,
  // A list containins all item IDs in the dataset.
  "ids": [...],
  // A list containing all training item IDs in the dataset.
  "train_ids": [...],
  // A list containing all validation item IDs in the dataset.
  // This should be mutually exclusive with `train_ids`.
  "val_ids": [...],
}

points.npy

  • A numpy file containing a single array of size (N,3) containing the background points.
  • This is required if you want to use the background regularization loss.

Citing

If you find our work useful, please consider citing:

@article{park2021nerfies
  author    = {Park, Keunhong 
               and Sinha, Utkarsh 
               and Barron, Jonathan T. 
               and Bouaziz, Sofien 
               and Goldman, Dan B 
               and Seitz, Steven M. 
               and Martin-Brualla, Ricardo},
  title     = {Nerfies: Deformable Neural Radiance Fields},
  journal   = {ICCV},
  year      = {2021},
}
排名相邻
同类项目