1. 19 May, 2023 1 commit
    • Jeremy Reizenstein's avatar
      resources fix · ff80183f
      Jeremy Reizenstein authored
      Summary: I don't know why RE tests sometimes fail here, but maybe it's a race condition. If that's right, this should fix it.
      
      Reviewed By: shapovalov
      
      Differential Revision: D46020054
      
      fbshipit-source-id: 20b746b09ad9bd77c2601ac681047ccc6cc27ed9
      ff80183f
  2. 17 May, 2023 1 commit
    • Roman Shapovalov's avatar
      Refactor: FrameDataBuilder is more extensible. · b0462598
      Roman Shapovalov authored
      Summary:
      This is mostly a refactoring diff to reduce friction in extending the frame data.
      
      Slight functional changes: dataset getitem now accepts (seq_name, frame_number_as_singleton_tensor) as a non-advertised feature. Otherwise this code crashes:
      ```
      item = dataset[0]
      dataset[item.sequence_name, item.frame_number]
      ```
      
      Reviewed By: bottler
      
      Differential Revision: D45780175
      
      fbshipit-source-id: 75b8e8d3dabed954a804310abdbd8ab44a8dea29
      b0462598
  3. 07 May, 2023 1 commit
    • dhb's avatar
      allow saving vertex normal in save_obj (#1511) · 092400f1
      dhb authored
      Summary:
      Although we can load per-vertex normals in `load_obj`, saving per-vertex normals is not supported in `save_obj`.
      
      This patch fixes this by allowing passing per-vertex normal data in `save_obj`:
      ``` python
      def save_obj(
          f: PathOrStr,
          verts,
          faces,
          decimal_places: Optional[int] = None,
          path_manager: Optional[PathManager] = None,
          *,
          verts_normals: Optional[torch.Tensor] = None,
          faces_normals: Optional[torch.Tensor] = None,
          verts_uvs: Optional[torch.Tensor] = None,
          faces_uvs: Optional[torch.Tensor] = None,
          texture_map: Optional[torch.Tensor] = None,
      ) -> None:
          """
          Save a mesh to an .obj file.
      
          Args:
              f: File (str or path) to which the mesh should be written.
              verts: FloatTensor of shape (V, 3) giving vertex coordinates.
              faces: LongTensor of shape (F, 3) giving faces.
              decimal_places: Number of decimal places for saving.
              path_manager: Optional PathManager for interpreting f if
                  it is a str.
              verts_normals: FloatTensor of shape (V, 3) giving the normal per vertex.
              faces_normals: LongTensor of shape (F, 3) giving the index into verts_normals
                  for each vertex in the face.
              verts_uvs: FloatTensor of shape (V, 2) giving the uv coordinate per vertex.
              faces_uvs: LongTensor of shape (F, 3) giving the index into verts_uvs for
                  each vertex in the face.
              texture_map: FloatTensor of shape (H, W, 3) representing the texture map
                  for the mesh which will be saved as an image. The values are expected
                  to be in the range [0, 1],
          """
      ```
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1511
      
      Reviewed By: shapovalov
      
      Differential Revision: D45086045
      
      Pulled By: bottler
      
      fbshipit-source-id: 666efb0d2c302df6cf9f2f6601d83a07856bf32f
      092400f1
  4. 05 May, 2023 1 commit
    • Roman Shapovalov's avatar
      Fix test_data_source in OSS. · c8d6cd42
      Roman Shapovalov authored
      Summary: Import generic path; avoiding incorrect path patching.
      
      Reviewed By: bottler
      
      Differential Revision: D45573976
      
      fbshipit-source-id: e6ff4d759deb936e3b636defa1e0851fb0127b46
      c8d6cd42
  5. 04 May, 2023 1 commit
    • Roman Shapovalov's avatar
      More tests for SQL Dataset · 3e3644e5
      Roman Shapovalov authored
      Summary:
      I forgot to include these tests to D45086611 when transferring code from pixar_replay repo.
      
      They test the new ORM types used in SQL dataset and are SQL Alchemy 2.0 specific.
      
      An important test for extending types is a proof of concept for generality of SQL Dataset. The idea is to extend FrameAnnotation and FrameData in parallel.
      
      Reviewed By: bottler
      
      Differential Revision: D45529284
      
      fbshipit-source-id: 2a634e518f580c312602107c85fc320db43abcf5
      3e3644e5
  6. 01 May, 2023 1 commit
    • Ilia Vitsnudel's avatar
      Adding save mesh into glb file in TexturesVertex format · 178a7774
      Ilia Vitsnudel authored
      Summary:
      Added a suit of functions and code additions to experimental_gltf_io.py file to enable saving Meshes in TexturesVertex format into .glb file.
      Also added a test to tets_io_gltf.py to check the functionality with the test described in Test Plane.
      
      Reviewed By: bottler
      
      Differential Revision: D44969144
      
      fbshipit-source-id: 9ce815a1584b510442fa36cc4dbc8d41cc3786d5
      178a7774
  7. 25 Apr, 2023 1 commit
    • Roman Shapovalov's avatar
      SQL Index Dataset · 32e19929
      Roman Shapovalov authored
      Summary:
      Moving SQL dataset to PyTorch3D. It has been extensively tested in pixar_replay.
      
      It requires SQLAlchemy 2.0, which is not supported in fbcode. So I exclude the sources and tests that depend on it from buck TARGETS.
      
      Reviewed By: bottler
      
      Differential Revision: D45086611
      
      fbshipit-source-id: 0285f03e5824c0478c70ad13731525bb5ec7deef
      32e19929
  8. 20 Apr, 2023 1 commit
    • Roman Shapovalov's avatar
      When bounding boxes are cached in metadata, don’t crash on load_masks=False · 7aeedd17
      Roman Shapovalov authored
      Summary:
      We currently support caching bounding boxes in MaskAnnotation. If present, they are not re-computed from the mask. However, the masks need to be loaded for the bbox to be set.
      
      This diff fixes that. Even if load_masks / load_blobs are unset, the bounding box can be picked up from the metadata.
      
      Reviewed By: bottler
      
      Differential Revision: D45144918
      
      fbshipit-source-id: 8a2e2c115e96070b6fcdc29cbe57e1cee606ddcd
      7aeedd17
  9. 18 Apr, 2023 1 commit
  10. 04 Apr, 2023 1 commit
  11. 31 Mar, 2023 1 commit
    • Dejan Kovachev's avatar
      Hard population of registry system with pre_expand · c759fc56
      Dejan Kovachev authored
      Summary: Provide an extension point pre_expand to let a configurable class A make sure another class B is registered before A is expanded. This reduces top level imports.
      
      Reviewed By: bottler
      
      Differential Revision: D44504122
      
      fbshipit-source-id: c418bebbe6d33862d239be592d9751378eee3a62
      c759fc56
  12. 24 Mar, 2023 1 commit
    • Emilien Garreau's avatar
      Add the OverfitModel · 813e941d
      Emilien Garreau authored
      Summary:
      Introduces the OverfitModel for NeRF-style training with overfitting to one scene.
      It is a specific case of GenericModel. It has been disentangle to ease usage.
      
      ## General modification
      
      1. Modularize a minimum GenericModel to introduce OverfitModel
      2. Introduce OverfitModel and ensure through unit testing that it behaves like GenericModel.
      
      ## Modularization
      
      The following methods have been extracted from GenericModel to allow modularity with ManyViewModel:
      - get_objective is now a call to weighted_sum_losses
      - log_loss_weights
      - prepare_inputs
      
      The generic methods have been moved to an utils.py file.
      
      Simplify the code to introduce OverfitModel.
      
      Private methods like chunk_generator are now public and can now be used by ManyViewModel.
      
      Reviewed By: shapovalov
      
      Differential Revision: D43771992
      
      fbshipit-source-id: 6102aeb21c7fdd56aa2ff9cd1dd23fd9fbf26315
      813e941d
  13. 09 Mar, 2023 1 commit
    • Jeremy Reizenstein's avatar
      join_pointclouds_as_scene · a123815f
      Jeremy Reizenstein authored
      Summary: New function
      
      Reviewed By: davidsonic
      
      Differential Revision: D42776590
      
      fbshipit-source-id: 2a6e73480bcf2d1749f86bcb22d1942e3e8d3167
      a123815f
  14. 20 Feb, 2023 1 commit
  15. 29 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      transform test fix · 7dfa6918
      Jeremy Reizenstein authored
      Summary: Indexing with a big matrix now fails with a ValueError, possibly because of pytorch improvements. Remove the testcase for it.
      
      Reviewed By: davidsonic
      
      Differential Revision: D42609741
      
      fbshipit-source-id: 0a5a6632ed199cb942bfc4cc4ed347b72e491125
      7dfa6918
  16. 27 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      test fix · 97f8f9bf
      Jeremy Reizenstein authored
      Reviewed By: shapovalov
      
      Differential Revision: D42780711
      
      fbshipit-source-id: 075fcae5097147b782f7ffc935f5430b824f58fd
      97f8f9bf
  17. 26 Jan, 2023 1 commit
    • Roman Shapovalov's avatar
      Subsets in dataset iterators · 11959e0b
      Roman Shapovalov authored
      Summary: For the new API, filtering iterators over sequences by subsets is quite helpful. The change is backwards compatible.
      
      Reviewed By: bottler
      
      Differential Revision: D42739669
      
      fbshipit-source-id: d150a404aeaf42fd04a81304c63a4cba203f897d
      11959e0b
  18. 25 Jan, 2023 1 commit
    • David Novotny's avatar
      Fixes for RayBundle plotting · 9dc28f5d
      David Novotny authored
      Summary:
      Fixes some issues with RayBundle plotting:
      - allows plotting raybundles on gpu
      - view -> reshape since we do not require contiguous raybundle tensors as input
      
      Reviewed By: bottler, shapovalov
      
      Differential Revision: D42665923
      
      fbshipit-source-id: e9c6c7810428365dca4cb5ec80ef15ff28644163
      9dc28f5d
  19. 24 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      doc rgbd point cloud · a12612a4
      Jeremy Reizenstein authored
      Summary: docstring and shape fix
      
      Reviewed By: shapovalov
      
      Differential Revision: D42609661
      
      fbshipit-source-id: fd50234872ad61b5452821eeb89d51344f70c957
      a12612a4
  20. 17 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      test fixes · dcced4fa
      Jeremy Reizenstein authored
      Reviewed By: shapovalov
      
      Differential Revision: D42545069
      
      fbshipit-source-id: e25fb4049dcebd715df43bab3ce813ecb5f85abe
      dcced4fa
  21. 16 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      camera iteration #1408 · 84851c83
      Jeremy Reizenstein authored
      Summary: Use IndexError so that a camera object is an iterable
      
      Reviewed By: shapovalov
      
      Differential Revision: D42312021
      
      fbshipit-source-id: 67c417d5f1398e8b30a6944468eda057b4ceb444
      84851c83
  22. 12 Jan, 2023 1 commit
    • Jeremy Reizenstein's avatar
      lints · d71105f5
      Jeremy Reizenstein authored
      Summary: lint fixes
      
      Reviewed By: davidsonic
      
      Differential Revision: D42451530
      
      fbshipit-source-id: 120bdd58fc074a713895df15df4e9efa9ea0a420
      d71105f5
  23. 13 Dec, 2022 1 commit
    • Jeremy Reizenstein's avatar
      fix saved glb length · b7a31623
      Jeremy Reizenstein authored
      Summary: Make GLB files report their own length correctly. They were off by 28.
      
      Reviewed By: davidsonic
      
      Differential Revision: D41838340
      
      fbshipit-source-id: 9cd66e8337c142298d5ae1d7c27e51fd812d5c7b
      b7a31623
  24. 05 Dec, 2022 1 commit
    • Jiali Duan's avatar
      Write meshes to GLB · cc2840eb
      Jiali Duan authored
      Summary: Write the amalgamated mesh from the Mesh module to glb. In this version, the json header and the binary data specified by the buffer are merged into glb. The image texture attributes are added.
      
      Reviewed By: bottler
      
      Differential Revision: D41489778
      
      fbshipit-source-id: 3af0e9a8f9e9098e73737a254177802e0fb6bd3c
      cc2840eb
  25. 24 Nov, 2022 1 commit
    • Jeremy Reizenstein's avatar
      make x_enabled compulsory · 60ab1cdb
      Jeremy Reizenstein authored
      Summary: Optional[some_configurable] won't autogenerate the enabled flag
      
      Reviewed By: shapovalov
      
      Differential Revision: D41522104
      
      fbshipit-source-id: 555ff6b343faf6f18aad2f92fbb7c341f5e991c6
      60ab1cdb
  26. 16 Nov, 2022 1 commit
    • Jiali Duan's avatar
      Marching Cubes cuda extension · 8b829183
      Jiali Duan authored
      Summary:
      Torch CUDA extension for Marching Cubes
      - MC involving 3 steps:
        - 1st forward pass to collect vertices and occupied state for each voxel
        - Compute compactVoxelArray to skip non-empty voxels
        - 2nd pass to genereate interpolated vertex positions and faces by marching through the grid
      - In contrast to existing MC:
         - Bind each interpolated vertex with a global edge_id to address floating-point precision
         - Added deduplication process to remove redundant vertices and faces
      
      Benchmarks (ms):
      
      | N / V(^3)      | python          | C++             |   CUDA   | Speedup |
      | 2 / 20          |    12176873  |       24338     |     4363   | 2790x/5x|
      | 1 / 100          |     -             |    3070511     |   27126   |    113x    |
      | 2 / 100          |     -             |    5968934     |   53129   |    112x    |
      | 1 / 256          |     -             |  61278092     | 430900   |    142x    |
      | 2 / 256          |     -             |125687930     | 856941   |    146x   |
      
      Reviewed By: kjchalup
      
      Differential Revision: D39644248
      
      fbshipit-source-id: d679c0c79d67b98b235d12296f383d760a00042a
      8b829183
  27. 07 Nov, 2022 1 commit
    • Roman Shapovalov's avatar
      MC rasterize supports heterogeneous bundle; refactoring of bundle-to-padded · f3c1e083
      Roman Shapovalov authored
      Summary:
      Rasterize MC was not adapted to heterogeneous bundles.
      
      There are some caveats though:
      1) on CO3D, we get up to 18 points per image, which is too few for a reasonable visualisation (see below);
      2) rasterising for a batch of 100 is slow.
      
      I also moved the unpacking code close to the bundle to be able to reuse it.
      
      {F789678778}
      
      Reviewed By: bottler, davnov134
      
      Differential Revision: D41008600
      
      fbshipit-source-id: 9f10f1f9f9a174cf8c534b9b9859587d69832b71
      f3c1e083
  28. 03 Nov, 2022 1 commit
  29. 02 Nov, 2022 1 commit
    • David Novotny's avatar
      CO3Dv2 multi-category extension · e4a32981
      David Novotny authored
      Summary:
      Allows loading of multiple categories.
      Multiple categories are provided in a comma-separated list of category names.
      
      Reviewed By: bottler, shapovalov
      
      Differential Revision: D40803297
      
      fbshipit-source-id: 863938be3aa6ffefe9e563aede4a2e9e66aeeaa8
      e4a32981
  30. 23 Oct, 2022 1 commit
  31. 20 Oct, 2022 1 commit
  32. 18 Oct, 2022 1 commit
    • Jeremy Reizenstein's avatar
      different learning rate for different parts · fe5bdb2f
      Jeremy Reizenstein authored
      Summary:
      Adds the ability to have different learning rates for different parts of the model. The trainable parts of the implicitron have a new member
      
             param_groups: dictionary where keys are names of individual parameters,
                  or module’s members and values are the parameter group where the
                  parameter/member will be sorted to. "self" key is used to denote the
                  parameter group at the module level. Possible keys, including the "self" key
                  do not have to be defined. By default all parameters are put into "default"
                  parameter group and have the learning rate defined in the optimizer,
                  it can be overriden at the:
                      - module level with “self” key, all the parameters and child
                          module s parameters will be put to that parameter group
                      - member level, which is the same as if the `param_groups` in that
                          member has key=“self” and value equal to that parameter group.
                          This is useful if members do not have `param_groups`, for
                          example torch.nn.Linear.
                      - parameter level, parameter with the same name as the key
                          will be put to that parameter group.
      
      And in the optimizer factory, parameters and their learning rates are recursively gathered.
      
      Reviewed By: shapovalov
      
      Differential Revision: D40145802
      
      fbshipit-source-id: 631c02b8d79ee1c0eb4c31e6e42dbd3d2882078a
      fe5bdb2f
  33. 13 Oct, 2022 2 commits
    • Jeremy Reizenstein's avatar
      fix to get_default_args(instance) · 4d9215b3
      Jeremy Reizenstein authored
      Summary:
      Small config system fix. Allows get_default_args to work on an instance which has been created with a dict (instead of a DictConfig) as an args field. E.g.
      
      ```
      gm = GenericModel(
              raysampler_AdaptiveRaySampler_args={"scene_extent": 4.0}
          )
          OmegaConf.structured(gm1)
      ```
      
      Reviewed By: shapovalov
      
      Differential Revision: D40341047
      
      fbshipit-source-id: 587d0e8262e271df442a80858949a48e5d6db3df
      4d9215b3
    • Darijan Gudelj's avatar
      Elementwise decoder · 76cddd90
      Darijan Gudelj authored
      Summary: Tensorf does relu or softmax after the density grid. This diff adds the ability to replicate that.
      
      Reviewed By: bottler
      
      Differential Revision: D40023228
      
      fbshipit-source-id: 9f19868cd68460af98ab6e61c7f708158c26dc08
      76cddd90
  34. 12 Oct, 2022 1 commit
    • Darijan Gudelj's avatar
      volume cropping · f55d37f0
      Darijan Gudelj authored
      Summary:
      TensoRF at step 2000 does volume croping and resizing.
      At those steps it calculates part of the voxel grid which has density big enough to have objects and resizes the grid to fit that object.
      Change is done on 3 levels:
      - implicit function subscribes to epochs and at specific epochs finds the bounding box of the object and calls resizing of the color and density voxel grids to fit it
      - VoxelGrid module calls cropping of the underlaying voxel grid and resizing to fit previous size it also adjusts its extends and translation to match wanted size
      - Each voxel grid has its own way of cropping the underlaying data
      
      Reviewed By: kjchalup
      
      Differential Revision: D39854548
      
      fbshipit-source-id: 5435b6e599aef1eaab980f5421d3369ee4829c50
      f55d37f0
  35. 10 Oct, 2022 1 commit
    • Darijan Gudelj's avatar
      scaffold · 56d3465b
      Darijan Gudelj authored
      Summary: Forward method is sped up using the scaffold, a low resolution voxel grid which is used to filter out the points in empty space. These points will be predicted as having 0 density and (0, 0, 0) color. The points which were not evaluated as empty space will be passed through the steps outlined above.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39579671
      
      fbshipit-source-id: 8eab8bb43ef77c2a73557efdb725e99a6c60d415
      56d3465b
  36. 09 Oct, 2022 1 commit
    • Jeremy Reizenstein's avatar
      Co3Dv2 point cloud fix · 95a2acf7
      Jeremy Reizenstein authored
      Summary: Avoid certain hardcoded paths in co3dv2 data
      
      Reviewed By: davnov134
      
      Differential Revision: D40209309
      
      fbshipit-source-id: 0e83a15baa47d5bd07d2d23c6048cb4522c1ccba
      95a2acf7
  37. 06 Oct, 2022 3 commits
    • Jiali Duan's avatar
      Marching Cubes C++ torch extension · 0d8608b9
      Jiali Duan authored
      Summary:
      Torch C++ extension for Marching Cubes
      
      - Add torch C++ extension for marching cubes. Observe a speed up of ~255x-324x speed up (over varying batch sizes and spatial resolutions)
      
      - Add C++ impl in existing unit-tests.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: kjchalup
      
      Differential Revision: D39590638
      
      fbshipit-source-id: e44d2852a24c2c398e5ea9db20f0dfaa1817e457
      0d8608b9
    • Jiali Duan's avatar
      Python marching cubes improvements · 850efdf7
      Jiali Duan authored
      Summary: Overhaul of marching_cubes_naive for better performance and to avoid relying on unstable hashing. In particular, instead of hashing vertex positions, we index each interpolated vertex with its corresponding edge in the 3d grid.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39419642
      
      fbshipit-source-id: b5fede3525c545d1d374198928dfb216262f0ec0
      850efdf7
    • Gavin Peng's avatar
      Multithread CPU naive mesh rasterization · 6471893f
      Gavin Peng authored
      Summary:
      Threaded the for loop:
      ```
      for (int yi = 0; yi < H; ++yi) {...}
      ```
      in function `RasterizeMeshesNaiveCpu()`.
      Chunk size is approx equal.
      
      Reviewed By: bottler
      
      Differential Revision: D40063604
      
      fbshipit-source-id: 09150269405538119b0f1b029892179501421e68
      6471893f