408 Commits

Author SHA1 Message Date
David Novotny
4a9e294436 Updated readme with NeRF metrics, added a nicer gif
Summary: See title.

Reviewed By: nikhilaravi

Differential Revision: D27658290

fbshipit-source-id: 232550f04df4951f7f3d712047b39e510a2f4209
2021-04-14 09:20:47 -07:00
Jeremy Reizenstein
c18ee9d40a lint fixes
Summary: Lint after recent changes.

Reviewed By: nikhilaravi

Differential Revision: D27682328

fbshipit-source-id: 285d159010d886e4e97902995adbdff875fd3c19
2021-04-12 19:10:18 -07:00
Jeremy Reizenstein
124bb5e391 spelling
Summary: Collection of spelling things, mostly in docs / tutorials.

Reviewed By: gkioxari

Differential Revision: D26101323

fbshipit-source-id: 652f62bc9d71a4ff872efa21141225e43191353a
2021-04-09 09:58:54 -07:00
Rong Rong (AI Infra)
c2e62a5087 Allow tests to be run on GPU with remote execution
Summary: Test path special case

Reviewed By: bottler

Differential Revision: D27566817

fbshipit-source-id: c7b3ac839908c071f1378a37b7013b91ca4e8b18
2021-04-08 20:03:04 -07:00
Rong Rong (AI Infra)
dd8343922e Get rid of duplicate test data directory initialization
Summary: Simplify finding the data directories in the tests.

Reviewed By: nikhilaravi

Differential Revision: D27634293

fbshipit-source-id: dc308a7c86c41e6fae56a2ab58187c9f0335b575
2021-04-08 20:03:04 -07:00
Rong Rong (AI Infra)
1216b5765a Extract finding directories for test data
Summary: Make common functions for finding directories where test data is found, instead of lots of tests using their own `__file__`  while trying to get ./tests/data and the tutorials data.

Reviewed By: nikhilaravi

Differential Revision: D27633701

fbshipit-source-id: 1467bb6018cea16eba3cab097d713116d51071e9
2021-04-08 20:03:04 -07:00
Jeremy Reizenstein
24ee279005 Fix flake exceptions
Summary: flake8 no longer respects the black fmt:off message, so include specific line-length exclusion.

Reviewed By: nikhilaravi

Differential Revision: D27624641

fbshipit-source-id: adcdb6f55b382fbf252eede3f3ddeda0621da883
2021-04-08 09:38:43 -07:00
David Novotny
7c0d307142 Implicit function docfix
Summary: Fixes implicit function doc.

Reviewed By: theschnitz, nikhilaravi

Differential Revision: D26870946

fbshipit-source-id: 5d03ebbc284153c41b9d6695b28c8b4e11bc0a5c
2021-04-08 07:44:34 -07:00
Jeremy Reizenstein
cc08c6b288 CI fixes
Summary:
Update `main` build to latest CircleCI image - Ubuntu 2020.04.

Avoid torch.logical_or and logical_and for PyTorch 1.4 compatibility.

Also speed up the test run with Pytorch 1.4.0 (which has no ninja) by not setting NVCC_FLAGS for it.

Reviewed By: theschnitz

Differential Revision: D27262327

fbshipit-source-id: ddc359d134b1dc755f8b20bd3f33bb080cb3a0e1
2021-03-23 14:25:25 -07:00
Jeremy Reizenstein
6c4151a820 Remove _read_image from densepose example
Summary:
As noted in #601, the example notebook was using an internal function _read_image from PyTorch3D, which has changed signature recently. It is not meant to be used externally. Switch to using PIL directly.

Other changes: (1) removed unused skimage import. (2) some small tidyups. We now don't have places where cells modify values set by other cells. (3) removed bad calls to `plt.grid` which have no effect.

Reviewed By: theschnitz, nikhilaravi

Differential Revision: D27080372

fbshipit-source-id: 2fce651b3e5d7a4619f0a2b298c5db18c8fa1e2c
2021-03-17 16:13:36 -07:00
Jeremy Reizenstein
8e1bcd5568 Tidy comments around imports
Summary: Make black and isort stop disagreeing by removing some unneeded comments around import statements. pyre ignores are moved.

Reviewed By: theschnitz

Differential Revision: D27118137

fbshipit-source-id: 9926d0f21142adcf9b5cfe1d394754317f6386df
2021-03-17 09:26:33 -07:00
Jeremy Reizenstein
1b6182bac2 Plotly subsampling fix
Summary: When viewing two or more pointclouds in a single plot, we should be subsampling each one separately rather than subsampling their union.

Reviewed By: nikhilaravi

Differential Revision: D27010770

fbshipit-source-id: 3c7e04a6049edd39756047f985d5a82c2601b3a2
2021-03-16 12:36:22 -07:00
Jeremy Reizenstein
ff9c6612b4 Use old style isfinite
Summary: Avoid using the newish member function isfinite. We use torch.isfinite instead for torch 1.4.0 compatibility.

Reviewed By: nikhilaravi

Differential Revision: D26946672

fbshipit-source-id: 853c3716f40061152f1ea54a39eb60b565de7c2c
2021-03-11 03:13:48 -08:00
Nikhila Ravi
4bb3fff52b pulsar image size bug fix
Summary: Small change to swap how height/width are inferred from the image_size setting.

Reviewed By: gkioxari

Differential Revision: D26648340

fbshipit-source-id: 2c657a115c96cadf3ac63be87b0e1bfba10c9315
2021-02-26 09:09:08 -08:00
generatedunixname89002005307016
9c161d1d04 suppress errors in vision/fair/pytorch3d
Differential Revision: D26658196

fbshipit-source-id: f38950ace2ff95ad1170a0d8acd5420bcb6dd4b7
2021-02-24 21:52:12 -08:00
Nikhila Ravi
13429640d3 Bug fix for case where aspect ratio is a float
Summary:
- Fix the calculation of the non square NDC range when the H and W are not integer multiples.
- Add test for this case

Reviewed By: gkioxari

Differential Revision: D26613213

fbshipit-source-id: df6763cac602e9f1d516b41b432c4d2cfbaa356d
2021-02-24 10:07:17 -08:00
Jeremy Reizenstein
0345f860d4 Loading/saving meshes to OFF files.
Summary: Implements the ascii OFF file format. This was discussed in https://github.com/facebookresearch/pytorch3d/issues/216

Reviewed By: theschnitz

Differential Revision: D25788834

fbshipit-source-id: c141d1f4ba3bad24e3c1f280a20aee782bfd74d6
2021-02-12 07:05:55 -08:00
Jeremy Reizenstein
4bfe7158b1 mesh_normal_consistency speedup
Summary: One step in finding all the pairs of vertices which share faces is a simple calculation but annoying to parallelize. It was implemented in pure Python. We move it to C++. We still pull the data to the CPU and put the answer back on the device.

Reviewed By: nikhilaravi, gkioxari

Differential Revision: D26073475

fbshipit-source-id: ffbf4e2c347a511ab5084bceff600465812b6a52
2021-02-11 13:56:17 -08:00
Jeremy Reizenstein
5ac2f42184 test & compilation fixes
Summary:
Fixes mostly related to the "main" build on circleci.
-Avoid error to do with tuple copy from initializer_list which is `explicit` on old compiler.
-Add better reporting to copyright test.
-Move to PackedTensorAccessor64 from the deprecated PackedTensorAccessor
-Avoid some warnings about mismatched comparisons.

The "main" build is the only one that runs the test_build stuff. In that area
-Fix my bad copyright fix D26275931 (3463f418b8) / 965c9c
-Add test that all tutorials are valid json.

Reviewed By: nikhilaravi

Differential Revision: D26366466

fbshipit-source-id: c4ab8b7e6647987069f7cb7144aa6ab7c24bcdac
2021-02-11 11:06:08 -08:00
Shubham Goel
e13e63a811 bugfix in cotcurv laplacian loss. closes #551 (#553)
Summary: Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/553

Reviewed By: theschnitz

Differential Revision: D26257591

Pulled By: gkioxari

fbshipit-source-id: 899a3f733a77361e8572b0900a34b55764ff08f2
2021-02-10 21:23:17 -08:00
Nikhila Ravi
17468e2862 update readme for v0.4
Summary: Add link to v0.4 after it has been tagged.

Reviewed By: bottler

Differential Revision: D26286000

fbshipit-source-id: b75893e668a18122c64aa989b6f4d150c99831be
2021-02-09 10:42:59 -08:00
Jeremy Reizenstein
3c15a6c246 version number for 0.4.0
Summary: Update PyTorch3D version number

Reviewed By: nikhilaravi

Differential Revision: D26257778

fbshipit-source-id: 62a37669c51ec56d21f71b5619a1a821ae2a8e98
v0.4.0
2021-02-09 04:33:09 -08:00
Nikhila Ravi
340662e98e CUDA/C++ Rasterizer updates to handle clipped faces
Summary:
- Updated the C++/CUDA mesh rasterization kernels to handle the clipped faces. In particular this required careful handling of the distance calculation for faces which are cut into a quadrilateral by the image plane and then split into two sub triangles i.e. both sub triangles can't be part of the top K faces.
- Updated `rasterize_meshes.py` to use the utils functions to clip the meshes and convert the fragments back to in terms of the unclipped mesh
- Added end to end tests

Reviewed By: jcjohnson

Differential Revision: D26169685

fbshipit-source-id: d64cd0d656109b965f44a35c301b7c81f451cfa0
2021-02-08 14:32:39 -08:00
Nikhila Ravi
838b73d3b6 Updates to cameras and rasterizer to infer camera type correctly
Summary: Small update to the cameras and rasterizer to correctly infer the type of camera (perspective vs orthographic).

Reviewed By: jcjohnson

Differential Revision: D26267225

fbshipit-source-id: a58ed3bc2ab25553d2a4307c734204c1d41b5176
2021-02-08 14:32:39 -08:00
Nikhila Ravi
39f49c22cd Utils for converting rasterization fragments of clipped meshes back to unclipped
Summary:
This diff adds utils functions for converting rasterization fragments of the clipped mesh into fragments expressed in terms of the original unclipped mesh.

The face indices and barycentric coordinates are converted in this step. The pixel to triangle distances are handled in the rasterizer which is updated in the next diff in the stack.

Reviewed By: jcjohnson

Differential Revision: D26169539

fbshipit-source-id: ba451d3facd60ef88a8ffaf25fd04ca07b449ceb
2021-02-08 14:32:39 -08:00
Nikhila Ravi
23279c5f1d Utils for clipping mesh faces partially behind the image plane
Summary:
Instead of culling faces behind the camera, partially clip them if they intersect with the image plane.

This diff implements the utils functions for clipping.

There are 4 cases for the mesh faces which are all handled:

```
Case 1: the triangle is completely in front of the clipping plane (it is left
        unchanged)
Case 2: the triangle is completely behind the clipping plane (it is culled)
Case 3: the triangle has exactly two vertices behind the clipping plane (it is
        clipped into a smaller triangle)
Case 4: the triangle has exactly one vertex behind the clipping plane (it is clipped
        into a smaller quadrilateral and divided into two triangular faces)
```

Reviewed By: jcjohnson

Differential Revision: D23108673

fbshipit-source-id: 550a8b6a982d06065dff10aba10d47e8b144ae52
2021-02-05 18:30:15 -08:00
Jeremy Reizenstein
db6fbfad90 update notebooks for s3 wheels
Summary: Prepare the tutorial notebooks to use wheels from S3 when run on colab.

Reviewed By: nikhilaravi

Differential Revision: D26226932

fbshipit-source-id: 1f9366c3fb4ba195333a5d5dfa3f6876ea934508
2021-02-05 05:52:36 -08:00
Jeremy Reizenstein
e0753f0b0d Build wheels for s3
Summary: For Linux, instead of uploading wheels to PyPI which will only work with one particular version of PyTorch and CUDA, from the next release we will store a range of built wheels on S3.

Reviewed By: nikhilaravi

Differential Revision: D26209398

fbshipit-source-id: 945a6907b78807e1eedb25007f87f90bbf59f80e
2021-02-05 05:52:36 -08:00
Jeremy Reizenstein
3463f418b8 Missing copyright
Summary: Fix missing copyright header in __init__.py file.

Reviewed By: davnov134

Differential Revision: D26275931

fbshipit-source-id: 965c9cf17383aa27d35d549754ebd99ae7c25f47
2021-02-05 05:28:20 -08:00
Jeremy Reizenstein
cd9786e787 Disable random-dependent tests
Summary:
These two tests fail (with non-small differences) when the seed is changed or if certain environmental changes are made. We disable them pending investigation.

A small change to the tolerance at the failing assertion doesn't help. The change in common_testing helps diagnose this.

Reviewed By: shapovalov

Differential Revision: D26233419

fbshipit-source-id: 357afc1786825256c9bade101fb15707e4dea5ed
2021-02-03 18:24:27 -08:00
David Novotny
3c0b31a2b8 Readme fixes + pytorch3d nerf logo gif
Summary: Fixes to Readme in NeRF

Reviewed By: nikhilaravi

Differential Revision: D26205882

fbshipit-source-id: 73e4d727f6e6c96fa7af7d2b917acdeaf990091c
2021-02-03 15:37:37 -08:00
David Novotny
51de308b80 Readme
Summary: Adds the readme file.

Reviewed By: nikhilaravi

Differential Revision: D25684459

fbshipit-source-id: f1aaa621a2a67c98d5fcfe33fe9bbfea8f95b537
2021-02-02 05:45:41 -08:00
David Novotny
2628fb56f2 Testing script
Summary: Implements the test script of NeRF.

Reviewed By: nikhilaravi

Differential Revision: D25684450

fbshipit-source-id: 739169d9df706795814912bb9a15e2e65ac92df8
2021-02-02 05:45:41 -08:00
David Novotny
dc28b615ae Generation of test camera trajectories
Summary: Implements methods for generating trajectories of test cameras.

Reviewed By: nikhilaravi

Differential Revision: D26100869

fbshipit-source-id: cf2b61a34d4c749cd8cba881e97f6c388e57d1f8
2021-02-02 05:45:41 -08:00
David Novotny
9751f1f185 Main training script
Summary: Implements the training script of NeRF.

Reviewed By: nikhilaravi

Differential Revision: D25684439

fbshipit-source-id: 8b19b6dc282eb6bf6e46ec4476bb0f13a84c90dd
2021-02-02 05:45:40 -08:00
David Novotny
5b74911881 NeRF training stats logger.
Summary: Implements the `Stats` class that handles logging of the training statistics.

Reviewed By: nikhilaravi

Differential Revision: D25684430

fbshipit-source-id: 920a1c65917ab5d047988494d92173da60cfd64b
2021-02-02 05:45:40 -08:00
David Novotny
0666848338 NeRF dataloader.
Summary: Implements the dataloader for NeRF.

Reviewed By: nikhilaravi

Differential Revision: D25684424

fbshipit-source-id: 4f7092ce23135bd418186833a087e243433babc7
2021-02-02 05:45:40 -08:00
David Novotny
eb908487b8 Radiance field renderer
Summary: Implements the main NeRF model class that controls the radiance field and its renderer

Reviewed By: nikhilaravi

Differential Revision: D25684419

fbshipit-source-id: fae45572daa6748c6234bd212f3e68110f778238
2021-02-02 05:45:39 -08:00
David Novotny
bf633ab556 Implicit function
Summary: Implements the radiance field function of NeRF

Reviewed By: nikhilaravi

Differential Revision: D25684413

fbshipit-source-id: 4bf6dd5d22e6134a09f7b9f314536ec16670f737
2021-02-02 05:45:39 -08:00
David Novotny
1e82341da7 Harmonic embedding
Summary: Implements the positional embedding of NeRF

Reviewed By: nikhilaravi

Differential Revision: D25684406

fbshipit-source-id: 9f3b657babacff48bd6a0497d7a859607ffa5f89
2021-02-02 05:45:39 -08:00
David Novotny
7cbda3ec17 NeRF Raysampler
Summary: Implements the NeRF raysampler.

Reviewed By: nikhilaravi

Differential Revision: D25684403

fbshipit-source-id: 616a60f047c79479f60a6a75d214f87cbfb06d28
2021-02-02 05:45:39 -08:00
David Novotny
fba419b7f7 NeRF Raymarcher
Summary: An initial NeRF diff which sets up the folder structure and implements the raymarching algorithm of NeRF.

Reviewed By: nikhilaravi

Differential Revision: D25623990

fbshipit-source-id: ac6b05a9b866358bd4bbf44858f06859d8a6ebd1
2021-02-02 05:45:39 -08:00
Edgar Riba
f4f3d403f3 fixes docstring rendering in estimate_normals (#530)
Summary:
adds missing spaces in the `estimate_normals` docstrings

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/530

Reviewed By: bottler

Differential Revision: D26008667

Pulled By: nikhilaravi

fbshipit-source-id: 88cccd7e777fa2df0aea15c087db9e7fb634d93f
2021-02-01 18:39:10 -08:00
Jeremy Reizenstein
e42b0c4f70 Mesh normal consistency when no faces intersect
Summary: Corner case where there's nothing to do in this function.

Reviewed By: nikhilaravi

Differential Revision: D26073476

fbshipit-source-id: eb061683ffe35c1ffa8384c422a1557a636d52cd
2021-01-27 17:32:16 -08:00
Jeremy Reizenstein
7f62eacdb2 Mesh normal consistency when many faces intersect
Summary: We were double counting some pairs in some cases. Specifically if four or more faces share an edge, then some of them were getting double counted. This is a minimal tweak to avoid that.

Reviewed By: nikhilaravi

Differential Revision: D26073477

fbshipit-source-id: a40032acf3044bb98dd91cb29904614ef64d5599
2021-01-27 17:32:16 -08:00
Christoph Lassner
00acda7ab0 Update the pulsar citation for the new version of the tech report.
Summary: See title.

Reviewed By: theschnitz

Differential Revision: D25785775

fbshipit-source-id: 6b2ab6ea8a02a7dd1742a214e48caab35a44528c
2021-01-26 12:18:30 -08:00
Jeremy Reizenstein
d173a2f8da textures device consistency
Summary: Ensure that `mesh2 = mesh.to(device)` doesn't change the device of `mesh.textures`.

Reviewed By: nikhilaravi

Differential Revision: D25978610

fbshipit-source-id: 0558cd62132965d8693ebeea05e42b8c1d16cfbf
2021-01-25 06:09:56 -08:00
Penn
e58a730e6a Fix dimension check (#524)
Summary:
Fixes the assertion that `p1` and `p2` have the same last dimension. The issue was that `D` is set to equal `p2.size(2)`, and then `D` is compared to `p2.size(2)`. The fix instead compares `D` to `p1.size(2).

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/524

Reviewed By: bottler

Differential Revision: D26008688

Pulled By: nikhilaravi

fbshipit-source-id: e32afe9da127d81b1a411d3c223b539a7400597b
2021-01-22 11:05:18 -08:00
imlixinyang
2ee11c7845 Update generate_cow_renders.py (#529)
Summary:
Typo fixed.

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/529

Reviewed By: bottler

Differential Revision: D26008651

Pulled By: nikhilaravi

fbshipit-source-id: 76d5baadba7bcd3577397adb842e964ee4490b7d
2021-01-22 11:01:02 -08:00
Jeremy Reizenstein
8eba1684cb Up vector for plotly
Summary: We previously did not send an `up` vector in to plotly when visualization_cameras is supplied. This meant the image would have the default orientation instead of the correct one. Now we use the library function `camera_to_eye_at_up` to calculate the plotly position, which includes the `up` vector.

Reviewed By: nikhilaravi

Differential Revision: D25981183

fbshipit-source-id: abec72b349f3a5519209e0e6c0518133c3750807
2021-01-22 07:33:31 -08:00