1. 03 Oct, 2022 2 commits
    • Darijan Gudelj's avatar
      load whole dataset in train loop · 37bd280d
      Darijan Gudelj authored
      Summary: Loads the whole dataset and moves it to the device and sends it to for sampling to enable full dataset heterogeneous raysampling.
      
      Reviewed By: bottler
      
      Differential Revision: D39263009
      
      fbshipit-source-id: c527537dfc5f50116849656c9e171e868f6845b1
      37bd280d
    • 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
  2. 22 Sep, 2022 1 commit
    • Jeremy Reizenstein's avatar
      foreach optimizers · 209c160a
      Jeremy Reizenstein authored
      Summary: Allow using the new `foreach` option on optimizers.
      
      Reviewed By: shapovalov
      
      Differential Revision: D39694843
      
      fbshipit-source-id: 97109c245b669bc6edff0f246893f95b7ae71f90
      209c160a
  3. 08 Sep, 2022 1 commit
    • Jeremy Reizenstein's avatar
      visualize_reconstruction fixes · 6e25fe8c
      Jeremy Reizenstein authored
      Summary: Various fixes to get visualize_reconstruction running, and an interactive test for it.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39286691
      
      fbshipit-source-id: 88735034cc01736b24735bcb024577e6ab7ed336
      6e25fe8c
  4. 07 Sep, 2022 1 commit
    • Jeremy Reizenstein's avatar
      hydra fix · 90b758f7
      Jeremy Reizenstein authored
      Summary: Workaround for oddity with new hydra.
      
      Reviewed By: davnov134
      
      Differential Revision: D39280639
      
      fbshipit-source-id: 76e91947f633589945446db93cf2dbc259642f8a
      90b758f7
  5. 06 Sep, 2022 1 commit
    • 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
  6. 01 Sep, 2022 1 commit
  7. 31 Aug, 2022 1 commit
  8. 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
  9. 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
  10. 18 Aug, 2022 1 commit
    • 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
  11. 15 Aug, 2022 1 commit
  12. 11 Aug, 2022 1 commit
    • Luca Di Grazia's avatar
      Incompatible variable type fixed (#1288) · a91f15f2
      Luca Di Grazia authored
      Summary:
      **"filename"**: "projects/nerf/nerf/implicit_function.py"
      **"warning_type"**: "Incompatible variable type [9]",
      **"warning_message"**: " input_skips is declared to have type `Tuple[int]` but is used as type `Tuple[]`.",
      **"warning_line"**: 256,
      **"fix"**: input_skips: Tuple[int,...] = ()
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1288
      
      Reviewed By: kjchalup
      
      Differential Revision: D38615188
      
      Pulled By: bottler
      
      fbshipit-source-id: a014344dd6cf2125f564f948a3c905ceb84cf994
      a91f15f2
  13. 10 Aug, 2022 3 commits
    • Jeremy Reizenstein's avatar
      implicitron readme updates · 1cd0cbff
      Jeremy Reizenstein authored
      Summary: add link in main readme
      
      Reviewed By: kjchalup
      
      Differential Revision: D38560053
      
      fbshipit-source-id: 0814febb67d0580394cfa2664e49e31ff7254bd4
      1cd0cbff
    • Jeremy Reizenstein's avatar
      IT readme updates · af48430e
      Jeremy Reizenstein authored
      Summary: Updates for recent replaceables.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38437370
      
      fbshipit-source-id: 00d600aa451e5849ba48107cd7a4319e9fc8549f
      af48430e
    • 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
  14. 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
  15. 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
  16. 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 renderer args · 078846d1
      Jeremy Reizenstein authored
      Summary: continued - don't duplicate inputs
      
      Reviewed By: kjchalup
      
      Differential Revision: D38248829
      
      fbshipit-source-id: 2d56418ecbec9cc597c3cf0c122199e274661516
      078846d1
    • 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
  17. 02 Aug, 2022 7 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
      SimpleDataLoaderMapProvider · 3a063f59
      Jeremy Reizenstein authored
      Summary: Simple DataLoaderMapProvider instance
      
      Reviewed By: davnov134
      
      Differential Revision: D38326719
      
      fbshipit-source-id: 58556833e76fae5790d25a59bea0aac4ce046bf1
      3a063f59
    • Krzysztof Chalupka's avatar
      Fix train_stats.pdf: they now work by default · b7b188bf
      Krzysztof Chalupka authored
      Summary: Before this diff, train_stats.py would not be created by default, EXCEPT when resuming training. This makes them appear from start.
      
      Reviewed By: shapovalov
      
      Differential Revision: D38320341
      
      fbshipit-source-id: 8ea5b99ec81c377ae129f58e78dc2eaff94821ad
      b7b188bf
    • 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
    • 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
    • Jeremy Reizenstein's avatar
      MeshRasterizerOpenGL import fixes · 3b7ab22d
      Jeremy Reizenstein authored
      Summary: Only import it if you ask for it.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38327167
      
      fbshipit-source-id: 3f05231f26eda582a63afc71b669996342b0c6f9
      3b7ab22d
  18. 01 Aug, 2022 2 commits
    • David Novotny's avatar
      Better seeding of random engines · 80fc0ee0
      David Novotny authored
      Summary: Currently, seeds are set only inside the train loop. But this does not ensure that the model weights are initialized the same way everywhere which makes all experiments irreproducible. This diff fixes it.
      
      Reviewed By: bottler
      
      Differential Revision: D38315840
      
      fbshipit-source-id: 3d2ecebbc36072c2b68dd3cd8c5e30708e7dd808
      80fc0ee0
    • 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
  19. 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
  20. 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
  21. 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
  22. 17 Jul, 2022 1 commit
    • Jeremy Reizenstein's avatar
      option to avoid accelerate · 9b2e5705
      Jeremy Reizenstein authored
      Summary: For debugging, introduce PYTORCH3D_NO_ACCELERATE env var.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37885393
      
      fbshipit-source-id: de080080c0aa4b6d874028937083a0113bb97c23
      9b2e5705
  23. 15 Jul, 2022 1 commit
  24. 13 Jul, 2022 3 commits
    • Roman Shapovalov's avatar
      Fixes to CO3Dv2 provider. · 36ba079b
      Roman Shapovalov authored
      Summary:
      1. Random sampling of num batches without replacement not supported.
      2.Providers should implement the interface for the training loop to work.
      
      Reviewed By: bottler, davnov134
      
      Differential Revision: D37815388
      
      fbshipit-source-id: 8a2795b524e733f07346ffdb20a9c0eb1a2b8190
      36ba079b
    • Jeremy Reizenstein's avatar
      add accelerate dependency · 55f67b0d
      Jeremy Reizenstein authored
      Summary: Accelerate is an additional implicitron dependency, so document it.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37786933
      
      fbshipit-source-id: 11024fe604107881f8ca29e17cb5cbfe492fc7f9
      55f67b0d
    • Roman Shapovalov's avatar
      Fix: making visualisation work again · 4261e59f
      Roman Shapovalov authored
      Summary:
      1. Respecting `visdom_show_preds` parameter when it is False.
      2. Clipping the images pre-visualisation, which is important for methods like SRN that are not arare of pixel value range.
      
      Reviewed By: bottler
      
      Differential Revision: D37786439
      
      fbshipit-source-id: 8dbb5104290bcc5c2829716b663cae17edc911bd
      4261e59f
  25. 12 Jul, 2022 2 commits
    • Jeremy Reizenstein's avatar
      fix trainer test · d3b7f5f4
      Jeremy Reizenstein authored
      Summary: After recent accelerate change D37543870 (https://github.com/facebookresearch/pytorch3d/commit/aa8b03f31dc2a178f8d7da457df28f19b5917009), update interactive trainer test.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37785932
      
      fbshipit-source-id: 9211374323b6cfd80f6c5ff3a4fc1c0ca04b54ba
      d3b7f5f4
    • Nikhila Ravi's avatar
      Updates to support Accelerate and multigpu training (#37) · aa8b03f3
      Nikhila Ravi authored
      Summary:
      ## Changes:
      - Added Accelerate Library and refactored experiment.py to use it
      - Needed to move `init_optimizer` and `ExperimentConfig` to a separate file to be compatible with submitit/hydra
      - Needed to make some modifications to data loaders etc to work well with the accelerate ddp wrappers
      - Loading/saving checkpoints incorporates an unwrapping step so remove the ddp wrapped model
      
      ## Tests
      
      Tested with both `torchrun` and `submitit/hydra` on two gpus locally. Here are the commands:
      
      **Torchrun**
      
      Modules loaded:
      ```sh
      1) anaconda3/2021.05   2) cuda/11.3   3) NCCL/2.9.8-3-cuda.11.3   4) gcc/5.2.0. (but unload gcc when using submit)
      ```
      
      ```sh
      torchrun --nnodes=1 --nproc_per_node=2 experiment.py --config-path ./configs --config-name repro_singleseq_nerf_test
      ```
      
      **Submitit/Hydra Local test**
      
      ```sh
      ~/pytorch3d/projects/implicitron_trainer$ HYDRA_FULL_ERROR=1 python3.9 experiment.py --config-name repro_singleseq_nerf_test --multirun --config-path ./configs  hydra/launcher=submitit_local hydra.launcher.gpus_per_node=2 hydra.launcher.tasks_per_node=2 hydra.launcher.nodes=1
      ```
      
      **Submitit/Hydra distributed test**
      
      ```sh
      ~/implicitron/pytorch3d$ python3.9 experiment.py --config-name repro_singleseq_nerf_test --multirun --config-path ./configs  hydra/launcher=submitit_slurm hydra.launcher.gpus_per_node=8 hydra.launcher.tasks_per_node=8 hydra.launcher.nodes=1 hydra.launcher.partition=learnlab hydra.launcher.timeout_min=4320
      ```
      
      ## TODOS:
      - Fix distributed evaluation: currently this doesn't work as the input format to the evaluation function is not suitable for gathering across gpus (needs to be nested list/tuple/dicts of objects that satisfy `is_torch_tensor`) and currently `frame_data`  contains `Cameras` type.
      - Refactor the `accelerator` object to be accessible by all functions instead of needing to pass it around everywhere? Maybe have a `Trainer` class and add it as a method?
      - Update readme with installation instructions for accelerate and also commands for running jobs with torchrun and submitit/hydra
      
      X-link: https://github.com/fairinternal/pytorch3d/pull/37
      
      Reviewed By: davnov134, kjchalup
      
      Differential Revision: D37543870
      
      Pulled By: bottler
      
      fbshipit-source-id: be9eb4e91244d4fe3740d87dafec622ae1e0cf76
      aa8b03f3