1. 23 Aug, 2021 3 commits
    • Jeremy Reizenstein's avatar
      remove PyTorch 1.4 builds · 6c416b31
      Jeremy Reizenstein authored
      Summary: We won't support PyTorch 1.4 in the next release. PyTorch 1.5.0 came out in June 2020, more than a year ago.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D30424388
      
      fbshipit-source-id: 25499096066c9a2b909a0550394f5210409f0d74
      6c416b31
    • Jeremy Reizenstein's avatar
      check for cyclic deps · 77fa5987
      Jeremy Reizenstein authored
      Summary: New test that each subpackage of pytorch3d imports cleanly.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D30001632
      
      fbshipit-source-id: ca8dcac94491fc22f33602b3bbef481cba927094
      77fa5987
    • Pyre Bot Jr's avatar
      suppress errors in `vision/fair/pytorch3d` · fadec970
      Pyre Bot Jr authored
      Differential Revision: D30479084
      
      fbshipit-source-id: 6b22dd0afe4dfb1be6249e43a56657519f11dcf1
      fadec970
  2. 17 Aug, 2021 6 commits
    • Jeremy Reizenstein's avatar
      sample_pdf CUDA and C++ implementations. · 1ea2b727
      Jeremy Reizenstein authored
      Summary: Implement the sample_pdf function from the NeRF project as compiled operators.. The binary search (in searchsorted) is replaced with a low tech linear search, but this is not a problem for the envisaged numbers of bins.
      
      Reviewed By: gkioxari
      
      Differential Revision: D26312535
      
      fbshipit-source-id: df1c3119cd63d944380ed1b2657b6ad81d743e49
      1ea2b727
    • Jeremy Reizenstein's avatar
      Move sample_pdf into PyTorch3D · 7d7d00f2
      Jeremy Reizenstein authored
      Summary: Copy the sample_pdf operation from the NeRF project in to PyTorch3D, in preparation for optimizing it.
      
      Reviewed By: gkioxari
      
      Differential Revision: D27117930
      
      fbshipit-source-id: 20286b007f589a4c4d53ed818c4bc5f2abd22833
      7d7d00f2
    • Jeremy Reizenstein's avatar
      Correct shape for default grid_sizes · b481cfbd
      Jeremy Reizenstein authored
      Summary: Small fix for omitting this argument.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29548610
      
      fbshipit-source-id: f25032fab3faa2f09006f5fcf8628138555f2f20
      b481cfbd
    • Jeremy Reizenstein's avatar
      cpu benchmarks for points to volumes · 46cf1970
      Jeremy Reizenstein authored
      Summary:
      Add a CPU version to the benchmarks.
      
      ```
      Benchmark                                                               Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[25, 25, 25]_1000                    10100           46422             50
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[25, 25, 25]_10000                   28442           32100             18
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[25, 25, 25]_100000                 241127          254269              3
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[101, 111, 121]_1000                 54149           79480             10
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[101, 111, 121]_10000               125459          212734              4
      ADD_POINTS_TO_VOLUMES_cpu_10_trilinear_[101, 111, 121]_100000              512739          512739              1
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[25, 25, 25]_1000                       2866           13365            175
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[25, 25, 25]_10000                      7026           12604             72
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[25, 25, 25]_100000                    48822           55607             11
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[101, 111, 121]_1000                   38098           38576             14
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[101, 111, 121]_10000                  48006           54120             11
      ADD_POINTS_TO_VOLUMES_cpu_10_nearest_[101, 111, 121]_100000                131563          138536              4
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[25, 25, 25]_1000                   64615           91735              8
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[25, 25, 25]_10000                 228815          246095              3
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[25, 25, 25]_100000               3086615         3086615              1
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[101, 111, 121]_1000               464298          465292              2
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[101, 111, 121]_10000             1053440         1053440              1
      ADD_POINTS_TO_VOLUMES_cpu_100_trilinear_[101, 111, 121]_100000            6736236         6736236              1
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[25, 25, 25]_1000                     11940           12440             42
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[25, 25, 25]_10000                    56641           58051              9
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[25, 25, 25]_100000                  711492          711492              1
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[101, 111, 121]_1000                 326437          329846              2
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[101, 111, 121]_10000                418514          427911              2
      ADD_POINTS_TO_VOLUMES_cpu_100_nearest_[101, 111, 121]_100000              1524285         1524285              1
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[25, 25, 25]_1000                  5949           13602             85
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[25, 25, 25]_10000                 5817           13001             86
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[25, 25, 25]_100000               23833           25971             21
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[101, 111, 121]_1000               9029           16178             56
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[101, 111, 121]_10000             11595           18601             44
      ADD_POINTS_TO_VOLUMES_cuda:0_10_trilinear_[101, 111, 121]_100000            46986           47344             11
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[25, 25, 25]_1000                    2554            9747            196
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[25, 25, 25]_10000                   2676            9537            187
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[25, 25, 25]_100000                  6567           14179             77
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[101, 111, 121]_1000                 5840           12811             86
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[101, 111, 121]_10000                6102           13128             82
      ADD_POINTS_TO_VOLUMES_cuda:0_10_nearest_[101, 111, 121]_100000              11945           11995             42
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[25, 25, 25]_1000                 7642           13671             66
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[25, 25, 25]_10000               25190           25260             20
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[25, 25, 25]_100000             212018          212134              3
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[101, 111, 121]_1000             40421           45692             13
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[101, 111, 121]_10000            92078           92132              6
      ADD_POINTS_TO_VOLUMES_cuda:0_100_trilinear_[101, 111, 121]_100000          457211          457229              2
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[25, 25, 25]_1000                   3574           10377            140
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[25, 25, 25]_10000                  7222           13023             70
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[25, 25, 25]_100000                48127           48165             11
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[101, 111, 121]_1000               34732           35295             15
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[101, 111, 121]_10000              43050           51064             12
      ADD_POINTS_TO_VOLUMES_cuda:0_100_nearest_[101, 111, 121]_100000            106028          106058              5
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29522830
      
      fbshipit-source-id: 1e857db03613b0c6afcb68a58cdd7ba032e1a874
      46cf1970
    • Jeremy Reizenstein's avatar
      Points2vols doc fixes · 5491b465
      Jeremy Reizenstein authored
      Summary: Fixes to a couple of comments on points to volumes, make the mask work in round_points_to_volumes, and remove a duplicate rand calculation
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29522845
      
      fbshipit-source-id: 86770ba37ef3942b909baf63fd73eed1399635b6
      5491b465
    • Jeremy Reizenstein's avatar
      let build tests run in conda · ae1387b5
      Jeremy Reizenstein authored
      Summary: Much of the code is actually available during the conda tests, as long as we look in the right place. We enable some of them.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30249357
      
      fbshipit-source-id: 01c57b6b8c04442237965f23eded594aeb90abfb
      ae1387b5
  3. 16 Aug, 2021 1 commit
    • Jeremy Reizenstein's avatar
      rename master branch to main · b0dd0c88
      Jeremy Reizenstein authored
      Summary: Change doc references to master branch to its new name main.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30303018
      
      fbshipit-source-id: cfdbb207dfe3366de7e0ca759ed56f4b8dd894d1
      b0dd0c88
  4. 12 Aug, 2021 3 commits
    • Nikhila Ravi's avatar
      Ball Query · 103da633
      Nikhila Ravi authored
      Summary:
      Implementation of ball query from PointNet++.  This function is similar to KNN (find the neighbors in p2 for all points in p1). These are the key differences:
      -  It will return the **first** K neighbors within a specified radius as opposed to the **closest** K neighbors.
      - As all the points in p2 do not need to be considered to find the closest K, the algorithm is much faster than KNN when p2 has a large number of points.
      - The neighbors are not sorted
      - Due to the radius threshold it is not guaranteed that there will be K neighbors even if there are more than K points in p2.
      - The padding value for `idx` is -1 instead of 0.
      
      # Note:
      - Some of the code is very similar to KNN so it could be possible to modify the KNN forward kernels to support ball query.
      - Some users might want to use kNN with ball query - for this we could provide a wrapper function around the current `knn_points` which enables applying the radius threshold afterwards as an alternative. This could be called `ball_query_knn`.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D30261362
      
      fbshipit-source-id: 66b6a7e0114beff7164daf7eba21546ff41ec450
      103da633
    • Jeremy Reizenstein's avatar
      Test website metadata · e5c58a8a
      Jeremy Reizenstein authored
      Summary: New test that notes and tutorials are listed in the website metadata, so that they will be included in the website build.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30223799
      
      fbshipit-source-id: 2dca9730b54e68da2fd430a7b47cb7e18814d518
      e5c58a8a
    • Jeremy Reizenstein's avatar
      Add new doc and new tutorials to website · 64faedfd
      Jeremy Reizenstein authored
      Summary: Recent additions need to be included.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30223717
      
      fbshipit-source-id: 4b29a4132ea6fb7c1a530aac5d1e36aa61c663bb
      64faedfd
  5. 10 Aug, 2021 1 commit
  6. 09 Aug, 2021 1 commit
    • Nikhila Ravi's avatar
      Fix to allow cameras in the renderer forward pass · 80411783
      Nikhila Ravi authored
      Summary: Fix to resolve GitHub issue #796 - the cameras were being passed in the renderer forward pass instead of at initialization. The rasterizer was correctly using the cameras passed in the `kwargs` for the projection, but the `cameras` are still part of the `kwargs` for the `get_screen_to_ndc_transform` and `get_ndc_to_screen_transform` functions which is causing issues about duplicate arguments.
      
      Reviewed By: bottler
      
      Differential Revision: D30175679
      
      fbshipit-source-id: 547e88d8439456e728fa2772722df5fa0fe4584d
      80411783
  7. 03 Aug, 2021 5 commits
    • Jeremy Reizenstein's avatar
      version 0.5.0 · 4046677c
      Jeremy Reizenstein authored
      Summary: PyTorch3D version 0.5.0
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29538174
      
      fbshipit-source-id: 332516faa1d8e7bfa7c74ec3fecddc55439e2550
      4046677c
    • Jeremy Reizenstein's avatar
      update tutorials for new prebuilt version · addbe49d
      Jeremy Reizenstein authored
      Summary: At the next release, the prebuilt PyTorch3D wheels will depend on PyTorch 1.9.0. Update the tutorials to expect this.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29614450
      
      fbshipit-source-id: 39978a6a55b62fb7c7e62aaa8f138e47cadd631e
      addbe49d
    • Jeremy Reizenstein's avatar
      update INSTALL.md for next release · 4d2c0600
      Jeremy Reizenstein authored
      Summary: New Python, new PyTorches.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29538175
      
      fbshipit-source-id: f7086ef84a2993c760a1b1f668a3336e898c801e
      4d2c0600
    • Jeremy Reizenstein's avatar
      PyTorch 1.4 compat · 5ecce832
      Jeremy Reizenstein authored
      Summary: Restore compatibility with PyTorch 1.4 and 1.5, and a few lint fixes.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D30048115
      
      fbshipit-source-id: ee05efa7c625f6079fb06a3cc23be93e48df9433
      5ecce832
    • CodemodService Bot's avatar
      Daily `arc lint --take BLACK` · 55aaec4d
      CodemodService Bot authored
      Reviewed By: wynsmart
      
      Differential Revision: D30065248
      
      fbshipit-source-id: 600915ab43d3d6d4846f60f976391f9dc1d77d10
      55aaec4d
  8. 02 Aug, 2021 1 commit
    • Georgia Gkioxari's avatar
      NDC/screen cameras API fix, compatibility with renderer · 0c32f094
      Georgia Gkioxari authored
      Summary:
      API fix for NDC/screen cameras and compatibility with PyTorch3D renderers.
      
      With this new fix:
      * Users can define cameras and `transform_points` under any coordinate system conventions. The transformation applies the camera K and RT to the input points, not regarding for PyTorch3D conventions. So this makes cameras completely independent from PyTorch3D renderer.
      
      * Cameras can be defined either in NDC space or screen space. For existing ones, FoV cameras are in NDC space. Perspective/Orthographic can be defined in NDC or screen space.
      
      * The interface with PyTorch3D renderers happens through `transform_points_ndc` which transforms points to the NDC space and assumes that input points are provided according to PyTorch3D conventions.
      
      * Similarly, `transform_points_screen` transforms points to screen space and again assumes that input points are under PyTorch3D conventions.
      
      * For Orthographic/Perspective cameras, if they are defined in screen space, the `get_ndc_camera_transform` allows points to be converted to NDC for use for the renderers.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D26932657
      
      fbshipit-source-id: 1a964e3e7caa54d10c792cf39c4d527ba2fb2e79
      0c32f094
  9. 30 Jul, 2021 1 commit
    • Patrick Labatut's avatar
      Fix circular import · 9a14f54e
      Patrick Labatut authored
      Summary: This fixes a recently introduced circular import: the problem went unnoticed by having `pytorch3d.renderer` imported first...
      
      Reviewed By: bottler
      
      Differential Revision: D29686235
      
      fbshipit-source-id: 4b9f2faecec2cc8347ee259cfc359dc9e4f67784
      9a14f54e
  10. 28 Jul, 2021 1 commit
  11. 23 Jul, 2021 1 commit
    • Roman Shapovalov's avatar
      Improving RayBundle docstrings · e794d062
      Roman Shapovalov authored
      Summary: This changes only documentation. We want to be explicit that ray directions are not normalised (nor assumed to be normalised) but their magnitude is used.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29845210
      
      fbshipit-source-id: b81fb3da13a42ad20e8721ed5271fd4f3d8f5acb
      e794d062
  12. 19 Jul, 2021 3 commits
    • Jeremy Reizenstein's avatar
      path_manager in obj_io · 1872e024
      Jeremy Reizenstein authored
      Summary: Use PathManager for checking file existence, rather than assuming the path is a local file, in a couple of cases.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29734621
      
      fbshipit-source-id: e2236a7c2c50ba6916936a4d786abd601205b519
      1872e024
    • Jeremy Reizenstein's avatar
      restore build tests · 9e8d91eb
      Jeremy Reizenstein authored
      Summary: A bad env var check meant these tests were not being run. Fix that, and fix the copyright test for the new message format.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29734562
      
      fbshipit-source-id: a1a9bb68901b09c71c7b4ff81a04083febca8d50
      9e8d91eb
    • Alexey Sidnev's avatar
      Replace `torch.det()` with manual implementation for 3x3 matrix · bcee361d
      Alexey Sidnev authored
      Summary:
      # Background
      There is an unstable error during training (it can happen after several minutes or after several hours).
      The error is connected to `torch.det()` function in  `_check_valid_rotation_matrix()`.
      
      if I remove the function `torch.det()` in `_check_valid_rotation_matrix()` or remove the whole functions `_check_valid_rotation_matrix()` the error is disappeared (D29555876).
      
      # Solution
      Replace `torch.det()` with manual implementation for 3x3 matrix.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29655924
      
      fbshipit-source-id: 41bde1119274a705ab849751ece28873d2c45155
      bcee361d
  13. 16 Jul, 2021 1 commit
    • Alexey Sidnev's avatar
      Disable gradient calculation in `_check_valid_rotation_matrix()` · 2f668ece
      Alexey Sidnev authored
      Summary:
      # Make `transform3d.py` a little bit better (performance and code quality)
      
      ## 1. Add decorator `torch.no_grad()` to the function `_check_valid_rotation_matrix()`
      
      Function `_check_valid_rotation_matrix()` is needed to identify errors during forward pass only, it's not used for gradients.
      
      ## 2. Replace two calls `to` with the single one
      
      Reviewed By: bottler
      
      Differential Revision: D29656501
      
      fbshipit-source-id: 4419e24dbf436c1b60abf77bda4376fb87a593be
      2f668ece
  14. 13 Jul, 2021 1 commit
    • Roman Shapovalov's avatar
      Adding utility methods to TensorProperties · 0c02ae90
      Roman Shapovalov authored
      Summary:
      Context: in the code we are releasing with CO3D dataset, we use  `cuda()` on TensorProperties like Pointclouds and Cameras where we recursively move batch to a GPU. It would be good to push it to a release so we don’t need to depend on the nightly build.
      
      Additionally, I aligned the logic of `.to("cuda")` without device index to the one of `torch.Tensor` where the current device is populated to index. It should not affect any actual use cases but some tests had to be changed.
      
      Reviewed By: bottler
      
      Differential Revision: D29659529
      
      fbshipit-source-id: abe58aeaca14bacc68da3e6cf5ae07df3353e3ce
      0c02ae90
  15. 10 Jul, 2021 2 commits
  16. 09 Jul, 2021 1 commit
    • Patrick Labatut's avatar
      Use rotation matrices for OpenCV / PyTorch3D conversions · fef5bcd8
      Patrick Labatut authored
      Summary: Use rotation matrices for OpenCV / PyTorch3D conversions: this avoids hiding issues with conversions to / from axis-angle vectors and ensure new conversion functions have a consistent interface.
      
      Reviewed By: bottler, classner
      
      Differential Revision: D29634099
      
      fbshipit-source-id: 40b28357914eb563fedea60a965dcf69e848ccfa
      fef5bcd8
  17. 07 Jul, 2021 1 commit
  18. 06 Jul, 2021 1 commit
  19. 05 Jul, 2021 1 commit
    • Jeremy Reizenstein's avatar
      xcode update for mac builds · 68a35543
      Jeremy Reizenstein authored
      Summary: Avoid using old xcode which CircleCI say is deprecated.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29538176
      
      fbshipit-source-id: 1e2ae4845d42365c778536446958966bbecf188c
      68a35543
  20. 02 Jul, 2021 1 commit
    • David Novotny's avatar
      RayBundle visualization · 4426a9d1
      David Novotny authored
      Summary: Extends plotly_vis to visualize `RayBundle`s.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29014098
      
      fbshipit-source-id: 4dee426510a1fa53d4afefbe1bcdd003684c9932
      4426a9d1
  21. 01 Jul, 2021 2 commits
    • Jeremy Reizenstein's avatar
      points2volumes benchmark run alone · 62ff77b4
      Jeremy Reizenstein authored
      Summary: Enable this benchmark to be run on its own, like others.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29522846
      
      fbshipit-source-id: c7b3b5c9a0fcdeeb79d8b2ec197684b4380aa547
      62ff77b4
    • Jeremy Reizenstein's avatar
      lint fixes · 61754b2f
      Jeremy Reizenstein authored
      Summary: Fixing recent lint problems.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29522647
      
      fbshipit-source-id: 9bd89fbfa512ecd7359ec355cf12b16fb7024b47
      61754b2f
  22. 29 Jun, 2021 2 commits