1. 06 Jul, 2023 3 commits
    • 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
  2. 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
  3. 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
  4. 26 May, 2023 1 commit
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 18 Apr, 2023 1 commit
  13. 04 Apr, 2023 1 commit
  14. 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
  15. 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
  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. 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
  19. 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
  20. 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
  21. 03 Nov, 2022 1 commit
  22. 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
  23. 23 Oct, 2022 1 commit
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 03 Oct, 2022 2 commits
    • Darijan Gudelj's avatar
      Enable mixed frame raysampling · c311a4cb
      Darijan Gudelj authored
      Summary:
      Changed ray_sampler and metrics to be able to use mixed frame raysampling.
      
      Ray_sampler now has a new member which it passes to the pytorch3d raysampler.
      If the raybundle is heterogeneous metrics now samples images by padding xys first. This reduces memory consumption.
      
      Reviewed By: bottler, kjchalup
      
      Differential Revision: D39542221
      
      fbshipit-source-id: a6fec23838d3049ae5c2fd2e1f641c46c7c927e3
      c311a4cb
    • Darijan Gudelj's avatar
      ImplicitronRayBundle · ad8907d3
      Darijan Gudelj authored
      Summary: new implicitronRayBundle with added cameraIDs and camera counts. Added to enable a single raybundle inside Implicitron and easier extension in the future. Since RayBundle is named tuple and RayBundleHeterogeneous is dataclass and RayBundleHeterogeneous cannot inherit RayBundle. So if there was no ImplicitronRayBundle every function that uses RayBundle now would have to use Union[RayBundle, RaybundleHeterogeneous] which is confusing and unecessary complicated.
      
      Reviewed By: bottler, kjchalup
      
      Differential Revision: D39262999
      
      fbshipit-source-id: ece160e32f6c88c3977e408e966789bf8307af59
      ad8907d3
  30. 29 Sep, 2022 1 commit
    • Roman Shapovalov's avatar
      Fix returning a proper rotation in levelling; supporting batches and default centroid · 74bbd6fd
      Roman Shapovalov authored
      Summary:
      `get_rotation_to_best_fit_xy` is useful to expose externally, however there was a bug (which we probably did not care about for our use case): it could return a rotation matrix with det(R) == −1.
      The diff fixes that, and also makes centroid optional (it can be computed from points).
      
      Reviewed By: bottler
      
      Differential Revision: D39926791
      
      fbshipit-source-id: 5120c7892815b829f3ddcc23e93d4a5ec0ca0013
      74bbd6fd
  31. 28 Sep, 2022 1 commit
    • Darijan Gudelj's avatar
      Add rescaling to voxel grids · 5005f091
      Darijan Gudelj authored
      Summary: Any module can be subscribed to step updates from the training loop. Once the training loop publishes a step the voxel grid changes its dimensions. During the construction of VoxelGridModule and its parameters it does not know which is the resolution that will be loaded from checkpoint, so before the checkpoint loading a hook runs which changes the VoxelGridModule's parameters to match shapes of the loaded checkpoint.
      
      Reviewed By: bottler
      
      Differential Revision: D39026775
      
      fbshipit-source-id: 0d359ea5c8d2eda11d773d79c7513c83585d5f17
      5005f091
  32. 22 Sep, 2022 2 commits
    • Jeremy Reizenstein's avatar
      make expand_args_fields optional · d6a197be
      Jeremy Reizenstein authored
      Summary: Call expand_args_field when instantiating an object.
      
      Reviewed By: shapovalov
      
      Differential Revision: D39541931
      
      fbshipit-source-id: de8e1038927ff0112463394412d5d8c26c4a1e17
      d6a197be
    • Darijan Gudelj's avatar
      arbitrary shape input to voxel_grids · db3c12ab
      Darijan Gudelj authored
      Summary: Add the ability to process arbitrary point shapes `[n_grids, ..., 3]` instead of  only `[n_grids, n_points, 3]`.
      
      Reviewed By: bottler
      
      Differential Revision: D39574373
      
      fbshipit-source-id: 0a9ecafe9ea58cd8f909644de43a1185ecf934f4
      db3c12ab
  33. 15 Sep, 2022 1 commit
    • Jeremy Reizenstein's avatar
      small fixes to config · da7fe285
      Jeremy Reizenstein authored
      Summary:
      - indicate location of OmegaConf.structured failures
      - split the data gathering from enable_get_default_args to ease experimenting with it.
      - comment fixes.
      - nicer error when a_class_type has weird type.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39434447
      
      fbshipit-source-id: b80c7941547ca450e848038ef5be95b7ebbe8f3e
      da7fe285
  34. 06 Sep, 2022 1 commit
    • David Novotny's avatar
      Bugfixes in render_flyaround · f6d43eaa
      David Novotny authored
      Summary: Fixes bugs in render_flyaround
      
      Reviewed By: bottler
      
      Differential Revision: D39271932
      
      fbshipit-source-id: 07e6c9ee07ba91feb437b725af0a8942fd98db0b
      f6d43eaa