1. 03 Apr, 2020 1 commit
    • Roman Shapovalov's avatar
      Weighted Umeyama. · e37085d9
      Roman Shapovalov authored
      Summary:
      1. Introduced weights to Umeyama implementation. This will be needed for weighted ePnP but is useful on its own.
      2. Refactored to use the same code for the Pointclouds mask and passed weights.
      3. Added test cases with random weights.
      4. Fixed a bug in tests that calls the function with 0 points (fails randomly in Pytorch 1.3, will be fixed in the next release: https://github.com/pytorch/pytorch/issues/31421 ).
      
      Reviewed By: gkioxari
      
      Differential Revision: D20070293
      
      fbshipit-source-id: e9f549507ef6dcaa0688a0f17342e6d7a9a4336c
      e37085d9
  2. 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
  3. 01 Apr, 2020 1 commit
    • 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
  4. 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
  5. 29 Mar, 2020 2 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
    • 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
  6. 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
  7. 26 Mar, 2020 1 commit
    • 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
  8. 23 Mar, 2020 1 commit
    • 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
  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. 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
  11. 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
  12. 18 Mar, 2020 2 commits
  13. 17 Mar, 2020 2 commits
  14. 16 Mar, 2020 1 commit
    • 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
  15. 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
  16. 13 Mar, 2020 1 commit
    • 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
  17. 12 Mar, 2020 4 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
  18. 11 Mar, 2020 1 commit
    • 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
  19. 06 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      Fix coordinate system conventions in renderer · 15c72be4
      Nikhila Ravi authored
      Summary:
      ## Updates
      
      - Defined the world and camera coordinates according to this figure. The world coordinates are defined as having +Y up, +X left and +Z in.
      
      {F230888499}
      
      - Removed all flipping from blending functions.
      - Updated the rasterizer to return images with +Y up and +X left.
      - Updated all the mesh rasterizer tests
          - The expected values are now defined in terms of the default +Y up, +X left
          - Added tests where the triangles in the meshes are non symmetrical so that it is clear which direction +X and +Y are
      
      ## Questions:
      - Should we have **scene settings** instead of raster settings?
          - To be more correct we should be [z clipping in the rasterizer based on the far/near clipping planes](https://github.com/ShichenLiu/SoftRas/blob/master/soft_renderer/cuda/soft_rasterize_cuda_kernel.cu#L400) - these values are also required in the blending functions so should we make these scene level parameters and have a scene settings tuple which is available to the rasterizer and shader?
      
      Reviewed By: gkioxari
      
      Differential Revision: D20208604
      
      fbshipit-source-id: 55787301b1bffa0afa9618f0a0886cc681da51f3
      15c72be4
  20. 04 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      pointcloud structure · 767d68a3
      Georgia Gkioxari authored
      Summary:
      Revisions to Poincloud data structure with added normals
      
      The biggest changes form the previous version include:
      a) If the user provides tensor inputs, we make no assumption about padding. Padding is only for internal use for us to convert from list to padded
      b) If features are not provided or if the poincloud is empty, all forms of features are None. This is so that we don't waste memory on holding dummy tensors.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19791851
      
      fbshipit-source-id: 7e182f7bb14395cb966531653f6dd6b328fd999c
      767d68a3
  21. 01 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      Blending fixes and test updates · ba11c0b5
      Nikhila Ravi authored
      Summary:
      Changed `torch.cumprod` to `torch.prod` in blending functions and added more tests and benchmark tests.
      
      This should fix the issue raised on GitHub.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20163073
      
      fbshipit-source-id: 4569fd37be11aa4435a3ce8736b55622c00ec718
      ba11c0b5
  22. 29 Feb, 2020 1 commit
    • Nikhila Ravi's avatar
      Barycentric clipping in the renderer and flat shading · ff19c642
      Nikhila Ravi authored
      Summary:
      Updates to the Renderer to enable barycentric clipping. This is important when there is blurring in the rasterization step.
      
      Also added support for flat shading.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19934259
      
      fbshipit-source-id: 036e48636cd80d28a04405d7a29fcc71a2982904
      ff19c642
  23. 24 Feb, 2020 1 commit
  24. 21 Feb, 2020 1 commit
    • Jeremy Reizenstein's avatar
      lint things · e491efb8
      Jeremy Reizenstein authored
      Summary:
      Lint related fixes: Improve internal/OSS consistency. Fix the fight between black and certain pyre-ignore markers by moving them to the line before.
      Use clang-format-8 automatically if present. Small number of pyre fixes.
      
      arc doesn't run pyre at the moment, so I put back the explicit call to pyre. I don't know if there's an option somewhere to change this.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19780518
      
      fbshipit-source-id: ef1c243392322fa074130f6cff2dd8a6f7738a7f
      e491efb8
  25. 20 Feb, 2020 3 commits
    • Georgia Gkioxari's avatar
      face areas backward · a3baa367
      Georgia Gkioxari authored
      Summary:
      Added backward for mesh face areas & normals. Exposed it as a layer. Replaced the computation with the new op in Meshes and in Sample Points.
      
      Current issue: Circular imports. I moved the import of the op in meshes inside the function scope.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19920082
      
      fbshipit-source-id: d213226d5e1d19a0c8452f4d32771d07e8b91c0a
      a3baa367
    • Patrick Labatut's avatar
      Fix spelling of "Gouraud" · 9ca54891
      Patrick Labatut authored
      Summary: Fix spelling of *Gouraud* in [Gouraud shading](https://en.wikipedia.org/wiki/Gouraud_shading).
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19943547
      
      fbshipit-source-id: 5c016b7b051a7b33a7b68ed5303b642d9e834bbd
      9ca54891
    • Nikhila Ravi's avatar
      Shader API more consistent naming · f0dc6511
      Nikhila Ravi authored
      Summary:
      Renamed shaders to be prefixed with Hard/Soft depending on if they use a probabalistic blending (Soft) or use the closest face (Hard).
      
      There is some code duplication but I thought it would be cleaner to have separate shaders for each task rather than:
      - inheritance (which we discussed previously that we want to avoid)
      - boolean (hard/soft) or a string (hard/soft) - new blending functions other than the ones provided would need if statements in the current shaders which might get messy.
      
      Also added a `flat_shading` function and a `FlatShader` - I could make this into a tutorial as it was really easy to add a new shader and it might be a nice showcase.
      
      NOTE: There are a few more places where the naming will need to change (e.g the tutorials) but I wanted to reach a consensus on this before changing it everywhere.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19761036
      
      fbshipit-source-id: f972f6530c7f66dc5550b0284c191abc4a7f6fc4
      f0dc6511
  26. 19 Feb, 2020 2 commits
    • Georgia Gkioxari's avatar
      cpp support for packed to padded · 60f3c4e7
      Georgia Gkioxari authored
      Summary:
      Cpu implementation for packed to padded and added gradients
      ```
      Benchmark                                     Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      PACKED_TO_PADDED_2_100_300_1_cpu                    138             221           3625
      PACKED_TO_PADDED_2_100_300_1_cuda:0                 184             261           2716
      PACKED_TO_PADDED_2_100_300_16_cpu                   555             726            901
      PACKED_TO_PADDED_2_100_300_16_cuda:0                179             260           2794
      PACKED_TO_PADDED_2_100_3000_1_cpu                   396             519           1262
      PACKED_TO_PADDED_2_100_3000_1_cuda:0                181             274           2764
      PACKED_TO_PADDED_2_100_3000_16_cpu                 4517            5003            111
      PACKED_TO_PADDED_2_100_3000_16_cuda:0               224             397           2235
      PACKED_TO_PADDED_2_1000_300_1_cpu                   138             212           3616
      PACKED_TO_PADDED_2_1000_300_1_cuda:0                180             282           2775
      PACKED_TO_PADDED_2_1000_300_16_cpu                  565             711            885
      PACKED_TO_PADDED_2_1000_300_16_cuda:0               179             264           2797
      PACKED_TO_PADDED_2_1000_3000_1_cpu                  389             494           1287
      PACKED_TO_PADDED_2_1000_3000_1_cuda:0               180             271           2777
      PACKED_TO_PADDED_2_1000_3000_16_cpu                4522            5170            111
      PACKED_TO_PADDED_2_1000_3000_16_cuda:0              216             286           2313
      PACKED_TO_PADDED_10_100_300_1_cpu                   251             345           1995
      PACKED_TO_PADDED_10_100_300_1_cuda:0                178             262           2806
      PACKED_TO_PADDED_10_100_300_16_cpu                 2354            2750            213
      PACKED_TO_PADDED_10_100_300_16_cuda:0               178             291           2814
      PACKED_TO_PADDED_10_100_3000_1_cpu                 1519            1786            330
      PACKED_TO_PADDED_10_100_3000_1_cuda:0               179             237           2791
      PACKED_TO_PADDED_10_100_3000_16_cpu               24705           25879             21
      PACKED_TO_PADDED_10_100_3000_16_cuda:0              228             316           2191
      PACKED_TO_PADDED_10_1000_300_1_cpu                  261             432           1919
      PACKED_TO_PADDED_10_1000_300_1_cuda:0               181             261           2756
      PACKED_TO_PADDED_10_1000_300_16_cpu                2349            2770            213
      PACKED_TO_PADDED_10_1000_300_16_cuda:0              180             256           2782
      PACKED_TO_PADDED_10_1000_3000_1_cpu                1613            1929            310
      PACKED_TO_PADDED_10_1000_3000_1_cuda:0              183             253           2739
      PACKED_TO_PADDED_10_1000_3000_16_cpu              22041           23653             23
      PACKED_TO_PADDED_10_1000_3000_16_cuda:0             220             343           2270
      PACKED_TO_PADDED_32_100_300_1_cpu                   555             750            901
      PACKED_TO_PADDED_32_100_300_1_cuda:0                188             282           2661
      PACKED_TO_PADDED_32_100_300_16_cpu                 7550            8131             67
      PACKED_TO_PADDED_32_100_300_16_cuda:0               181             272           2770
      PACKED_TO_PADDED_32_100_3000_1_cpu                 4574            6327            110
      PACKED_TO_PADDED_32_100_3000_1_cuda:0               173             254           2884
      PACKED_TO_PADDED_32_100_3000_16_cpu               70366           72563              8
      PACKED_TO_PADDED_32_100_3000_16_cuda:0              349             654           1433
      PACKED_TO_PADDED_32_1000_300_1_cpu                  612             728            818
      PACKED_TO_PADDED_32_1000_300_1_cuda:0               189             295           2647
      PACKED_TO_PADDED_32_1000_300_16_cpu                7699            8254             65
      PACKED_TO_PADDED_32_1000_300_16_cuda:0              189             311           2646
      PACKED_TO_PADDED_32_1000_3000_1_cpu                5105            5261             98
      PACKED_TO_PADDED_32_1000_3000_1_cuda:0              191             260           2625
      PACKED_TO_PADDED_32_1000_3000_16_cpu              87073           92708              6
      PACKED_TO_PADDED_32_1000_3000_16_cuda:0             344             425           1455
      --------------------------------------------------------------------------------
      
      Benchmark                                           Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      PACKED_TO_PADDED_TORCH_2_100_300_1_cpu                    492             627           1016
      PACKED_TO_PADDED_TORCH_2_100_300_1_cuda:0                 768             975            652
      PACKED_TO_PADDED_TORCH_2_100_300_16_cpu                   659             804            760
      PACKED_TO_PADDED_TORCH_2_100_300_16_cuda:0                781             918            641
      PACKED_TO_PADDED_TORCH_2_100_3000_1_cpu                   624             734            802
      PACKED_TO_PADDED_TORCH_2_100_3000_1_cuda:0                778             929            643
      PACKED_TO_PADDED_TORCH_2_100_3000_16_cpu                 2609            2850            192
      PACKED_TO_PADDED_TORCH_2_100_3000_16_cuda:0               758             901            660
      PACKED_TO_PADDED_TORCH_2_1000_300_1_cpu                   467             612           1072
      PACKED_TO_PADDED_TORCH_2_1000_300_1_cuda:0                772             905            648
      PACKED_TO_PADDED_TORCH_2_1000_300_16_cpu                  689             839            726
      PACKED_TO_PADDED_TORCH_2_1000_300_16_cuda:0               789            1143            635
      PACKED_TO_PADDED_TORCH_2_1000_3000_1_cpu                  629             735            795
      PACKED_TO_PADDED_TORCH_2_1000_3000_1_cuda:0               812             916            616
      PACKED_TO_PADDED_TORCH_2_1000_3000_16_cpu                2716            3117            185
      PACKED_TO_PADDED_TORCH_2_1000_3000_16_cuda:0              844            1288            593
      PACKED_TO_PADDED_TORCH_10_100_300_1_cpu                  2387            2557            210
      PACKED_TO_PADDED_TORCH_10_100_300_1_cuda:0               4112            4993            122
      PACKED_TO_PADDED_TORCH_10_100_300_16_cpu                 3385            4254            148
      PACKED_TO_PADDED_TORCH_10_100_300_16_cuda:0              3959            4902            127
      PACKED_TO_PADDED_TORCH_10_100_3000_1_cpu                 2918            3105            172
      PACKED_TO_PADDED_TORCH_10_100_3000_1_cuda:0              4054            4450            124
      PACKED_TO_PADDED_TORCH_10_100_3000_16_cpu               12748           13623             40
      PACKED_TO_PADDED_TORCH_10_100_3000_16_cuda:0             4023            4395            125
      PACKED_TO_PADDED_TORCH_10_1000_300_1_cpu                 2258            2492            222
      PACKED_TO_PADDED_TORCH_10_1000_300_1_cuda:0              3997            4312            126
      PACKED_TO_PADDED_TORCH_10_1000_300_16_cpu                3404            3597            147
      PACKED_TO_PADDED_TORCH_10_1000_300_16_cuda:0             3877            4227            129
      PACKED_TO_PADDED_TORCH_10_1000_3000_1_cpu                2789            3054            180
      PACKED_TO_PADDED_TORCH_10_1000_3000_1_cuda:0             3821            4402            131
      PACKED_TO_PADDED_TORCH_10_1000_3000_16_cpu              11967           12963             42
      PACKED_TO_PADDED_TORCH_10_1000_3000_16_cuda:0            3729            4290            135
      PACKED_TO_PADDED_TORCH_32_100_300_1_cpu                  6933            8152             73
      PACKED_TO_PADDED_TORCH_32_100_300_1_cuda:0              11856           12287             43
      PACKED_TO_PADDED_TORCH_32_100_300_16_cpu                 9895           11205             51
      PACKED_TO_PADDED_TORCH_32_100_300_16_cuda:0             12354           13596             41
      PACKED_TO_PADDED_TORCH_32_100_3000_1_cpu                 9516           10128             53
      PACKED_TO_PADDED_TORCH_32_100_3000_1_cuda:0             12917           13597             39
      PACKED_TO_PADDED_TORCH_32_100_3000_16_cpu               41209           43783             13
      PACKED_TO_PADDED_TORCH_32_100_3000_16_cuda:0            12210           13288             41
      PACKED_TO_PADDED_TORCH_32_1000_300_1_cpu                 7179            7689             70
      PACKED_TO_PADDED_TORCH_32_1000_300_1_cuda:0             11896           12381             43
      PACKED_TO_PADDED_TORCH_32_1000_300_16_cpu               10127           15494             50
      PACKED_TO_PADDED_TORCH_32_1000_300_16_cuda:0            12034           12817             42
      PACKED_TO_PADDED_TORCH_32_1000_3000_1_cpu                8743           10251             58
      PACKED_TO_PADDED_TORCH_32_1000_3000_1_cuda:0            12023           12908             42
      PACKED_TO_PADDED_TORCH_32_1000_3000_16_cpu              39071           41777             13
      PACKED_TO_PADDED_TORCH_32_1000_3000_16_cuda:0           11999           13690             42
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: bottler, nikhilaravi, jcjohnson
      
      Differential Revision: D19870575
      
      fbshipit-source-id: 23a2477b73373c411899633386c87ab034c3702a
      60f3c4e7
    • Nikhila Ravi's avatar
      transforms 3d convention fix · 8301163d
      Nikhila Ravi authored
      Summary: Fixed the rotation matrices generated by the RotateAxisAngle class and updated the tests. Added documentation for Transforms3d to clarify the conventions.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19912903
      
      fbshipit-source-id: c64926ce4e1381b145811557c32b73663d6d92d1
      8301163d
  27. 14 Feb, 2020 1 commit
    • Nikhila Ravi's avatar
      lint fixes · 97acf16d
      Nikhila Ravi authored
      Summary: Ran `dev/linter.sh`.
      
      Reviewed By: bottler
      
      Differential Revision: D19761062
      
      fbshipit-source-id: 1a49abe4a5f2bc7641b2b46e254aa77e6a48aa7d
      97acf16d
  28. 13 Feb, 2020 2 commits
    • Georgia Gkioxari's avatar
      CPU implem for face areas normals · 29cd181a
      Georgia Gkioxari authored
      Summary:
      Added cpu implementation for face areas normals. Moved test and bm to separate functions.
      
      ```
      Benchmark                                   Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      FACE_AREAS_NORMALS_2_100_300_False                196             268           2550
      FACE_AREAS_NORMALS_2_100_300_True                 106             179           4733
      FACE_AREAS_NORMALS_2_100_3000_False              1447            1630            346
      FACE_AREAS_NORMALS_2_100_3000_True                107             178           4674
      FACE_AREAS_NORMALS_2_1000_300_False               201             309           2486
      FACE_AREAS_NORMALS_2_1000_300_True                107             186           4673
      FACE_AREAS_NORMALS_2_1000_3000_False             1451            1636            345
      FACE_AREAS_NORMALS_2_1000_3000_True               107             186           4655
      FACE_AREAS_NORMALS_10_100_300_False               767             918            653
      FACE_AREAS_NORMALS_10_100_300_True                106             167           4712
      FACE_AREAS_NORMALS_10_100_3000_False             7036            7754             72
      FACE_AREAS_NORMALS_10_100_3000_True               113             164           4445
      FACE_AREAS_NORMALS_10_1000_300_False              748             947            669
      FACE_AREAS_NORMALS_10_1000_300_True               108             169           4638
      FACE_AREAS_NORMALS_10_1000_3000_False            7069            7783             71
      FACE_AREAS_NORMALS_10_1000_3000_True              108             172           4646
      FACE_AREAS_NORMALS_32_100_300_False              2286            2496            219
      FACE_AREAS_NORMALS_32_100_300_True                108             180           4631
      FACE_AREAS_NORMALS_32_100_3000_False            23184           24369             22
      FACE_AREAS_NORMALS_32_100_3000_True               159             213           3147
      FACE_AREAS_NORMALS_32_1000_300_False             2414            2645            208
      FACE_AREAS_NORMALS_32_1000_300_True               112             197           4480
      FACE_AREAS_NORMALS_32_1000_3000_False           21687           22964             24
      FACE_AREAS_NORMALS_32_1000_3000_True              141             211           3540
      --------------------------------------------------------------------------------
      
      Benchmark                                         Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      FACE_AREAS_NORMALS_TORCH_2_100_300_False               5465            5782             92
      FACE_AREAS_NORMALS_TORCH_2_100_300_True                1198            1351            418
      FACE_AREAS_NORMALS_TORCH_2_100_3000_False             48228           48869             11
      FACE_AREAS_NORMALS_TORCH_2_100_3000_True               1186            1304            422
      FACE_AREAS_NORMALS_TORCH_2_1000_300_False              5556            6097             90
      FACE_AREAS_NORMALS_TORCH_2_1000_300_True               1200            1328            417
      FACE_AREAS_NORMALS_TORCH_2_1000_3000_False            48683           50016             11
      FACE_AREAS_NORMALS_TORCH_2_1000_3000_True              1185            1306            422
      FACE_AREAS_NORMALS_TORCH_10_100_300_False             24215           25097             21
      FACE_AREAS_NORMALS_TORCH_10_100_300_True               1150            1314            435
      FACE_AREAS_NORMALS_TORCH_10_100_3000_False           232605          234952              3
      FACE_AREAS_NORMALS_TORCH_10_100_3000_True              1193            1314            420
      FACE_AREAS_NORMALS_TORCH_10_1000_300_False            24912           25343             21
      FACE_AREAS_NORMALS_TORCH_10_1000_300_True              1216            1330            412
      FACE_AREAS_NORMALS_TORCH_10_1000_3000_False          239907          241253              3
      FACE_AREAS_NORMALS_TORCH_10_1000_3000_True             1226            1333            408
      FACE_AREAS_NORMALS_TORCH_32_100_300_False             73991           75776              7
      FACE_AREAS_NORMALS_TORCH_32_100_300_True               1193            1339            420
      FACE_AREAS_NORMALS_TORCH_32_100_3000_False           728932          728932              1
      FACE_AREAS_NORMALS_TORCH_32_100_3000_True              1186            1359            422
      FACE_AREAS_NORMALS_TORCH_32_1000_300_False            76385           79129              7
      FACE_AREAS_NORMALS_TORCH_32_1000_300_True              1165            1310            430
      FACE_AREAS_NORMALS_TORCH_32_1000_3000_False          753276          753276              1
      FACE_AREAS_NORMALS_TORCH_32_1000_3000_True             1205            1340            415
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: bottler, jcjohnson
      
      Differential Revision: D19864385
      
      fbshipit-source-id: 3a87ae41a8e3ab5560febcb94961798f2e09dfb8
      29cd181a
    • Jeremy Reizenstein's avatar
      Single function to load meshes from OBJs. join_meshes. · 8fe65d5f
      Jeremy Reizenstein authored
      Summary:
      Create the textures and the Meshes object from OBJ files in a single call.
      
      There is functionality in OBJ files (like normals) which is ignored by this function.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19691699
      
      fbshipit-source-id: e26442ed80ff231b65b17d6c54c9d41e22b4e4a3
      8fe65d5f
  29. 03 Feb, 2020 1 commit
    • Justin Johnson's avatar
      Add CPU implementation for nearest neighbor · e290f87c
      Justin Johnson authored
      Summary:
      Adds a CPU implementation for `pytorch3d.ops.nn_points_idx`.
      
      Also renames the associated C++ and CUDA functions to use `AllCaps` names used in other C++ / CUDA code.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19670491
      
      fbshipit-source-id: 1b6409404025bf05e6a93f5d847e35afc9062f05
      e290f87c