1. 03 Aug, 2022 1 commit
    • 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
  2. 02 Aug, 2022 4 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
    • 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
  3. 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
  4. 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
  5. 22 Jul, 2022 3 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 .to methods to the splatter and SplatterPhongShader. · 36edf2b3
      Krzysztof Chalupka authored
      Summary: Needed to properly change devices during OpenGL rasterization.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D37698568
      
      fbshipit-source-id: 38968149d577322e662d3b5d04880204b0a7be29
      36edf2b3
    • 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
  6. 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
  7. 19 Jul, 2022 1 commit
  8. 14 Jul, 2022 1 commit
    • Jiali Duan's avatar
      Fix Pytorch3D PnP test · 379c8b27
      Jiali Duan authored
      Summary:
      EPnP fails the test when the number of points is below 6. As suggested, quadratic option is in theory to deal with as few as 4 points (so num_pts_thresh=3 is set). And when num_pts > num_pts_thresh=4, skip_q is False.
      
      To avoid bumping num_pts_thresh while passing all the original tests, check_output is set to False when num_pts < 6, similar to the logic in Line 123-127.  It makes sure that the algo doesn't crash.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37804438
      
      fbshipit-source-id: 74576d63a9553e25e3ec344677edb6912b5f9354
      379c8b27
  9. 13 Jul, 2022 1 commit
  10. 12 Jul, 2022 2 commits
    • Tristan Rice's avatar
      shader: fix HardDepthShader sizes + tests (#1252) · 4ecc9ea8
      Tristan Rice authored
      Summary:
      This fixes a indexing bug in HardDepthShader and adds proper unit tests for both of the DepthShaders. This bug was introduced when updating the shader sizes and discovered when I switched my local model onto pytorch3d trunk instead of the patched copy.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1252
      
      Test Plan:
      Unit test + custom model code
      
      ```
      pytest tests/test_shader.py
      ```
      
      ![image](https://user-images.githubusercontent.com/909104/178397456-f478d0e0-9f6c-467a-a85b-adb4c47adfee.png)
      
      Reviewed By: bottler
      
      Differential Revision: D37775767
      
      Pulled By: d4l3k
      
      fbshipit-source-id: 5f001903985976d7067d1fa0a3102d602790e3e8
      4ecc9ea8
    • Tristan Rice's avatar
      renderer: add support for rendering high dimensional textures for... · 8d10ba52
      Tristan Rice authored
      renderer: add support for rendering high dimensional textures for classification/segmentation use cases (#1248)
      
      Summary:
      For 3D segmentation problems it's really useful to be able to train the models from multiple viewpoints using Pytorch3D as the renderer. Currently due to hardcoded assumptions in a few spots the mesh renderer only supports rendering RGB (3 dimensional) data. You can encode the classification information as 3 channel data but if you have more than 3 classes you're out of luck.
      
      This relaxes the assumptions to make rendering semantic classes work with `HardFlatShader` and `AmbientLights` with no diffusion/specular. The other shaders/lights don't make any sense for classification since they mutate the texture values in some way.
      
      This only requires changes in `Materials` and `AmbientLights`. The bulk of the code is the unit test.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1248
      
      Test Plan: Added unit test that renders a 5 dimensional texture and compare dimensions 2-5 to a stored picture.
      
      Reviewed By: bottler
      
      Differential Revision: D37764610
      
      Pulled By: d4l3k
      
      fbshipit-source-id: 031895724d9318a6f6bab5b31055bb3f438176a5
      8d10ba52
  11. 11 Jul, 2022 1 commit
    • Jeremy Reizenstein's avatar
      fix test · 57a40b36
      Jeremy Reizenstein authored
      Summary: remove erroneous RandomDataLoaderMapProvider
      
      Reviewed By: davnov134
      
      Differential Revision: D37751116
      
      fbshipit-source-id: cf3b555dc1e6304425914d1522b4f70407b498bf
      57a40b36
  12. 10 Jul, 2022 2 commits
    • David Novotny's avatar
      JsonIndexDatasetProviderV2 · e8390d35
      David Novotny authored
      Summary: A new version of json index dataset provider supporting CO3Dv2
      
      Reviewed By: shapovalov
      
      Differential Revision: D37690918
      
      fbshipit-source-id: bf2d5fc9d0f1220259e08661dafc69cdbe6b7f94
      e8390d35
    • David Novotny's avatar
      Changes for CO3Dv2 release [part1] · 4300030d
      David Novotny authored
      Summary:
      Implements several changes needed for the CO3Dv2 release:
      - FrameData contains crop_bbox_xywh which defines the outline of the image crop corresponding to the image-shaped tensors in FrameData
      - revised the definition of a bounding box inside JsonDatasetIndex: bbox_xyxy is [xmin, ymin, xmax, ymax], where xmax, ymax are not inclusive; bbox_xywh = [xmin, ymain, xmax-xmin, ymax-ymin]
      - is_filtered for detecting whether the entries of the dataset were somehow filtered
      - seq_frame_index_to_dataset_index allows to skip entries that are not present in the dataset
      
      Reviewed By: shapovalov
      
      Differential Revision: D37687547
      
      fbshipit-source-id: 7842756b0517878cc0964fc0935d3c0769454d78
      4300030d
  13. 06 Jul, 2022 2 commits
    • Jeremy Reizenstein's avatar
      get_all_train_cameras · 4e87c2b7
      Jeremy Reizenstein authored
      Summary: As part of removing Task, make the dataset code generate the source cameras for itself. There's a small optimization available here, in that the JsonIndexDataset could avoid loading images.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37313423
      
      fbshipit-source-id: 3e5e0b2aabbf9cc51f10547a3523e98c72ad8755
      4e87c2b7
    • 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
  14. 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
  15. 30 Jun, 2022 1 commit
    • Krzysztof Chalupka's avatar
      Refactor ViewMetrics · ae35824f
      Krzysztof Chalupka authored
      Summary:
      Make ViewMetrics easy to replace by putting them into an OmegaConf dataclass.
      
      Also, re-word a few variable names and fix minor TODOs.
      
      Reviewed By: bottler
      
      Differential Revision: D37327157
      
      fbshipit-source-id: 78d8e39bbb3548b952f10abbe05688409fb987cc
      ae35824f
  16. 29 Jun, 2022 1 commit
  17. 28 Jun, 2022 1 commit
    • Roman Shapovalov's avatar
      Fix: typo in dict processing · 7ce8ed55
      Roman Shapovalov authored
      Summary:
      David had his code crashed when using frame_annot["meta"] dictionary. Turns out we had a typo.
      The tests were passing by chance since all the keys were single-character strings.
      
      Reviewed By: bottler
      
      Differential Revision: D37503987
      
      fbshipit-source-id: c12b0df21116cfbbc4675a0182b9b9e6d62bad2e
      7ce8ed55
  18. 26 Jun, 2022 1 commit
  19. 24 Jun, 2022 2 commits
  20. 22 Jun, 2022 2 commits
    • Jeremy Reizenstein's avatar
      provide fg_probability for blender data · 3e4fb0b9
      Jeremy Reizenstein authored
      Summary: The blender synthetic dataset contains object masks in the alpha channel. Provide these in the corresponding dataset.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37344380
      
      fbshipit-source-id: 3ddacad9d667c0fa0ae5a61fb1d2ffc806c9abf3
      3e4fb0b9
    • Jeremy Reizenstein's avatar
      Llff & blender convention fix · 731ea53c
      Jeremy Reizenstein authored
      Summary: Images were coming out in the wrong format.
      
      Reviewed By: shapovalov
      
      Differential Revision: D37291278
      
      fbshipit-source-id: c10871c37dd186982e7abf2071ac66ed583df2e6
      731ea53c
  21. 20 Jun, 2022 1 commit
    • Jeremy Reizenstein's avatar
      bg_color for lstm renderer · cba26506
      Jeremy Reizenstein authored
      Summary: Allow specifying a color for non-opaque pixels in LSTMRenderer.
      
      Reviewed By: davnov134
      
      Differential Revision: D37172537
      
      fbshipit-source-id: 6039726678bb7947f7d8cd04035b5023b2d5398c
      cba26506
  22. 16 Jun, 2022 1 commit
    • Jeremy Reizenstein's avatar
      loading llff and blender datasets · 65f667fd
      Jeremy Reizenstein authored
      Summary: Copy code from NeRF for loading LLFF data and blender synthetic data, and create dataset objects for them
      
      Reviewed By: shapovalov
      
      Differential Revision: D35581039
      
      fbshipit-source-id: af7a6f3e9a42499700693381b5b147c991f57e5d
      65f667fd
  23. 10 Jun, 2022 4 commits
    • 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
    • Jeremy Reizenstein's avatar
      PathManagerFactory · 1d432513
      Jeremy Reizenstein authored
      Summary: Allow access to manifold internally by default.
      
      Reviewed By: davnov134
      
      Differential Revision: D36760481
      
      fbshipit-source-id: 2a16bd40e81ef526085ac1b3f4606b63c1841428
      1d432513
    • Jeremy Reizenstein's avatar
      allow get_default_args(JsonIndexDataset) · 1fb268de
      Jeremy Reizenstein authored
      Summary: Changes to JsonIndexDataset to make it fit with OmegaConf.structured. Also match some default values to what the provider defaults to.
      
      Reviewed By: davnov134
      
      Differential Revision: D36666704
      
      fbshipit-source-id: 65b059a1dbaa240ce85c3e8762b7c3db3b5a6e75
      1fb268de
    • Jeremy Reizenstein's avatar
      hooks and allow registering base class · 8bc0a04e
      Jeremy Reizenstein authored
      Summary: Allow a class to modify its subparts in get_default_args by defining the special function provide_config_hook.
      
      Reviewed By: davnov134
      
      Differential Revision: D36671081
      
      fbshipit-source-id: 3e5b73880cb846c494a209c4479835f6352f45cf
      8bc0a04e
  24. 01 Jun, 2022 2 commits
    • Jeremy Reizenstein's avatar
      Fix tests for OSS · 5cd70067
      Jeremy Reizenstein authored
      Summary: New paths.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D36734929
      
      fbshipit-source-id: c0ce7ee9145ddca07ef3758d31cc3c261b088e7d
      5cd70067
    • Krzysztof Chalupka's avatar
      Remove use of torch.tile to fix CI · 5b74a2cc
      Krzysztof Chalupka authored
      Summary: Our tests fail (https://fburl.com/jmoqo9bz) because test_splatter_blend uses torch.tile, which is not supported in earlier torch versions. Replace it with tensor.extend.
      
      Reviewed By: bottler
      
      Differential Revision: D36796098
      
      fbshipit-source-id: 38d5b40667f98f3163b33f44e53e96b858cfeba2
      5b74a2cc
  25. 26 May, 2022 2 commits
    • Jeremy Reizenstein's avatar
      chamfer for empty pointclouds #1174 · c6519f29
      Jeremy Reizenstein authored
      Summary: Fix divide by zero for empty pointcloud in chamfer. Also for empty batches. In process, needed to regularize num_points_per_cloud for empty batches.
      
      Reviewed By: kjchalup
      
      Differential Revision: D36311330
      
      fbshipit-source-id: 3378ab738bee77ecc286f2110a5c8dc445960340
      c6519f29
    • Krzysztof Chalupka's avatar
      SplatterBlender follow-ups · a42a89a5
      Krzysztof Chalupka authored
      Summary: A few minor additions I didn't fit into the SplatterBlender diffs, as requested by reviewers.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D36682437
      
      fbshipit-source-id: 57af995e766dfd2674b3984a3ba00aef7ca7db80
      a42a89a5