Skip to content

Commit

Permalink
Update README (#528)
Browse files Browse the repository at this point in the history
Signed-off-by: Clement Fuji Tsang <cfujitsang@nvidia.com>
  • Loading branch information
Caenorst committed Feb 7, 2022
1 parent 9340f8d commit e5148d0
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 21 deletions.
52 changes: 42 additions & 10 deletions README.md
Expand Up @@ -13,47 +13,79 @@ Kaolin library is part of a larger suite of tools for 3D deep learning research.

Visit the [Kaolin Library Documentation](https://kaolin.readthedocs.io/en/latest/) to get started!

## About this Update
## About the Latest Release (0.10.0)

With the version 0.9 release we have revamped the entire Kaolin library, redesigned the API, rewrote and optimized operations and removed unreliable or outdated code. Although this may appear to be a smaller library than our [original release](https://github.com/NVIDIAGameWorks/kaolin/tree/v0.1), test-driven development of Kaolin>=0.9 ensures reliable functionality and timely updates from now on. See [change logs](https://github.com/NVIDIAGameWorks/kaolin/releases/tag/v0.9.0) for details.
With the version 0.10.0 we are focusing on Volumetric rendering, adding new features for tetrahedral meshes, including DefTet volumetric renderer and losses, and Deep Marching Tetrahedrons, and adding new primitive operations for efficient volumetric rendering of Structured Point Clouds, we are also adding support for materials with USD importation.

Finally we are adding two new tutorials to show how to use the latest features from Kaolin:
* [How to use DMtet](examples/tutorial/dmtet_tutorial.ipynb) to rencontruct a mesh from point clouds generated by the Omniverse Kaolin App

<p float="left">
<a href="examples/tutorial/dmtet_tutorial.ipynb">
<img alt="DMtet Tutorial" src="examples/samples/dash3d_mesh.png" width="400" />
</a>
</p>

* An [Introduction to Structured Point Clouds](examples/tutorial/understanding_spcs_tutorial.ipynb), with conversion from mesh and interactive visualization with raytracing.

<p float="left">
<a href="examples/tutorial/understanding_spcs_tutorial.ipynb">
<img alt="SPC Tutorial" src="assets/spc_tutorial.gif" width="400" />
</a>
</p>

See [change logs](https://github.com/NVIDIAGameWorks/kaolin/releases/tag/v0.10.0) for details.

## Contributing

Please review our [contribution guidelines](CONTRIBUTING.md).

## External Projects using Kaolin

* [gradSim: Differentiable simulation for system identification and visuomotor control](https://github.com/gradsim/gradsim):
* Use [DIB-R rasterizer](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#kaolin.render.mesh.dibr_rasterization), [obj loader](https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.obj.html#kaolin.io.obj.import_mesh) and [timelapse](https://kaolin.readthedocs.io/en/latest/modules/kaolin.visualize.html#kaolin.visualize.Timelapse)
* [Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer](https://github.com/nv-tlabs/DIB-R-Single-Image-3D-Reconstruction/tree/2cfa689881145c8e0647ae8dd077e55b5a578658):
* Use [Kaolin's DIB-R rasterizer](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#kaolin.render.mesh.dibr_rasterization), [camera functions](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.camera.html) and [Timelapse](https://kaolin.readthedocs.io/en/latest/modules/kaolin.visualize.html#kaolin.visualize.Timelapse) for 3D checkpoints.
* [Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Surfaces](https://github.com/nv-tlabs/nglod):
* Use [SPC](https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.spc.html) conversions and [ray-tracing](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.spc.html#kaolin.render.spc.unbatched_raytrace), yielding 30x memory and 3x training time reduction.
* [Learning Deformable Tetrahedral Meshes for 3D Reconstruction](https://github.com/nv-tlabs/DefTet):
* Use [Kaolin's DefTet volumetric renderer](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#kaolin.render.mesh.deftet_sparse_render), [tetrahedral losses](https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.tetmesh.html), [camera_functions](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.camera.html), [mesh operators and conversions](https://kaolin.readthedocs.io/en/latest/modules/kaolin.ops.html), [ShapeNet dataset](https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.shapenet.html#kaolin.io.shapenet.ShapeNetV1), [point_to_mesh_distance](https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.trianglemesh.html#kaolin.metrics.trianglemesh.point_to_mesh_distance)and [sided_distance](https://kaolin.readthedocs.io/en/latest/modules/kaolin.metrics.pointcloud.html#kaolin.metrics.pointcloud.sided_distance).
* [Text2Mesh](https://github.com/threedle/text2mesh):
* Use [Kaolin's rendering functions](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.mesh.html#), [camera functions](https://kaolin.readthedocs.io/en/latest/modules/kaolin.render.camera.html), and [obj](https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.obj.html#kaolin.io.obj.import_mesh) and [off](https://kaolin.readthedocs.io/en/latest/modules/kaolin.io.off.html#kaolin.io.off.import_mesh) importers.

## Citation

If you found this codebase useful in your research, please cite

```
@article{Kaolin,
title = {Kaolin: A PyTorch Library for Accelerating 3D Deep Learning Research},
author = {Krishna Murthy Jatavallabhula and Edward Smith and Jean-Francois Lafleche and Clement Fuji Tsang and Artem Rozantsev and Wenzheng Chen and Tommy Xiang and Rev Lebaredian and Sanja Fidler},
journal = {arXiv:1911.05063},
@misc{Kaolin2019,
author = {Clement Fuji Tsang and Masha Shugrina and Jean Francois Lafleche and Towaki Takikawa and Jiehan Wang and Charles Loop and Wenzheng Chen and Krishna Murthy Jatavallabhula and Edward Smith and Artem Rozantsev and Or Perel and Frank Shen and Jun Gao and Sanja Fidler and Gavriel State and Jason Gorski and Tommy Xiang and Jianing Li and Michael Li and Rev Lebaredian}
title = {Kaolin}
year = {2019}
}
```

## Contributors

Current Team:

- Project Lead: Clement Fuji Tsang
- Technical Lead: Clement Fuji Tsang
- Manager: Masha Shugrina
- Jean-Francois Lafleche
- Charles Loop
- Masha Shugrina
- Or Perel
- Towaki Takikawa
- Jiehan Wang

Other Majors Contributors:

- Wenzheng Chen
- Sanja Fidler
- Jun Gao
- Jason Gorski
- Rev Lebaredian
- Jianing Li
- Michael Li
- Krishna Murthy
- Krishna Murthy Jatavallabhula
- Artem Rozantsev
- Frank Shen
- Edward Smith
Expand Down
Binary file added assets/spc_tutorial.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/conf.py
Expand Up @@ -40,8 +40,8 @@

intersphinx_mapping = {
'python': ("https://docs.python.org/3", None),
'numpy': ('http://docs.scipy.org/doc/numpy/', None),
'PyTorch': ('http://pytorch.org/docs/master/', None),
'numpy': ('https://numpy.org/doc/stable/', None),
'PyTorch': ('https://pytorch.org/docs/master/', None),
}

master_doc = 'index'
Expand Down
6 changes: 3 additions & 3 deletions docs/notes/installation.rst
Expand Up @@ -17,7 +17,7 @@ Requirements
Dependencies
------------

* torch >= 1.5, <= 1.9.0
* torch >= 1.5, <= 1.10.2
* cython == 0.29.20
* scipy >= 1.2.0
* Pillow >= 8.0.0
Expand All @@ -44,11 +44,11 @@ To install the library. You must first clone the repository:
$ git clone --recursive https://github.com/NVIDIAGameWorks/kaolin
$ cd kaolin
If instead of the latest version you want a specific release like 0.9.0, 0.9.1 or 0.1 you can then select the tag, example:
If instead of the latest version you want a specific release like 0.10.0, 0.9.0, 0.9.1 or 0.1 you can then select the tag, example:

.. code-block:: bash
$ git checkout v0.9.1
$ git checkout v0.10.0
To enable installation of experimental features, set
environment variable
Expand Down
15 changes: 9 additions & 6 deletions setup.py
Expand Up @@ -14,7 +14,7 @@
import warnings

TORCH_MIN_VER = '1.5.0'
TORCH_MAX_VER = '1.9.0'
TORCH_MAX_VER = '1.10.2'
CYTHON_MIN_VER = '0.29.20'
INCLUDE_EXPERIMENTAL = os.getenv('KAOLIN_INSTALL_EXPERIMENTAL') is not None
IGNORE_TORCH_VER = os.getenv('IGNORE_TORCH_VER') is not None
Expand Down Expand Up @@ -117,18 +117,21 @@ def get_cuda_bare_metal_version(cuda_dir):
# Extension builds after https://github.com/pytorch/pytorch/pull/23408 attempt to query torch.cuda.get_device_capability(),
# which will fail if you are compiling in an environment without visible GPUs (e.g. during an nvidia-docker build command).
logging.warning(
"Torch did not find available GPUs on this system.\n",
"Torch did not find available GPUs on this system.\n"
"If your intention is to cross-compile, this is not an error.\n"
"By default, Apex will cross-compile for Pascal (compute capabilities 6.0, 6.1, 6.2),\n"
"Volta (compute capability 7.0), Turing (compute capability 7.5),\n"
"and, if the CUDA version is >= 11.0, Ampere (compute capability 8.0).\n"
"If you wish to cross-compile for a single specific architecture,\n"
'export TORCH_CUDA_ARCH_LIST="compute capability" before running setup.py.\n',
'export TORCH_CUDA_ARCH_LIST="compute capability" before running setup.py.\n'
)
if os.getenv("TORCH_CUDA_ARCH_LIST", None) is None:
_, bare_metal_major, _ = get_cuda_bare_metal_version(CUDA_HOME)
_, bare_metal_major, bare_metal_minor = get_cuda_bare_metal_version(CUDA_HOME)
if int(bare_metal_major) == 11:
os.environ["TORCH_CUDA_ARCH_LIST"] = "6.0;6.1;6.2;7.0;7.5;8.0;8.6"
if int(bare_metal_minor) == 0:
os.environ["TORCH_CUDA_ARCH_LIST"] = "6.0;6.1;6.2;7.0;7.5;8.0"
else:
os.environ["TORCH_CUDA_ARCH_LIST"] = "6.0;6.1;6.2;7.0;7.5;8.0;8.6"
else:
os.environ["TORCH_CUDA_ARCH_LIST"] = "6.0;6.1;6.2;7.0;7.5"
else:
Expand Down Expand Up @@ -160,7 +163,7 @@ def get_cuda_bare_metal_version(cuda_dir):
for future research endeavours.
"""

version = '0.9.1'
version = '0.10.0'


def write_version_file():
Expand Down

0 comments on commit e5148d0

Please sign in to comment.