1. 14 Nov, 2023 3 commits
  2. 15 Aug, 2023 1 commit
    • Haritha Jayasinghe's avatar
      add None option for chamfer distance point reduction (#1605) · d84f274a
      Haritha Jayasinghe authored
      Summary:
      The `chamfer_distance` function currently allows `"sum"` or `"mean"` reduction, but does not support returning unreduced (per-point) loss terms. Unreduced losses could be useful if the user wishes to inspect individual losses, or perform additional modifications to loss terms before reduction. One example would be implementing a robust kernel over the loss.
      
      This PR adds a `None` option to the `point_reduction` parameter, similar to `batch_reduction`. In case of bi-directional chamfer loss, both the forward and backward distances are returned (a tuple of Tensors of shape `[D, N]` is returned). If normals are provided, similar logic applies to normals as well.
      
      This PR addresses issue https://github.com/facebookresearch/pytorch3d/issues/622.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1605
      
      Reviewed By: jcjohnson
      
      Differential Revision: D48313857
      
      Pulled By: bottler
      
      fbshipit-source-id: 35c824827a143649b04166c4817449e1341b7fd9
      d84f274a
  3. 06 Jul, 2023 5 commits
    • Emilien Garreau's avatar
      Avoid to keep in memory lengths and bins for ImplicitronRayBundle · 9446d91f
      Emilien Garreau authored
      Summary:
      Convert ImplicitronRayBundle to a "classic" class instead of a dataclass. This change is introduced as a way to preserve the ImplicitronRayBundle interface while allowing two outcomes:
      - init lengths arguments is now a Optional[torch.Tensor] instead of torch.Tensor
      - lengths is now a property which returns a `torch.Tensor`. The lengths property will either recompute lengths from bins or return the stored _lengths. `_lenghts` is None if bins is set. It saves us a bit of memory.
      
      Reviewed By: shapovalov
      
      Differential Revision: D46686094
      
      fbshipit-source-id: 3c75c0947216476ebff542b6f552d311024a679b
      9446d91f
    • Emilien Garreau's avatar
      Adapt RayPointRefiner and RayMarcher to support bins. · 3d011a91
      Emilien Garreau authored
      Summary:
      ## Context
      
      Bins are used in mipnerf to allow to manipulate easily intervals. For example, by doing the following, `bins[..., :-1]` you will obtain all the left coordinates of your intervals, while doing `bins[..., 1:]` is equals to the right coordinates of your intervals.
      
      We introduce here the support of bins like in MipNerf implementation.
      
      ## RayPointRefiner
      
      Small changes have been made to modify RayPointRefiner.
      - If bins is None
      
      ```
      mids = torch.lerp(ray_bundle.lengths[..., 1:], ray_bundle.lengths[…, :-1], 0.5)
      z_samples = sample_pdf(
      		mids, # [..., npt]
      		weights[..., 1:-1], # [..., npt - 1]
                     ….
                  )
      ```
      
      - If bins is not None
      In the MipNerf implementation the sampling is done on all the bins. It allows us to use the full weights tensor without slashing it.
      
      ```
      z_samples = sample_pdf(
      		ray_bundle.bins, # [..., npt + 1]
      		weights, # [..., npt]
                     ...
                  )
      ```
      
      ## RayMarcher
      
      Add a ray_deltas optional argument. If None, keep the same deltas computation from ray_lengths.
      
      Reviewed By: shapovalov
      
      Differential Revision: D46389092
      
      fbshipit-source-id: d4f1963310065bd31c1c7fac1adfe11cbeaba606
      3d011a91
    • Emilien Garreau's avatar
      Add blurpool following MIPNerf paper. · 5910d81b
      Emilien Garreau authored
      Summary:
      Add blurpool has defined in [MIP-NeRF](https://arxiv.org/abs/2103.13415).
      It has been added has an option for RayPointRefiner.
      
      Reviewed By: shapovalov
      
      Differential Revision: D46356189
      
      fbshipit-source-id: ad841bad86d2b591a68e1cb885d4f781cf26c111
      5910d81b
    • Emilien Garreau's avatar
      Add integrated position encoding based on MIPNerf implementation. · ccf860f1
      Emilien Garreau authored
      Summary: Add a new implicit module Integral Position Encoding based on [MIP-NeRF](https://arxiv.org/abs/2103.13415).
      
      Reviewed By: shapovalov
      
      Differential Revision: D46352730
      
      fbshipit-source-id: c6a56134c975d80052b3a11f5e92fd7d95cbff1e
      ccf860f1
    • Emilien Garreau's avatar
      Add utils to approximate the conical frustums as multivariate gaussians. · 29b8ebd8
      Emilien Garreau authored
      Summary:
      Introduce methods to approximate the radii of conical frustums along rays as described in [MipNerf](https://arxiv.org/abs/2103.13415):
      
      - Two new attributes are added to ImplicitronRayBundle: bins and radii. Bins is of size n_pts_per_ray + 1. It allows us to manipulate easily and n_pts_per_ray intervals. For example we need the intervals coordinates in the radii computation for \(t_{\mu}, t_{\delta}\). Radii are used to store the radii of the conical frustums.
      
      - Add 3 new methods to compute the radii:
         - approximate_conical_frustum_as_gaussians: It computes the mean along the ray direction, the variance of the
            conical frustum  with respect to t and variance of the conical frustum with respect to its radius. This
            implementation follows the stable computation defined in the paper.
         - compute_3d_diagonal_covariance_gaussian: Will leverage the two previously computed variances to find the
           diagonal covariance of the Gaussian.
         - conical_frustum_to_gaussian: Mix everything together to compute the means and the diagonal covariances along
           the ray of the Gaussians.
      
      - In AbstractMaskRaySampler, introduces the attribute `cast_ray_bundle_as_cone`. If False it won't change the previous behaviour of the RaySampler. However if True, the samplers will sample `n_pts_per_ray +1` instead of `n_pts_per_ray`. This points are then used to set the bins attribute of ImplicitronRayBundle. The support of HeterogeneousRayBundle has not been added since the current code does not allow it. A safeguard has been added to avoid a silent bug in the future.
      
      Reviewed By: shapovalov
      
      Differential Revision: D45269190
      
      fbshipit-source-id: bf22fad12d71d55392f054e3f680013aa0d59b78
      29b8ebd8
  4. 16 Jun, 2023 1 commit
    • Jeremy Reizenstein's avatar
      fix test_build internal · 42e7de41
      Jeremy Reizenstein authored
      Summary: Make test work in isolation, and when run internally make it not try the sqlalchemy files.
      
      Reviewed By: shapovalov
      
      Differential Revision: D46352513
      
      fbshipit-source-id: 7417a25d7a5347d937631c9f56ae4e3242dd622e
      42e7de41
  5. 14 Jun, 2023 2 commits
    • Roman Shapovalov's avatar
      Adding SQL dataset classes to ImplicitronDataSource imports · cd5db076
      Roman Shapovalov authored
      Summary: Making it easier for the clients to use these datasets.
      
      Reviewed By: bottler
      
      Differential Revision: D46727179
      
      fbshipit-source-id: cf619aee4c4c0222a74b30ea590cf37f08f014cc
      cd5db076
    • Roman Shapovalov's avatar
      Support limiting num sequences per category. · 09a99f2e
      Roman Shapovalov authored
      Summary:
      Adds stratified sampling of sequences within categories applied after category / sequence filters but before the num sequence limit.
      It respects the insertion order into the sequence_annots table, i.e. takes top N sequences within each category.
      
      Reviewed By: bottler
      
      Differential Revision: D46724002
      
      fbshipit-source-id: 597cb2a795c3f3bc07f838fc51b4e95a4f981ad3
      09a99f2e
  6. 13 Jun, 2023 1 commit
  7. 26 May, 2023 1 commit
  8. 22 May, 2023 1 commit
    • Roman Shapovalov's avatar
      Serialising dynamic arrays in SQL; read-only SQLite connection in SQL Dataset · d2119c28
      Roman Shapovalov authored
      Summary:
      1. We may need to store arrays of unknown shape in the database. It implements and tests serialisation.
      
      2. Previously, when an inexisting metadata file was passed to SqlIndexDataset, it would try to open it and create an empty file, then crash. We now open the file in a read-only mode, so the error message is more intuitive. Note that the implementation is SQLite specific.
      
      Reviewed By: bottler
      
      Differential Revision: D46047857
      
      fbshipit-source-id: 3064ae4f8122b4fc24ad3d6ab696572ebe8d0c26
      d2119c28
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 18 Apr, 2023 1 commit
  18. 04 Apr, 2023 1 commit
  19. 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
  20. 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
  21. 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
  22. 20 Feb, 2023 1 commit
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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