1. 29 Mar, 2020 3 commits
    • Patrick Labatut's avatar
      Address black + isort fbsource linter warnings · d57daa6f
      Patrick Labatut authored
      Summary: Address black + isort fbsource linter warnings from D20558374 (previous diff)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20558373
      
      fbshipit-source-id: d3607de4a01fb24c0d5269634563a7914bddf1c8
      d57daa6f
    • Patrick Labatut's avatar
      Enable black + isort fbsource linter · eb512ffd
      Patrick Labatut authored
      Summary:
      Enable `black` + `isort` (via `pyfmt`) i.e. `BLACK` fbsource linter.
      
      NOTE: the `BLACK` fbsource linter (and `black` itself) is (by design) ***not*** configurable. This forces aligning the existing options used by the tools invoked in `dev/linter.sh` (for 3rd party developers) with `BLACK` fbsource linting. Without this reconciliation, the different linters (used internally or by 3rd party developers) would simply conflict with each other resulting in artificial back-and-forth changes (for instance line width which `BLACK` forces to 88 characters).
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20558374
      
      fbshipit-source-id: 614fa00664f8eb9d2de7438c29b807dfbf36ad20
      eb512ffd
    • Jeremy Reizenstein's avatar
      Linter, deprecated type() · 37c5c8e0
      Jeremy Reizenstein authored
      Summary: Run linter after recent changes. Fix long comment in knn.h which clang-format has reflowed badly. Add crude test that code doesn't call deprecated `.type()` or `.data()`.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20692935
      
      fbshipit-source-id: 28ce0308adae79a870cb41a810b7cf8744f41ab8
      37c5c8e0
  2. 28 Mar, 2020 1 commit
    • Patrick Labatut's avatar
      Fix saving / loading empty OBJ files · 3061c5b6
      Patrick Labatut authored
      Summary:
      OBJ files without vertices or faces should be allowed:
      - an OBJ with only vertices can represent a point cloud
      - an OBJ without any vertex or face is just empty
      - an OBJ with faces referencing inexistent vertices has invalid data
      
      Reviewed By: gkioxari
      
      Differential Revision: D20392526
      
      fbshipit-source-id: e72c846ff1e5787fb11d527af3fefa261f9eb0ee
      3061c5b6
  3. 26 Mar, 2020 4 commits
    • Justin Johnson's avatar
      Implement K-Nearest Neighbors · 870290df
      Justin Johnson authored
      Summary:
      Implements K-Nearest Neighbors with C++ and CUDA versions.
      
      KNN in CUDA is highly nontrivial. I've implemented a few different versions of the kernel, and we heuristically dispatch to different kernels based on the problem size. Some of the kernels rely on template specialization on either D or K, so we use template metaprogramming to compile specialized versions for ranges of D and K.
      
      These kernels are up to 3x faster than our existing 1-nearest-neighbor kernels, so we should also consider swapping out `nn_points_idx` to use these kernels in the backend.
      
      I've been working mostly on the CUDA kernels, and haven't converged on the correct Python API.
      
      I still want to benchmark against FAISS to see how far away we are from their performance.
      
      Reviewed By: bottler
      
      Differential Revision: D19729286
      
      fbshipit-source-id: 608ffbb7030c21fe4008f330522f4890f0c3c21a
      870290df
    • Nikhila Ravi's avatar
      website small fixes · 02d4968e
      Nikhila Ravi authored
      Summary: Small website fix.
      
      Reviewed By: bottler
      
      Differential Revision: D20672621
      
      fbshipit-source-id: b787e626f732a8abdd92c29e5e4e8bbe27bc7e2f
      02d4968e
    • Jeremy Reizenstein's avatar
      type() deprecated · 81a4aa18
      Jeremy Reizenstein authored
      Summary:
      Replace `tensor.type().is_cuda()` with the preferred `tensor.is_cuda()`.
      Replace `AT_DISPATCH_FLOATING_TYPES(tensor.type(), ...` with `AT_DISPATCH_FLOATING_TYPES(tensor.scalar_type(), ...`.
      These avoid deprecation warnings in future pytorch.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20646565
      
      fbshipit-source-id: 1a0c15978c871af816b1dd7d4a7ea78242abd95e
      81a4aa18
    • Jeremy Reizenstein's avatar
      data() deprecated · e22d431e
      Jeremy Reizenstein authored
      Summary: replace `data()` with preferred `data_ptr()`, avoiding some deprecation warnings in future pytorch.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20645738
      
      fbshipit-source-id: 8f6e02d292729b804fa2a66f94dd0517bbaf7887
      e22d431e
  4. 24 Mar, 2020 1 commit
    • Jeremy Reizenstein's avatar
      fix CPU-only hiding of cuda calls · 8fa76786
      Jeremy Reizenstein authored
      Summary: CPU-only builds should be fixed by this change
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20598014
      
      fbshipit-source-id: df098ec4c6c93d38515172805fe57cac7463c506
      8fa76786
  5. 23 Mar, 2020 2 commits
    • Jeremy Reizenstein's avatar
      use assertClose · 595aca27
      Jeremy Reizenstein authored
      Summary: use assertClose in some tests, which enforces shape equality. Fixes some small problems, including graph_conv on an empty graph.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20556912
      
      fbshipit-source-id: 60a61eafe3c03ce0f6c9c1a842685708fb10ac5b
      595aca27
    • Jeremy Reizenstein's avatar
      suggest up to date python · 744ef0c2
      Jeremy Reizenstein authored
      Summary: By accident I think, we have been nudging people to install python 3.6. Using 3.8 is fine.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20597240
      
      fbshipit-source-id: 7fb778f1b84746db28b6eef763564af5c5fffcd7
      744ef0c2
  6. 22 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      run lint · 03f441e7
      Georgia Gkioxari authored
      Summary: Run `/dev/linter.sh` to fix linting
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20584037
      
      fbshipit-source-id: 69e45b33d22e3d54b6d37c3c35580bb3e9dc50a5
      03f441e7
  7. 21 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      Tutorial updates · 6d34e1c6
      Nikhila Ravi authored
      Summary:
      Add a note about the difference between naive and coarse-to-fine rasterization to all the rendering tutorials.
      
      Update the render pointclouds tutorial to wget the data file.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20575257
      
      fbshipit-source-id: a2806b9452438f97cb754f87e011c6e32e2545e4
      6d34e1c6
  8. 20 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      replace view with reshape, check for nans · 6c48ff6a
      Georgia Gkioxari authored
      Summary: Replace view with reshape, add check for nans before mesh sampling
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20548456
      
      fbshipit-source-id: c4e1b88e033ecb8f0f3a8f3a33a04ce13a5b5043
      6c48ff6a
  9. 19 Mar, 2020 1 commit
    • Olivia's avatar
      Accumulate points (#4) · 53599770
      Olivia authored
      Summary:
      Code for accumulating points in the z-buffer in three ways:
      1. weighted sum
      2. normalised weighted sum
      3. alpha compositing
      
      Pull Request resolved: https://github.com/fairinternal/pytorch3d/pull/4
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20522422
      
      Pulled By: gkioxari
      
      fbshipit-source-id: 5023baa05f15e338f3821ef08f5552c2dcbfc06c
      53599770
  10. 18 Mar, 2020 4 commits
  11. 17 Mar, 2020 4 commits
    • Patrick Labatut's avatar
      Enable spelling linter for Markdown, reStructuredText and IPython notebooks · c9742d00
      Patrick Labatut authored
      Summary: Enable spelling linter for Markdown, reStructuredText and IPython notebooks under `fbcode/vision/fair`. Apply suggested fixes.
      
      Reviewed By: ppwwyyxx
      
      Differential Revision: D20495298
      
      fbshipit-source-id: 95310c7b51f9fa68ba2aa34ecc39a874da36a75c
      c9742d00
    • Nikhila Ravi's avatar
      website updates · 3901dbe4
      Nikhila Ravi authored
      Summary:
      A few small website updates:
      
      - changed the tutorials to point to the `stable` tag on github so we don't have to update the website each time we want to run them!
      - changed the colab button
      - re ran notebook cells to update the images for textured meshes
      
      Once these fixes are landed I can build and publish the website.
      
      Reviewed By: bottler
      
      Differential Revision: D20484836
      
      fbshipit-source-id: 603a05e752f631c60d1a3abb9adeb1b9b451ab98
      3901dbe4
    • Patrick Labatut's avatar
      Use a consistent case for PyTorch3D · 25d2e2c8
      Patrick Labatut authored
      Summary: Use a consistent case for PyTorch3D (matching the logo...): replace all occurrences of PyTorch3d with PyTorch3D across the codebase (including documentation and notebooks)
      
      Reviewed By: wanyenlo, gkioxari
      
      Differential Revision: D20427546
      
      fbshipit-source-id: 8c7697f51434c51e99b7fe271935932c72a1d9b9
      25d2e2c8
    • Nikhila Ravi's avatar
      Rendering texturing fixes · 5d3cc356
      Nikhila Ravi authored
      Summary:
      Fix errors raised by issue on GitHub - extending mesh textures + rendering with Gourad and Phong shaders.
      
      https://github.com/facebookresearch/pytorch3d/issues/97
      
      Reviewed By: gkioxari
      
      Differential Revision: D20319610
      
      fbshipit-source-id: d1c692ff0b9397a77a9b829c5c731790de70c09f
      5d3cc356
  12. 16 Mar, 2020 2 commits
    • Jeremy Reizenstein's avatar
      Fix BUILD_VERSION for conda · f580ce13
      Jeremy Reizenstein authored
      Summary: D20426113 made a mistake, in that it added a dev tag to all conda builds. This makes the simplest fix, which is to never have the dev tag.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20468541
      
      fbshipit-source-id: adc71b58d59356834d33f65a75cf8ba84359bc74
      f580ce13
    • Jeremy Reizenstein's avatar
      test_build · fa819533
      Jeremy Reizenstein authored
      Summary: Ensure copyright header consistency and translation unit name uniqueness.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20438802
      
      fbshipit-source-id: 9820cfe4c6efab016a0a8589dfa24bb526692f83
      fa819533
  13. 15 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      [pytorch3d[ padded to packed function in struct utils · 20e457ca
      Nikhila Ravi authored
      Summary: Added a padded to packed utils function which takes either split sizes or a padding value to remove padded elements from a tensor.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20454238
      
      fbshipit-source-id: 180b807ff44c74c4ee9d5c1ac3b5c4a9b4be57c7
      20e457ca
  14. 13 Mar, 2020 4 commits
    • Jeremy Reizenstein's avatar
      Version number in one place in the code. · 4d3c8866
      Jeremy Reizenstein authored
      Summary:
      This isn't the whole task, but it gets the version number into far fewer places.
      
      The doc / website are separate.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20426113
      
      fbshipit-source-id: 5810d1eca58b443fcd5f46991dc2f0f26adedbd8
      4d3c8866
    • Jeremy Reizenstein's avatar
      squared distance in comments · 23618455
      Jeremy Reizenstein authored
      Summary: Comments were describing squared distance as absolute distance in a few places.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20426020
      
      fbshipit-source-id: 009946867c4a98f61f5ce7158542d41e22bf8346
      23618455
    • Patrick Labatut's avatar
      Add more complex mesh I/O benchmarks · d91c1d36
      Patrick Labatut authored
      Summary: Add more complex mesh I/O benchmarks: simple yet non-trivial procedural donut mesh
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390726
      
      fbshipit-source-id: b28b7e3a7f1720823c6bd24faabf688bb0127b7d
      d91c1d36
    • Patrick Labatut's avatar
      Add utility function to tesselate a torus · 327868b8
      Patrick Labatut authored
      Summary: Add utility function to tesselate a torus, to be used in more complex mesh I/O benchmarks
      
      Reviewed By: bottler
      
      Differential Revision: D20390724
      
      fbshipit-source-id: 882bbbe9cac81cf340a34495b9aa66e3c1ddeebc
      327868b8
  15. 12 Mar, 2020 6 commits
    • Patrick Labatut's avatar
      Use more realistic number of vertices / faces in benchmarks · 098554d3
      Patrick Labatut authored
      Summary: Use more realistic number of vertices / faces in benchmarks: in typical meshes, |F| ~ 2 |V| (follows from Euler formula + triangles as faces)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390722
      
      fbshipit-source-id: d615e5810d6f4521391963b2573497c08a58db80
      098554d3
    • Patrick Labatut's avatar
      Simplify mesh I/O benchmarking methods · 94fc862f
      Patrick Labatut authored
      Summary: Rename mesh I/O benchmarking methods: always (re-)create file-like object and directly return a lambda
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390723
      
      fbshipit-source-id: b45236360869cccdf3d5458a0aafb3ebe269babe
      94fc862f
    • Patrick Labatut's avatar
      Rename mesh I/O benchmarks and associated methods · 797e468e
      Patrick Labatut authored
      Summary:
      Rename mesh I/O benchmarks and associated methods:
      - add `simple` qualifier (benchmark on more realistic mesh data to be added later)
      - align naming between OBJ and PLY
      - prefix with `bm_` to make the benchmarking purpose clear(er)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390764
      
      fbshipit-source-id: 7714520abfcfe1125067f3c52f7ce19bca359574
      797e468e
    • Patrick Labatut's avatar
      Remove shebang line when not strictly required · 3c71ab64
      Patrick Labatut authored
      Summary: The shebang line `#!<path to interpreter>` is only required for Python scripts, so remove it on source files for class or function definitions. Additionally explicitly mark as executable the actual Python scripts in the codebase.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20095778
      
      fbshipit-source-id: d312599fba485e978a243292f88a180d71e1b55a
      3c71ab64
    • Nikhila Ravi's avatar
      Fix coordinate system conventions in point cloud renderer · d01e7228
      Nikhila Ravi authored
      Summary:
      Applying the changes added for mesh rasterization to ensure that +Y is up and +X is left so that the coordinate system is right handed.
      
      Also updated the diagram in the docs to indicate that (0,0) is in the top left hand corner.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20394849
      
      fbshipit-source-id: cfb7c79090eb1f55ad38b92327a74a70a8dc541e
      d01e7228
    • Nikhila Ravi's avatar
      Update point cloud rasterizer to support heterogeneous point clouds · 32ad869d
      Nikhila Ravi authored
      Summary:
      Update the point cloud rasterizer to:
      - use the pointcloud datastructure (rebased on top of D19791851.)
      - support rasterization of heterogeneous point clouds in the same way as with Meshes.
      
      The main changes to the API will be as follows:
      - The input to `rasterize_points` will be a `Pointclouds` object instead of a tensor. This will be easy to update e.g.
      ```
      points = torch.randn(N, P, 3)
      idx2, zbuf2, dists2 = rasterize_points(points, image_size, radius, points_per_pixel)
      
      points = torch.randn(N, P, 3)
      pointclouds = Pointclouds(points=points)
      idx2, zbuf2, dists2 = rasterize_points(pointclouds, image_size, radius, points_per_pixel)
      ```
      
      - The indices output from rasterization will now refer to points in `poinclouds.points_packed()`.
      This may require some changes to the functions which consume the outputs of rasterization if they were previously
      assuming that the indices ranged from 0 to P where P is the number of points in each pointcloud.
      
      Making this change now so that Olivia can update her PR accordingly.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20088651
      
      fbshipit-source-id: 833ed659909712bcbbb6a50e2ec0189839f0413a
      32ad869d
  16. 11 Mar, 2020 2 commits
    • Roman Shapovalov's avatar
      Old-style string formatting fails when passed a tuple. · cae32571
      Roman Shapovalov authored
      Summary: When the error occurs, another exception is thrown when tensor shape is passed to the % formatting. I have found all entries for `msg %` and fixed potential failures
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20386511
      
      fbshipit-source-id: c05413eb4867cab1ddc9615dffbd0ebd3adfcaf9
      cae32571
    • Jeremy Reizenstein's avatar
      getitem for textures · fb97ab10
      Jeremy Reizenstein authored
      Summary: Make Meshes.__getitem__ carry texture information to the new mesh.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20283976
      
      fbshipit-source-id: d9ee0580c11ac5b4384df9d8158a07e6eb8d00fe
      fb97ab10
  17. 09 Mar, 2020 1 commit
  18. 08 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      Add more DR citations · 112d32ea
      Georgia Gkioxari authored
      Summary: Add more DR citations
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20330205
      
      fbshipit-source-id: 4fb95d422371ae9ff5cdc2693736e36799201477
      112d32ea