Update dataparser docs (#1698)

* Update dataparser docs

* Add missing files
This commit is contained in:
Matthew Tancik authored and GitHub committed 2023-04-04 18:30:52 -07:00
1 parent 7126334976
commit 2e777e4577
13 files changed
+263 -97

No files matched your search

+1
View File
@@ -171,6 +171,7 @@ events.out.*
# Data
data
!*/data
!docs/reference/api/data/
# Misc
old/
+1
View File
@@ -42,6 +42,7 @@ extensions = [
"sphinx_design",
"sphinx.ext.mathjax",
"sphinxext.opengraph",
"sphinx.ext.viewcode",
]
# List of patterns, relative to source directory, that match files and
+16 -44
View File
@@ -30,8 +30,16 @@ class DataparserOutputs:
"""Color of dataset background."""
scene_box: SceneBox = SceneBox()
"""Scene box of dataset. Used to bound the scene or provide the scene scale depending on model."""
semantics: Optional[Semantics] = None
"""Semantics information."""
mask_filenames: Optional[List[Path]] = None
"""Filenames for any masks that are required"""
metadata: Dict[str, Any] = to_immutable_dict({})
"""Dictionary of any metadata that be required for the given experiment.
Will be processed by the InputDataset to create any additional tensors that may be required.
"""
dataparser_transform: TensorType[3, 4] = torch.eye(4)[:3, :]
"""Transform applied by the dataparser."""
dataparser_scale: float = 1.0
"""Scale applied by the dataparser."""
@dataclass
class DataParser:
@@ -115,48 +123,12 @@ You can also pull out information from the DataParserOutputs for other DataManga
ray_generator = RayGenerator(dataparser_outputs.cameras)
```
## Our Implementations
## Included DataParsers
Below we enumerate the various dataparsers that we have implemented in our codebase. Feel free to use ours or add your own. Also any contributions are welcome and appreciated!
```{toctree}
---
maxdepth: 2
---
###### Nerfstudio
This is our custom dataparser. We have a script to convert images or videos with COLMAP to this format.
```{button-link} https://github.com/nerfstudio-project/nerfstudio/blob/master/nerfstudio/data/dataparsers/nerfstudio_dataparser.py
:color: primary
:outline:
See the code!
```
###### Blender
We support the synthetic Blender dataset from the original NeRF paper.
```{button-link} https://github.com/nerfstudio-project/nerfstudio/blob/master/nerfstudio/data/dataparsers/blender_dataparser.py
:color: primary
:outline:
See the code!
```
###### Instant NGP
This supports the Instant NGP dataset.
```{button-link} https://github.com/nerfstudio-project/nerfstudio/blob/master/nerfstudio/data/dataparsers/instant_ngp_dataparser.py
:color: primary
:outline:
See the code!
```
###### Record3D
This dataparser can use recorded data from a >= iPhone 12 Pro using the [Record3D app](https://record3d.app/) . Record a video and export with the `EXR + JPG sequence` format. Unzip export and `rgb` folder before training.
For more information on capturing with Record3D, see the [Custom Dataset Docs](/quickstart/custom_dataset.md).
```{button-link} https://github.com/nerfstudio-project/nerfstudio/blob/master/nerfstudio/data/dataparsers/record3d_dataparser.py
:color: primary
:outline:
See the code!
../../reference/api/data/dataparsers
```
-39
View File
@@ -1,39 +0,0 @@
.. _dataset:
Data
============
Data Parsers
----------------
.. automodule:: nerfstudio.data.dataparsers
:members:
:show-inheritance:
Datasets
----------------
.. automodule:: nerfstudio.data.datasets
:members:
:show-inheritance:
Dataloaders
----------------
.. automodule:: nerfstudio.data.utils.dataloaders
:members:
:show-inheritance:
Pixel Samplers
----------------
.. automodule:: nerfstudio.data.pixel_samplers
:members:
:show-inheritance:
Scene Box
----------------
.. automodule:: nerfstudio.data.scene_box
:members:
:show-inheritance:
+31
View File
@@ -0,0 +1,31 @@
.. _datamanagers:
Datamanagers
============
Base
----------------
.. automodule:: nerfstudio.data.datamanagers.base_datamanager
:members:
Depth Datamanager
-----------------
.. automodule:: nerfstudio.data.datamanagers.depth_datamanager
:members:
:show-inheritance:
SDF Datamanager
----------------
.. automodule:: nerfstudio.data.datamanagers.sdf_datamanager
:members:
:show-inheritance:
Semantic Datamanager
---------------------
.. automodule:: nerfstudio.data.datamanagers.semantic_datamanager
:members:
:show-inheritance:
+117
View File
@@ -0,0 +1,117 @@
.. _dataparser:
Data Parsers
============
* `Base Data Parser`_
* `ARKitScenes`_
* `Blender`_
* `D-NeRF`_
* `dycheck`_
* `Instant-NGP`_
* `Minimal`_
* `NeRF-OSR`_
* `Nerfstudio`_
* `nuScenes`_
* `Phototourism`_
* `ScanNet`_
* `SDFStudio`_
* `sitcoms3D`_
Base Data Parser
----------------
.. automodule:: nerfstudio.data.dataparsers.base_dataparser
:members:
ARKitScenes
----------------
.. automodule:: nerfstudio.data.dataparsers.arkitscenes_dataparser
:members:
:show-inheritance:
Blender
----------------
.. automodule:: nerfstudio.data.dataparsers.blender_dataparser
:members:
:show-inheritance:
D-NeRF
----------------
.. automodule:: nerfstudio.data.dataparsers.dnerf_dataparser
:members:
:show-inheritance:
dycheck
----------------
.. automodule:: nerfstudio.data.dataparsers.dycheck_dataparser
:members:
:show-inheritance:
Instant-NGP
----------------
.. automodule:: nerfstudio.data.dataparsers.instant_ngp_dataparser
:members:
:show-inheritance:
Minimal
----------------
.. automodule:: nerfstudio.data.dataparsers.minimal_dataparser
:members:
:show-inheritance:
NeRF-OSR
----------------
.. automodule:: nerfstudio.data.dataparsers.nerfosr_dataparser
:members:
:show-inheritance:
Nerfstudio
----------------
.. automodule:: nerfstudio.data.dataparsers.nerfstudio_dataparser
:members:
:show-inheritance:
nuScenes
----------------
.. automodule:: nerfstudio.data.dataparsers.nuscenes_dataparser
:members:
:show-inheritance:
Phototourism
----------------
.. automodule:: nerfstudio.data.dataparsers.phototourism_dataparser
:members:
:show-inheritance:
ScanNet
----------------
.. automodule:: nerfstudio.data.dataparsers.scannet_dataparser
:members:
:show-inheritance:
SDFStudio
----------------
.. automodule:: nerfstudio.data.dataparsers.sdfstudio_dataparser
:members:
:show-inheritance:
sitcoms3D
----------------
.. automodule:: nerfstudio.data.dataparsers.sitcoms3d_dataparser
:members:
:show-inheritance:
+24
View File
@@ -0,0 +1,24 @@
.. _datasets:
Datasets
============
Base
----------------
.. automodule:: nerfstudio.data.datasets.base_dataset
:members:
SDF Dataset
----------------
.. automodule:: nerfstudio.data.datasets.sdf_dataset
:members:
:show-inheritance:
Semantic Dataset
----------------
.. automodule:: nerfstudio.data.datasets.semantic_dataset
:members:
:show-inheritance:
+26
View File
@@ -0,0 +1,26 @@
.. _dataset:
Data
============
.. toctree::
:titlesonly:
dataparsers
datamanagers
datasets
utils
Pixel Samplers
----------------
.. automodule:: nerfstudio.data.pixel_samplers
:members:
:show-inheritance:
Scene Box
----------------
.. automodule:: nerfstudio.data.scene_box
:members:
:show-inheritance:
+28
View File
@@ -0,0 +1,28 @@
.. _datautils:
Utils
============
Base
----------------
.. automodule:: nerfstudio.data.utils.colmap_parsing_utils
:members:
Data
----------------
.. automodule:: nerfstudio.data.utils.data_utils
:members:
Dataloader
----------------
.. automodule:: nerfstudio.data.utils.dataloaders
:members:
Nerfstudio Collate
-------------------
.. automodule:: nerfstudio.data.utils.nerfstudio_collate
:members:
+1 -1
View File
@@ -8,7 +8,7 @@ TODO: Explanation of each component
.. toctree::
config
data
data/index
fields
field_components/index
models
@@ -149,10 +149,11 @@ class DataManager(nn.Module):
Usage:
To get data, use the next_train and next_eval functions.
This data manager's next_train and next_eval methods will return 2 things:
1. A Raybundle: This will contain the rays we are sampling, with latents and
conditionals attached (everything needed at inference)
2. A "batch" of auxiliary information: This will contain the mask, the ground truth
pixels, etc needed to actually train, score, etc the model
1. A Raybundle: This will contain the rays we are sampling, with latents and
conditionals attached (everything needed at inference)
2. A "batch" of auxiliary information: This will contain the mask, the ground truth
pixels, etc needed to actually train, score, etc the model
Rationale:
Because of this abstraction we've added, we can support more NeRF paradigms beyond the
@@ -42,7 +42,7 @@ from nerfstudio.data.scene_box import SceneBox
CONSOLE = Console(width=120)
def find_files(directory: str, exts: List[str]):
def _find_files(directory: str, exts: List[str]):
"""Find all files in a directory that have a certain file extension.
Args:
@@ -94,8 +94,8 @@ def get_camera_params(
split_dir = f"{scene_dir}/{split}"
# camera parameters files
intrinsics_files = find_files(f"{split_dir}/intrinsics", exts=["*.txt"])
pose_files = find_files(f"{split_dir}/pose", exts=["*.txt"])
intrinsics_files = _find_files(f"{split_dir}/intrinsics", exts=["*.txt"])
pose_files = _find_files(f"{split_dir}/pose", exts=["*.txt"])
num_cams = len(pose_files)
@@ -219,12 +219,12 @@ class NeRFOSR(DataParser):
)
# --- images ---
image_filenames = find_files(f"{split_dir}/rgb", exts=["*.png", "*.jpg", "*.JPG", "*.PNG"])
image_filenames = _find_files(f"{split_dir}/rgb", exts=["*.png", "*.jpg", "*.JPG", "*.PNG"])
# --- masks ---
mask_filenames = []
if self.config.use_masks:
mask_filenames = find_files(f"{split_dir}/mask", exts=["*.png", "*.jpg", "*.JPG", "*.PNG"])
mask_filenames = _find_files(f"{split_dir}/mask", exts=["*.png", "*.jpg", "*.JPG", "*.PNG"])
dataparser_outputs = DataparserOutputs(
image_filenames=image_filenames,
@@ -39,10 +39,14 @@ class ScanNetDataParserConfig(DataParserConfig):
ScanNet dataset (https://www.scan-net.org/) is a large-scale 3D dataset of indoor scenes.
This dataparser assumes that the dense stream was extracted from .sens files.
Expected structure of scene directory:
- color/
- depth/
- intrinsic/
- pose/
.. code-block:: text
root/
├── color/
├── depth/
├── intrinsic/
├── pose/
"""
_target: Type = field(default_factory=lambda: ScanNet)