1. 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
  2. 23 Oct, 2022 1 commit
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 06 Sep, 2022 2 commits
    • 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
    • David Novotny's avatar
      Rename and move render_flyaround into core implicitron · c79c954d
      David Novotny authored
      Summary:
      Move the flyaround rendering function into core implicitron.
      The unblocks an example in the facebookresearch/co3d repo.
      
      Reviewed By: bottler
      
      Differential Revision: D39257801
      
      fbshipit-source-id: 6841a88a43d4aa364dd86ba83ca2d4c3cf0435a4
      c79c954d
  14. 05 Sep, 2022 1 commit
    • Darijan Gudelj's avatar
      raybundle input to ImplicitFunctions -> api unification · 72c3a0eb
      Darijan Gudelj authored
      Summary: Currently some implicit functions in implicitron take a raybundle, others take ray_points_world. raybundle is what they really need. However, the raybundle is going to become a bit more flexible later, as it will contain different numbers of rays for each camera.
      
      Reviewed By: bottler
      
      Differential Revision: D39173751
      
      fbshipit-source-id: ebc038e426d22e831e67a18ba64655d8a61e1eb9
      72c3a0eb
  15. 26 Aug, 2022 1 commit
    • Darijan Gudelj's avatar
      Decoding functions · e7c609f1
      Darijan Gudelj authored
      Summary: Added replacable decoding functions which will be applied after the voxel grid to get color and density
      
      Reviewed By: bottler
      
      Differential Revision: D38829763
      
      fbshipit-source-id: f21ce206c1c19548206ea2ce97d7ebea3de30a23
      e7c609f1
  16. 25 Aug, 2022 1 commit
    • Darijan Gudelj's avatar
      VoxelGridModule · 24f5f4a3
      Darijan Gudelj authored
      Summary: Simple wrapper around voxel grids to make them a module
      
      Reviewed By: bottler
      
      Differential Revision: D38829762
      
      fbshipit-source-id: dfee85088fa3c65e396cc7d3bf7ebaaffaadb646
      24f5f4a3
  17. 23 Aug, 2022 1 commit
    • Darijan Gudelj's avatar
      voxel grids with interpolation · edee25a1
      Darijan Gudelj authored
      Summary: Added voxel grid classes from TensoRF, both in their factorized (CP and VM) and full form.
      
      Reviewed By: bottler
      
      Differential Revision: D38465419
      
      fbshipit-source-id: 8b306338af58dc50ef47a682616022a0512c0047
      edee25a1
  18. 18 Aug, 2022 2 commits
    • Jeremy Reizenstein's avatar
      remove stray "generic_model_args" references · fdaaa299
      Jeremy Reizenstein authored
      Summary:
      generic_model_args no longer exists. Update some references to it, mostly in doc.
      
      This fixes the testing of all the yaml files in test_forward pass.
      
      Reviewed By: shapovalov
      
      Differential Revision: D38789202
      
      fbshipit-source-id: f11417efe772d7f86368b3598aa66c52b1309dbf
      fdaaa299
    • Jeremy Reizenstein's avatar
      1GPU for implicitron tests · d42e0d3d
      Jeremy Reizenstein authored
      Reviewed By: shapovalov
      
      Differential Revision: D38794764
      
      fbshipit-source-id: 140c8a935d760bab8569d903cc52ac3dd73cd553
      d42e0d3d
  19. 15 Aug, 2022 2 commits
    • David Novotny's avatar
      Rename psnr -> psnr_masked to avoid confusion · d35781f2
      David Novotny authored
      Summary: Previously, "psnr" was evaluated between the masked g.t. image and the render. To avoid confusion, "psnr" is now renamed to "psnr_masked".
      
      Reviewed By: bottler
      
      Differential Revision: D38707511
      
      fbshipit-source-id: 8ee881ab1a05453d6692dde9782333a47d8c1234
      d35781f2
    • David Novotny's avatar
      Enable additional test-time source views for json dataset provider v2 · 2ff2c7c8
      David Novotny authored
      Summary: Adds additional source views to the eval batches for evaluating many-view models on CO3D Challenge
      
      Reviewed By: bottler
      
      Differential Revision: D38705904
      
      fbshipit-source-id: cf7d00dc7db926fbd1656dd97a729674e9ff5adb
      2ff2c7c8
  20. 12 Aug, 2022 1 commit
    • David Novotny's avatar
      Add full-image PSNR metric · 7b985702
      David Novotny authored
      Summary: Reports also the PSNR between the unmasked G.T. image and the render.
      
      Reviewed By: bottler
      
      Differential Revision: D38655943
      
      fbshipit-source-id: 1603a2d02116ea1ce037e5530abe1afc65a2ba93
      7b985702
  21. 09 Aug, 2022 1 commit
    • Krzysztof Chalupka's avatar
      Mods and bugfixes for LLFF and Blender repros · c83ec355
      Krzysztof Chalupka authored
      Summary:
      LLFF (and most/all non-synth datasets) will have no background/foreground distinction. Add support for data with no fg mask.
      
      Also, we had a bug in stats loading, like this:
        * Load stats
        * One of the stats has a history of length 0
        * That's fine, e.g. maybe it's fg_error but the dataset has no notion of fg/bg. So leave it as len 0
        * Check whether all the stats have the same history length as an arbitrarily chosen "reference-stat"
        * Ooops the reference-stat happened to be the stat with length 0
        * assert (legit_stat_len == reference_stat_len (=0)) ---> failed assert
      
      Also some minor fixes (from Jeremy's other diff) to support LLFF
      
      Reviewed By: davnov134
      
      Differential Revision: D38475272
      
      fbshipit-source-id: 5b35ac86d1d5239759f537621f41a3aa4eb3bd68
      c83ec355
  22. 05 Aug, 2022 1 commit
    • Jeremy Reizenstein's avatar
      more globalencoder followup · 02c0254f
      Jeremy Reizenstein authored
      Summary: remove n_instances==0 special case, standardise args for GlobalEncoderBase's forward.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37817340
      
      fbshipit-source-id: 0aac5fbc7c336d09be9d412cffff5712bda27290
      02c0254f
  23. 03 Aug, 2022 3 commits
    • Jeremy Reizenstein's avatar
      clean IF args · 46e82efb
      Jeremy Reizenstein authored
      Summary: continued - avoid duplicate inputs
      
      Reviewed By: davnov134
      
      Differential Revision: D38248827
      
      fbshipit-source-id: 91ed398e304496a936f66e7a70ab3d189eeb5c70
      46e82efb
    • Jeremy Reizenstein's avatar
      clean raysampler args · f45893b8
      Jeremy Reizenstein authored
      Summary: Don't copy from one part of config to another, rather do the copy within GenericModel.
      
      Reviewed By: davnov134
      
      Differential Revision: D38248828
      
      fbshipit-source-id: ff8af985c37ea1f7df9e0aa0a45a58df34c3f893
      f45893b8
    • Darijan Gudelj's avatar
      open_dict for tweaking · 5f069dbb
      Darijan Gudelj authored
      Summary: Made the config system call open_dict when it calls the tweak function.
      
      Reviewed By: shapovalov
      
      Differential Revision: D38315334
      
      fbshipit-source-id: 5924a92d8d0bf399bbf3788247f81fc990e265e7
      5f069dbb
  24. 02 Aug, 2022 3 commits
    • David Novotny's avatar
      Move load_stats to TrainingLoop · c3f8dad5
      David Novotny authored
      Summary:
      Stats are logically connected to the training loop, not to the model. Hence, moving to the training loop.
      
      Also removing resume_epoch from OptimizerFactory in favor of a single place - ModelFactory. This removes the need for config consistency checks etc.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38313475
      
      fbshipit-source-id: a1d188a63e28459df381ff98ad8acdcdb14887b7
      c3f8dad5
    • Jeremy Reizenstein's avatar
      SimpleDataLoaderMapProvider · 3a063f59
      Jeremy Reizenstein authored
      Summary: Simple DataLoaderMapProvider instance
      
      Reviewed By: davnov134
      
      Differential Revision: D38326719
      
      fbshipit-source-id: 58556833e76fae5790d25a59bea0aac4ce046bf1
      3a063f59
    • Darijan Gudelj's avatar
      Add forbidden fields to map_provider_v2 · 37250a43
      Darijan Gudelj authored
      Summary:
      Added _NEED_CONTROL
       to JsonIndexDatasetMapProviderV2 and made dataset_tweak_args use it.
      
      Reviewed By: bottler
      
      Differential Revision: D38313914
      
      fbshipit-source-id: 529847571065dfba995b609a66737bd91e002cfe
      37250a43
  25. 01 Aug, 2022 1 commit
    • Jeremy Reizenstein's avatar
      provide cow dataset · 14bd5e28
      Jeremy Reizenstein authored
      Summary: Make a dummy single-scene dataset using the code from generate_cow_renders (used in existing NeRF tutorials)
      
      Reviewed By: kjchalup
      
      Differential Revision: D38116910
      
      fbshipit-source-id: 8db6df7098aa221c81d392e5cd21b0e67f65bd70
      14bd5e28
  26. 28 Jul, 2022 1 commit
    • Jeremy Reizenstein's avatar
      redefinition -> defaults kept in config · 6b481595
      Jeremy Reizenstein authored
      Summary:
      This is an internal change in the config systen. It allows redefining a pluggable implementation with new default values. This is useful in notebooks / interactive use. For example, this now works.
      
              class A(ReplaceableBase):
                  pass
      
              registry.register
              class B(A):
                  i: int = 4
      
              class C(Configurable):
                  a: A
                  a_class_type: str = "B"
      
                  def __post_init__(self):
                      run_auto_creation(self)
      
              expand_args_fields(C)
      
              registry.register
              class B(A):
                  i: int = 5
      
              c = C()
      
              assert c.a.i == 5
      
      Reviewed By: shapovalov
      
      Differential Revision: D38219371
      
      fbshipit-source-id: 72911a9bd3426d3359cf8802cc016fc7f6d7713b
      6b481595
  27. 22 Jul, 2022 2 commits
    • Krzysztof Chalupka's avatar
      Add MeshRasterizerOpenGL · cb495504
      Krzysztof Chalupka authored
      Summary:
      Adding MeshRasterizerOpenGL, a faster alternative to MeshRasterizer. The new rasterizer follows the ideas from "Differentiable Surface Rendering via non-Differentiable Sampling".
      
      The new rasterizer 20x faster on a 2M face mesh (try pose optimization on Nefertiti from https://www.cs.cmu.edu/~kmcrane/Projects/ModelRepository/!). The larger the mesh, the larger the speedup.
      
      There are two main disadvantages:
      * The new rasterizer works with an OpenGL backend, so requires pycuda.gl and pyopengl installed (though we avoided writing any C++ code, everything is in Python!)
      * The new rasterizer is non-differentiable. However, you can still differentiate the rendering function if you use if with the new SplatterPhongShader which we recently added to PyTorch3D (see the original paper cited above).
      
      Reviewed By: patricklabatut, jcjohnson
      
      Differential Revision: D37698816
      
      fbshipit-source-id: 54d120639d3cb001f096237807e54aced0acda25
      cb495504
    • Krzysztof Chalupka's avatar
      Add EGLContext and DeviceContextManager · 78bb6d17
      Krzysztof Chalupka authored
      Summary:
      EGLContext is a utility to render with OpenGL without an attached display (that is, without a monitor).
      
      DeviceContextManager allows us to avoid unnecessary context creations and releases. See docstrings for more info.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D36562551
      
      fbshipit-source-id: eb0d2a2f85555ee110e203d435a44ad243281d2c
      78bb6d17
  28. 21 Jul, 2022 1 commit
    • Jeremy Reizenstein's avatar
      lazy all_train_cameras · 3783437d
      Jeremy Reizenstein authored
      Summary: Avoid calculating all_train_cameras before it is needed, because it is slow in some datasets.
      
      Reviewed By: shapovalov
      
      Differential Revision: D38037157
      
      fbshipit-source-id: 95461226655cde2626b680661951ab17ebb0ec75
      3783437d
  29. 19 Jul, 2022 1 commit