1. 31 Aug, 2022 4 commits
    • Jiali Duan's avatar
      Update Rasterizer and add end2end fisheye integration test · d19e6243
      Jiali Duan authored
      Summary:
      1) Update rasterizer/point rasterizer to accommodate fisheyecamera. Specifically, transform_points is in placement of explicit transform compositions.
      
      2) In rasterizer unittests, update corresponding tests for rasterizer and point_rasterizer. Address comments to test fisheye against perspective camera when distortions are turned off.
      
      3) Address comments to add end2end test for fisheyecameras. In test_render_meshes, fisheyecameras are added to camera enuerations whenever possible.
      
      4) Test renderings with fisheyecameras of different params on cow mesh.
      
      5) Use compositions for linear cameras whenever possible.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38932736
      
      fbshipit-source-id: 5b7074fc001f2390f4cf43c7267a8b37fd987547
      d19e6243
    • Jiali Duan's avatar
      Amend D38407094: Fisheye Camera for PyTorch3D · b0515e14
      Jiali Duan authored
      Summary:
      Amend FisheyeCamera by adding tests for all
      combination of params and for different batch_sizes.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39176747
      
      fbshipit-source-id: 830d30da24beeb2f0df52db0b17a4303ed53b59c
      b0515e14
    • Chris Lambert's avatar
      Remove pytorch3d's wrappers for eigh, solve, lstsq, qr · d4a1051e
      Chris Lambert authored
      Summary: Remove the compat functions eigh, solve, lstsq, and qr. Migrate callers to use torch.linalg directly.
      
      Reviewed By: bottler
      
      Differential Revision: D39172949
      
      fbshipit-source-id: 484230a553237808f06ee5cdfde64651cba91c4c
      d4a1051e
    • Jeremy Reizenstein's avatar
      test order fix · 9a1213e0
      Jeremy Reizenstein authored
      Summary: A dummy value in test_opengl_utils seems to be able to break tests in test_mesh_renderer_opengl{,_to}.
      
      Reviewed By: kjchalup
      
      Differential Revision: D39173275
      
      fbshipit-source-id: 83b15159f70135ea575d5085c7b6b37badd6e49e
      9a1213e0
  2. 28 Aug, 2022 2 commits
    • Jiali Duan's avatar
      Benchmark Cameras · 03562d87
      Jiali Duan authored
      Summary: Address comments to add benchmarkings for cameras and the new fisheye cameras. The dependency functions in test_cameras have been updated in Diff 1. The following two snapshots show benchmarking results.
      
      Reviewed By: kjchalup
      
      Differential Revision: D38991914
      
      fbshipit-source-id: 51fe9bb7237543e4ee112c9f5068a4cf12a9d482
      03562d87
    • Jiali Duan's avatar
      Fisheye Camera for PyTorch3D · 2283c292
      Jiali Duan authored
      Summary:
      1. A Fisheye camera model that generalizes pinhole camera by considering distortions (i.e. radial, tangential and thin-prism distortions).
      
      2. Added tests against perspective cameras when distortions are off and Aria data points when distortions are on.
      
      3. Address comments to test unhandled shapes between points and transforms. Added tests for __FIELDS, shape broadcasts, cuda etc.
      
      4. Address earlier comments for code efficiency (e.g., adopted torch.norm; torch.solve for matrix inverse; removed inplace operations; unnecessary clone; expand in place of repeat etc).
      
      Reviewed By: jcjohnson
      
      Differential Revision: D38407094
      
      fbshipit-source-id: a3ab48c85c496ac87af692d5d461bb3fc2a2db13
      2283c292
  3. 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
  4. 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
  5. 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
  6. 22 Aug, 2022 1 commit
    • Georgia Gkioxari's avatar
      eps fix for iou3d · 1bfe6bf2
      Georgia Gkioxari authored
      Summary: Fix EPS issue that causes numerical instabilities when boxes are very close
      
      Reviewed By: kjchalup
      
      Differential Revision: D38661465
      
      fbshipit-source-id: d2b6753cba9dc2f0072ace5289c9aa815a1a29f6
      1bfe6bf2
  7. 18 Aug, 2022 3 commits
    • Darijan Gudelj's avatar
      Split Volumes class to data and location part · f825f7e4
      Darijan Gudelj authored
      Summary: Split Volumes class to data and location part so that location part can be reused in planned VoxelGrid classes.
      
      Reviewed By: bottler
      
      Differential Revision: D38782015
      
      fbshipit-source-id: 489da09c5c236f3b81961ce9b09edbd97afaa7c8
      f825f7e4
    • 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
  8. 16 Aug, 2022 1 commit
    • Roman Shapovalov's avatar
      Boolean indexing of cameras · b7c826b7
      Roman Shapovalov authored
      Summary: Reasonable to expect bool indexing.
      
      Reviewed By: bottler, kjchalup
      
      Differential Revision: D38741446
      
      fbshipit-source-id: 22b607bf13110043c5624196c66ca1484fdbce6c
      b7c826b7
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 19 Jul, 2022 1 commit
  20. 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
  21. 13 Jul, 2022 1 commit
  22. 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
  23. 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
  24. 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