1. 09 Sep, 2021 1 commit
  2. 08 Sep, 2021 3 commits
    • Justin Johnson's avatar
      Unify coarse rasterization for points and meshes · bbc75732
      Justin Johnson authored
      Summary:
      There has historically been a lot of duplication between the coarse rasterization logic for point clouds and meshes. This diff factors out the shared logic, so coarse rasterization of point clouds and meshes share the same core logic.
      
      Previously the only difference between the coarse rasterization kernels for points and meshes was the logic for checking whether a {point / triangle} intersects a tile in the image. We implement a generic coarse rasterization kernel that takes a set of 2D bounding boxes rather than geometric primitives; we then implement separate kernels that compute 2D bounding boxes for points and triangles.
      
      This change does not affect the Python API at all. It also should not change any rasterization behavior, since this diff is just a refactoring of the existing logic.
      
      I see this diff as the first in a few pieces of rasterizer refactoring. Followup diffs should do the following:
      - Add a check for bin overflow in the generic coarse rasterizer kernel: allocate a global scalar to flag bin overflow which kernel worker threads can write to in case they detect bin overflow. The C++ launcher function can then check this flag after the kernel returns and issue a warning to the user in case of overflow.
      - As a slightly more involved mechanism, if bin overflow is detected then the coarse kernel can continue running in order to count how many elements fall into each bin, without actually writing out their indices to the coarse output tensor. Then the actual number of entries per bin can be used to re-allocate the output tensor and re-run the coarse rasterization kernel so that bin overflow can be automatically avoided.
      - The unification of the coarse and fine rasterization kernels also allows us to insert an extra CUDA kernel prior to coarse rasterization that filters out primitives outside the view frustum. This would be helpful for rendering full scenes (e.g. Matterport data) where only a small piece of the mesh is actually visible at any one time.
      
      Reviewed By: bottler
      
      Differential Revision: D25710361
      
      fbshipit-source-id: 9c9dea512cb339c42adb3c92e7733fedd586ce1b
      bbc75732
    • Justin Johnson's avatar
      Refactor mesh coarse rasterization · eed68f45
      Justin Johnson authored
      Summary: Renaming parts of the mesh coarse rasterization and separating the bounding box calculation. All in preparation for sharing code with point rasterization.
      
      Reviewed By: bottler
      
      Differential Revision: D30369112
      
      fbshipit-source-id: 3508c0b1239b355030cfa4038d5f3d6a945ebbf4
      eed68f45
    • Justin Johnson's avatar
      Move coarse rasterization to new file · 62dbf371
      Justin Johnson authored
      Summary: In preparation for sharing coarse rasterization between point clouds and meshes, move the functions to a new file. No code changes.
      
      Reviewed By: bottler
      
      Differential Revision: D30367812
      
      fbshipit-source-id: 9e73835a26c4ac91f5c9f61ff682bc8218e36c6a
      62dbf371
  3. 02 Sep, 2021 1 commit
    • Jeremy Reizenstein's avatar
      update test_build for robustness · f2c44e35
      Jeremy Reizenstein authored
      Summary: Change cyclic deps test to be independent of test discovery order. Also let it work without plotly.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30669614
      
      fbshipit-source-id: 2eadf3f8b56b6096c5466ce53b4f8ac6df27b964
      f2c44e35
  4. 01 Sep, 2021 3 commits
    • Jeremy Reizenstein's avatar
      Restore missing linux conda builds · a9b0d50b
      Jeremy Reizenstein authored
      Summary: Regenerate config.yml after a recent bad merge which lost a few builds.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D30696918
      
      fbshipit-source-id: 3ecdfca8682baed13692ec710aa7c25dbd24dd44
      a9b0d50b
    • Nikhila Ravi's avatar
      (bug) Fix exception when creating a TextureAtlas · fc156b50
      Nikhila Ravi authored
      Summary: Fixes GitHub issue #751. The vectorized implementation of bilinear interpolation didn't properly handle the edge cases in the same way as the `grid_sample` method in PyTorch.
      
      Reviewed By: bottler
      
      Differential Revision: D30684208
      
      fbshipit-source-id: edf241ecbd72d46b94ad340a4e601e26c83db88e
      fc156b50
    • Georgia Gkioxari's avatar
      master -> main · 835e662f
      Georgia Gkioxari authored
      Summary: Replace master with main in hard coded paths or mentions in documentation
      
      Reviewed By: bottler
      
      Differential Revision: D30696097
      
      fbshipit-source-id: d5ff67bb026d90d1543d10ab027f916e8361ca69
      835e662f
  5. 31 Aug, 2021 2 commits
    • Jeremy Reizenstein's avatar
      (breaking) image_size-agnostic GridRaySampler · 1b8d86a1
      Jeremy Reizenstein authored
      Summary:
      As suggested in #802. By not persisting the _xy_grid buffer, we can allow (in some cases) a model with one image_size to be loaded from a saved model which was trained at a different resolution.
      
      Also avoid persisting _frequencies in HarmonicEmbedding for similar reasons.
      
      BC-break: This will cause load_state_dict, in strict mode, to complain if you try to load an old model with the new code.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D30349234
      
      fbshipit-source-id: d6061d1e51c9f79a78d61a9f732c9a5dfadbbb47
      1b8d86a1
    • Jeremy Reizenstein's avatar
      Use sample_pdf from PyTorch3D in NeRF · 12514463
      Jeremy Reizenstein authored
      Summary:
      Use PyTorch3D's new faster sample_pdf function instead of local Python implementation.
      
      Also clarify deps for the Python implementation.
      
      Reviewed By: gkioxari
      
      Differential Revision: D30512109
      
      fbshipit-source-id: 84cfdc00313fada37a6b29837de96f6a4646434f
      12514463
  6. 30 Aug, 2021 1 commit
  7. 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
  8. 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
  9. 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
  10. 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
  11. 10 Aug, 2021 1 commit
  12. 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
  13. 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
  14. 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
  15. 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
  16. 28 Jul, 2021 1 commit
  17. 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
  18. 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
  19. 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
  20. 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