1. 02 Apr, 2020 1 commit
    • David Novotny's avatar
      Umeyama · e5b1d6d3
      David Novotny authored
      Summary:
      Umeyama estimates a rigid motion between two sets of corresponding points.
      
      Benchmark output for `bm_points_alignment`
      
      ```
      Arguments key: [<allow_reflection>_<batch_size>_<dim>_<estimate_scale>_<n_points>_<use_pointclouds>]
      Benchmark                                                        Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      CorrespodingPointsAlignment_True_1_3_True_100_False                   7382            9833             68
      CorrespodingPointsAlignment_True_1_3_True_10000_False                 8183           10500             62
      CorrespodingPointsAlignment_True_1_3_False_100_False                  7301            9263             69
      CorrespodingPointsAlignment_True_1_3_False_10000_False                7945            9746             64
      CorrespodingPointsAlignment_True_1_20_True_100_False                 13706           41623             37
      CorrespodingPointsAlignment_True_1_20_True_10000_False               11044           33766             46
      CorrespodingPointsAlignment_True_1_20_False_100_False                 9908           28791             51
      CorrespodingPointsAlignment_True_1_20_False_10000_False               9523           18680             53
      CorrespodingPointsAlignment_True_10_3_True_100_False                 29585           32026             17
      CorrespodingPointsAlignment_True_10_3_True_10000_False               29626           36324             18
      CorrespodingPointsAlignment_True_10_3_False_100_False                26013           29253             20
      CorrespodingPointsAlignment_True_10_3_False_10000_False              25000           33820             20
      CorrespodingPointsAlignment_True_10_20_True_100_False                40955           41592             13
      CorrespodingPointsAlignment_True_10_20_True_10000_False              42087           42393             12
      CorrespodingPointsAlignment_True_10_20_False_100_False               39863           40381             13
      CorrespodingPointsAlignment_True_10_20_False_10000_False             40813           41699             13
      CorrespodingPointsAlignment_True_100_3_True_100_False               183146          194745              3
      CorrespodingPointsAlignment_True_100_3_True_10000_False             213789          231466              3
      CorrespodingPointsAlignment_True_100_3_False_100_False              177805          180796              3
      CorrespodingPointsAlignment_True_100_3_False_10000_False            184963          185695              3
      CorrespodingPointsAlignment_True_100_20_True_100_False              347181          347325              2
      CorrespodingPointsAlignment_True_100_20_True_10000_False            363259          363613              2
      CorrespodingPointsAlignment_True_100_20_False_100_False             351769          352496              2
      CorrespodingPointsAlignment_True_100_20_False_10000_False           375629          379818              2
      CorrespodingPointsAlignment_False_1_3_True_100_False                 11155           13770             45
      CorrespodingPointsAlignment_False_1_3_True_10000_False               10743           13938             47
      CorrespodingPointsAlignment_False_1_3_False_100_False                 9578           11511             53
      CorrespodingPointsAlignment_False_1_3_False_10000_False               9549           11984             53
      CorrespodingPointsAlignment_False_1_20_True_100_False                13809           14183             37
      CorrespodingPointsAlignment_False_1_20_True_10000_False              14084           15082             36
      CorrespodingPointsAlignment_False_1_20_False_100_False               12765           14177             40
      CorrespodingPointsAlignment_False_1_20_False_10000_False             12811           13096             40
      CorrespodingPointsAlignment_False_10_3_True_100_False                28823           39384             18
      CorrespodingPointsAlignment_False_10_3_True_10000_False              27135           27525             19
      CorrespodingPointsAlignment_False_10_3_False_100_False               26236           28980             20
      CorrespodingPointsAlignment_False_10_3_False_10000_False             42324           45123             12
      CorrespodingPointsAlignment_False_10_20_True_100_False              723902          723902              1
      CorrespodingPointsAlignment_False_10_20_True_10000_False            220007          252886              3
      CorrespodingPointsAlignment_False_10_20_False_100_False              55593           71636              9
      CorrespodingPointsAlignment_False_10_20_False_10000_False            44419           71861             12
      CorrespodingPointsAlignment_False_100_3_True_100_False              184768          185199              3
      CorrespodingPointsAlignment_False_100_3_True_10000_False            198657          213868              3
      CorrespodingPointsAlignment_False_100_3_False_100_False             224598          309645              3
      CorrespodingPointsAlignment_False_100_3_False_10000_False           197863          202002              3
      CorrespodingPointsAlignment_False_100_20_True_100_False             293484          309459              2
      CorrespodingPointsAlignment_False_100_20_True_10000_False           327253          366644              2
      CorrespodingPointsAlignment_False_100_20_False_100_False            420793          422194              2
      CorrespodingPointsAlignment_False_100_20_False_10000_False          462634          485542              2
      CorrespodingPointsAlignment_True_1_3_True_100_True                    7664            9909             66
      CorrespodingPointsAlignment_True_1_3_True_10000_True                  7190            8366             70
      CorrespodingPointsAlignment_True_1_3_False_100_True                   6549            8316             77
      CorrespodingPointsAlignment_True_1_3_False_10000_True                 6534            7710             77
      CorrespodingPointsAlignment_True_10_3_True_100_True                  29052           32940             18
      CorrespodingPointsAlignment_True_10_3_True_10000_True                30526           33453             17
      CorrespodingPointsAlignment_True_10_3_False_100_True                 28708           32993             18
      CorrespodingPointsAlignment_True_10_3_False_10000_True               30630           35973             17
      CorrespodingPointsAlignment_True_100_3_True_100_True                264909          320820              3
      CorrespodingPointsAlignment_True_100_3_True_10000_True              310902          322604              2
      CorrespodingPointsAlignment_True_100_3_False_100_True               246832          250634              3
      CorrespodingPointsAlignment_True_100_3_False_10000_True             276006          289061              2
      CorrespodingPointsAlignment_False_1_3_True_100_True                  11421           13757             44
      CorrespodingPointsAlignment_False_1_3_True_10000_True                11199           12532             45
      CorrespodingPointsAlignment_False_1_3_False_100_True                 11474           15841             44
      CorrespodingPointsAlignment_False_1_3_False_10000_True               10384           13188             49
      CorrespodingPointsAlignment_False_10_3_True_100_True                 36599           47340             14
      CorrespodingPointsAlignment_False_10_3_True_10000_True               40702           50754             13
      CorrespodingPointsAlignment_False_10_3_False_100_True                41277           52149             13
      CorrespodingPointsAlignment_False_10_3_False_10000_True              34286           37091             15
      CorrespodingPointsAlignment_False_100_3_True_100_True               254991          258578              2
      CorrespodingPointsAlignment_False_100_3_True_10000_True             257999          261285              2
      CorrespodingPointsAlignment_False_100_3_False_100_True              247511          248693              3
      CorrespodingPointsAlignment_False_100_3_False_10000_True            251807          263865              3
      ```
      
      Reviewed By: gkioxari
      
      Differential Revision: D19808389
      
      fbshipit-source-id: 83305a58627d2fc5dcaf3c3015132d8148f28c29
      e5b1d6d3
  2. 01 Apr, 2020 2 commits
    • Patrick Labatut's avatar
      No side effect with invalid inputs to save_obj / save_ply · 745aaf39
      Patrick Labatut authored
      Summary: Do not create output files with invalid inputs to `save_{obj,ply}()`.
      
      Reviewed By: bottler
      
      Differential Revision: D20720282
      
      fbshipit-source-id: 3b611a10da6f6eecacab2a1900bf16f89e2000aa
      745aaf39
    • Patrick Labatut's avatar
      Fix saving / loading empty PLY meshes · 83feed56
      Patrick Labatut authored
      Summary:
      Similar to D20392526, PLY files without vertices or faces should be allowed:
      - a PLY with only vertices can represent a point cloud
      - a PLY without any vertex or face is just empty
      - a PLY with faces referencing inexistent vertices has invalid data
      
      Reviewed By: gkioxari
      
      Differential Revision: D20400330
      
      fbshipit-source-id: 35a5f072603fd221f382c7faad5f37c3e0b49bb1
      83feed56
  3. 30 Mar, 2020 2 commits
    • Jeremy Reizenstein's avatar
      join_meshes_as_batch · b64fe513
      Jeremy Reizenstein authored
      Summary: rename join_meshes to join_meshes_as_batch.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20671293
      
      fbshipit-source-id: e84d6a67d6c1ec28fb5e52d4607db8e92561a4cd
      b64fe513
    • Jeremy Reizenstein's avatar
      fix recent lint · 27eb791e
      Jeremy Reizenstein authored
      Summary: Flowing of compositing comments
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20556707
      
      fbshipit-source-id: 4abdc85e4f65abd41c4a890b6895bc5e95b4576b
      27eb791e
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 18 Mar, 2020 4 commits
  14. 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
  15. 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
  16. 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
  17. 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
  18. 12 Mar, 2020 5 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