1. 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
  2. 30 Nov, 2022 1 commit
    • David Novotny's avatar
      Readme updates · 5add065f
      David Novotny authored
      Summary:
      Running:
      - clearly points users to experiment.py/visualize_reconstruction.py
      Reproducing:
      - Adds NeRF training on Blender
      - Adds CO3Dv2 configs
      
      Reviewed By: bottler
      
      Differential Revision: D41534315
      
      fbshipit-source-id: e85f5f1eafed8c35c9e91d748a04f238509cf8ec
      5add065f
  3. 30 Aug, 2022 1 commit
    • David Novotny's avatar
      CO3Dv2 trainer configs · 1163eaab
      David Novotny authored
      Summary:
      Adds yaml configs to train selected methods on CO3Dv2.
      
      Few more updates:
      1) moved some fields to base classes so that we can check is_multisequence in experiment.py
      2) skip loading all train cameras for multisequence datasets, without this, co3d-fewview is untrainable
      3) fix bug in json index dataset provider v2
      
      Reviewed By: kjchalup
      
      Differential Revision: D38952755
      
      fbshipit-source-id: 3edac6fc8e20775aa70400bd73a0e6d52b091e0c
      1163eaab
  4. 19 Aug, 2022 1 commit
    • David Novotny's avatar
      Blender config fixes · 597bc7c7
      David Novotny authored
      Summary: Fixes the blender synthetic configs.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38786095
      
      fbshipit-source-id: 6d0784ced41a3f2904f074221108cdb56bd20e7f
      597bc7c7
  5. 10 Aug, 2022 1 commit
    • Jeremy Reizenstein's avatar
      LinearExponential LR · a39cad40
      Jeremy Reizenstein authored
      Summary: Linear followed by exponential LR progression. Needed for making Blender scenes converge.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38557007
      
      fbshipit-source-id: ad630dbc5b8fabcb33eeb5bdeed5e4f31360bac2
      a39cad40
  6. 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
  7. 03 Aug, 2022 2 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 renderer args · 078846d1
      Jeremy Reizenstein authored
      Summary: continued - don't duplicate inputs
      
      Reviewed By: kjchalup
      
      Differential Revision: D38248829
      
      fbshipit-source-id: 2d56418ecbec9cc597c3cf0c122199e274661516
      078846d1
  8. 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
    • Krzysztof Chalupka's avatar
      Fix test evaluation for Blender data · 760305e0
      Krzysztof Chalupka authored
      Summary: Blender data doesn't have depths or crops.
      
      Reviewed By: shapovalov
      
      Differential Revision: D38345583
      
      fbshipit-source-id: a19300daf666bbfd799d0038aeefa14641c559d7
      760305e0
    • Jeremy Reizenstein's avatar
      remove get_task · f8bf5280
      Jeremy Reizenstein authored
      Summary: Remove the dataset's need to provide the task type.
      
      Reviewed By: davnov134, kjchalup
      
      Differential Revision: D38314000
      
      fbshipit-source-id: 3805d885b5d4528abdc78c0da03247edb9abf3f7
      f8bf5280
  9. 30 Jul, 2022 1 commit
    • Krzysztof Chalupka's avatar
      Replace pluggable components to create a proper Configurable hierarchy. · 1b0584f7
      Krzysztof Chalupka authored
      Summary:
      This large diff rewrites a significant portion of Implicitron's config hierarchy. The new hierarchy, and some of the default implementation classes, are as follows:
      ```
      Experiment
          data_source: ImplicitronDataSource
              dataset_map_provider
              data_loader_map_provider
          model_factory: ImplicitronModelFactory
              model: GenericModel
          optimizer_factory: ImplicitronOptimizerFactory
          training_loop: ImplicitronTrainingLoop
              evaluator: ImplicitronEvaluator
      ```
      
      1) Experiment (used to be ExperimentConfig) is now a top-level Configurable and contains as members mainly (mostly new) high-level factory Configurables.
      2) Experiment's job is to run factories, do some accelerate setup and then pass the results to the main training loop.
      3) ImplicitronOptimizerFactory and ImplicitronModelFactory are new high-level factories that create the optimizer, scheduler, model, and stats objects.
      4) TrainingLoop is a new configurable that runs the main training loop and the inner train-validate step.
      5) Evaluator is a new configurable that TrainingLoop uses to run validation/test steps.
      6) GenericModel is not the only model choice anymore. Instead, ImplicitronModelBase (by default instantiated with GenericModel) is a member of Experiment and can be easily replaced by a custom implementation by the user.
      
      All the new Configurables are children of ReplaceableBase, and can be easily replaced with custom implementations.
      
      In addition, I added support for the exponential LR schedule, updated the config files and the test, as well as added a config file that reproduces NERF results and a test to run the repro experiment.
      
      Reviewed By: bottler
      
      Differential Revision: D37723227
      
      fbshipit-source-id: b36bee880d6aa53efdd2abfaae4489d8ab1e8a27
      1b0584f7
  10. 18 Jul, 2022 1 commit
    • Jeremy Reizenstein's avatar
      multiseq conditioning type · 67840f83
      Jeremy Reizenstein authored
      Summary: Add the conditioning types to the repro yaml files. In particular, this fixes test_conditioning_type.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37914537
      
      fbshipit-source-id: 621390f329d9da662d915eb3b7bc709206a20552
      67840f83
  11. 06 Jul, 2022 2 commits
    • Jeremy Reizenstein's avatar
      extract camera_difficulty_bin_breaks · efb72132
      Jeremy Reizenstein authored
      Summary: As part of removing Task, move camera difficulty bin breaks from hard code to the top level.
      
      Reviewed By: davnov134
      
      Differential Revision: D37491040
      
      fbshipit-source-id: f2d6775ebc490f6f75020d13f37f6b588cc07a0b
      efb72132
    • Jeremy Reizenstein's avatar
      more padding options in Dataloader · 771cf8a3
      Jeremy Reizenstein authored
      Summary: Add facilities for dataloading non-sequential scenes.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37291277
      
      fbshipit-source-id: 0a33e3727b44c4f0cba3a2abe9b12f40d2a20447
      771cf8a3
  12. 04 Jul, 2022 1 commit
    • David Novotny's avatar
      Refactor autodecoders · 0dce8832
      David Novotny authored
      Summary: Refactors autodecoders. Tests pass.
      
      Reviewed By: bottler
      
      Differential Revision: D37592429
      
      fbshipit-source-id: 8f5c9eac254e1fdf0704d5ec5f69eb42f6225113
      0dce8832
  13. 10 Jun, 2022 1 commit
    • Jeremy Reizenstein's avatar
      pluggable JsonIndexDataset · 62752832
      Jeremy Reizenstein authored
      Summary: Make dataset type and args configurable on JsonIndexDatasetMapProvider.
      
      Reviewed By: davnov134
      
      Differential Revision: D36666705
      
      fbshipit-source-id: 4d0a3781d9a956504f51f1c7134c04edf1eb2846
      62752832
  14. 27 May, 2022 1 commit
    • Roman Shapovalov's avatar
      Adapting configs. · 49ed7b07
      Roman Shapovalov authored
      Summary: As subj.
      
      Reviewed By: bottler
      
      Differential Revision: D36705775
      
      fbshipit-source-id: 7370710e863025dc07a140b41f77a7c752e3159f
      49ed7b07
  15. 20 May, 2022 3 commits
    • Jeremy Reizenstein's avatar
      data_loader_map_provider · 0f12c516
      Jeremy Reizenstein authored
      Summary: replace dataloader_zoo with a pluggable DataLoaderMapProvider.
      
      Reviewed By: shapovalov
      
      Differential Revision: D36475441
      
      fbshipit-source-id: d16abb190d876940434329928f2e3f2794a25416
      0f12c516
    • Jeremy Reizenstein's avatar
      dataset_map_provider · 79c61a2d
      Jeremy Reizenstein authored
      Summary: replace dataset_zoo with a pluggable DatasetMapProvider. The logic is now in annotated_file_dataset_map_provider.
      
      Reviewed By: shapovalov
      
      Differential Revision: D36443965
      
      fbshipit-source-id: 9087649802810055e150b2fbfcc3c197a761f28a
      79c61a2d
    • Jeremy Reizenstein's avatar
      data_source · 73dc109d
      Jeremy Reizenstein authored
      Summary:
      Move dataset_args and dataloader_args from ExperimentConfig into a new member called datasource so that it can contain replaceables.
      
      Also add enum Task for task type.
      
      Reviewed By: shapovalov
      
      Differential Revision: D36201719
      
      fbshipit-source-id: 47d6967bfea3b7b146b6bbd1572e0457c9365871
      73dc109d
  16. 18 May, 2022 1 commit
    • Jeremy Reizenstein's avatar
      Make feature extractor pluggable · 9ec9d057
      Jeremy Reizenstein authored
      Summary: Make ResNetFeatureExtractor be an implementation of FeatureExtractorBase.
      
      Reviewed By: davnov134
      
      Differential Revision: D35433098
      
      fbshipit-source-id: 0664a9166a88e150231cfe2eceba017ae55aed3a
      9ec9d057
  17. 16 May, 2022 1 commit
    • Roman Shapovalov's avatar
      Correcting recent bugs code after debugging on devfair. · 0143d63b
      Roman Shapovalov authored
      Summary:
      1. Typo in the dataset path in the config.
      2. Typo in num_frames.
      3. Pick sequence was cached before it was modified for single-sequence.
      
      Reviewed By: bottler
      
      Differential Revision: D36417329
      
      fbshipit-source-id: 6dcd75583de510412e1ae58f63db04bb4447403e
      0143d63b
  18. 12 May, 2022 2 commits
    • David Novotny's avatar
      Raysampler as pluggable · e767c4b5
      David Novotny authored
      Summary:
      This converts raysamplers to ReplaceableBase so that users can hack their own raysampling impls.
      
      Context: Andrea tried to implement TensoRF within implicitron but could not due to the need to implement his own raysampler.
      
      Reviewed By: shapovalov
      
      Differential Revision: D36016318
      
      fbshipit-source-id: ef746f3365282bdfa9c15f7b371090a5aae7f8da
      e767c4b5
    • David Novotny's avatar
      ViewPooler class · 47d06c89
      David Novotny authored
      Summary: Implements a ViewPooler that groups ViewSampler and FeatureAggregator.
      
      Reviewed By: shapovalov
      
      Differential Revision: D35852367
      
      fbshipit-source-id: c1bcaf5a1f826ff94efce53aa5836121ad9c50ec
      47d06c89
  19. 21 Mar, 2022 1 commit