Summary: Simplify finding the data directories in the tests.
Reviewed By: nikhilaravi
Differential Revision: D27634293
fbshipit-source-id: dc308a7c86c41e6fae56a2ab58187c9f0335b575
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
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
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
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
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
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
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
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
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
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
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
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
Summary: Add link to v0.4 after it has been tagged.
Reviewed By: bottler
Differential Revision: D26286000
fbshipit-source-id: b75893e668a18122c64aa989b6f4d150c99831be
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
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
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
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
Summary: Prepare the tutorial notebooks to use wheels from S3 when run on colab.
Reviewed By: nikhilaravi
Differential Revision: D26226932
fbshipit-source-id: 1f9366c3fb4ba195333a5d5dfa3f6876ea934508
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
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
Summary: Implements the test script of NeRF.
Reviewed By: nikhilaravi
Differential Revision: D25684450
fbshipit-source-id: 739169d9df706795814912bb9a15e2e65ac92df8
Summary: Implements the training script of NeRF.
Reviewed By: nikhilaravi
Differential Revision: D25684439
fbshipit-source-id: 8b19b6dc282eb6bf6e46ec4476bb0f13a84c90dd
Summary: Implements the `Stats` class that handles logging of the training statistics.
Reviewed By: nikhilaravi
Differential Revision: D25684430
fbshipit-source-id: 920a1c65917ab5d047988494d92173da60cfd64b
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
Summary: Implements the radiance field function of NeRF
Reviewed By: nikhilaravi
Differential Revision: D25684413
fbshipit-source-id: 4bf6dd5d22e6134a09f7b9f314536ec16670f737
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
Summary: Corner case where there's nothing to do in this function.
Reviewed By: nikhilaravi
Differential Revision: D26073476
fbshipit-source-id: eb061683ffe35c1ffa8384c422a1557a636d52cd
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
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
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