1. 25 May, 2022 5 commits
    • Jeremy Reizenstein's avatar
      rename ImplicitronDataset to JsonIndexDataset · fbd3c679
      Jeremy Reizenstein authored
      Summary: The ImplicitronDataset class corresponds to JsonIndexDatasetMapProvider
      
      Reviewed By: shapovalov
      
      Differential Revision: D36661396
      
      fbshipit-source-id: 80ca2ff81ef9ecc2e3d1f4e1cd14b6f66a7ec34d
      fbd3c679
    • Jeremy Reizenstein's avatar
      move targets · 34f648ed
      Jeremy Reizenstein authored
      Summary: Move testing targets from pytorch3d/tests/TARGETS to pytorch3d/TARGETS.
      
      Reviewed By: shapovalov
      
      Differential Revision: D36186940
      
      fbshipit-source-id: a4c52c4d99351f885e2b0bf870532d530324039b
      34f648ed
    • Jeremy Reizenstein's avatar
      further test fix · f625fe1f
      Jeremy Reizenstein authored
      Summary: test_viewpool was inactive so missed being fixed in D36547815 (https://github.com/facebookresearch/pytorch3d/commit/2d1c6d5d9382651bbf825f5f1677d576305d1f92)
      
      Reviewed By: kjchalup
      
      Differential Revision: D36625587
      
      fbshipit-source-id: e7224eadfa5581fe61f10f67d2221071783de04a
      f625fe1f
    • Krzysztof Chalupka's avatar
      SplatterPhongShader Benchmarks · 7c25d34d
      Krzysztof Chalupka authored
      Summary:
      Benchmarking. We only use num_faces=2 for splatter, because as far as I can see one would never need to use more. Pose optimization and mesh optimization experiments (see next two diffs) showed that Splatter with 2 faces beats Softmax with 50 and 100 faces in terms of accuracy.
      
      Results: We're slower at 64px^2. At 128px and 256px, we're slower than Softmax+50faces, but faster than Softmax+100faces. We're also slower at 10 faces/pix, but expectation as well as results show that more then 2 faces shouldn't be necessary. See also more results in .https://fburl.com/gdoc/ttv7u7hp
      
      Reviewed By: jcjohnson
      
      Differential Revision: D36210575
      
      fbshipit-source-id: c8de28c8a59ce5fe21a47263bd43d2757b15d123
      7c25d34d
    • Krzysztof Chalupka's avatar
      SplatterBlender · c5a83f46
      Krzysztof Chalupka authored
      Summary: Splatting shader. See code comments for details. Same API as SoftPhongShader.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D36354301
      
      fbshipit-source-id: 71ee37f7ff6bb9ce028ba42a65741424a427a92d
      c5a83f46
  2. 24 May, 2022 1 commit
    • Jeremy Reizenstein's avatar
      PLY heterogenous faces fix · 90d00f1b
      Jeremy Reizenstein authored
      Summary: PLY with mixture of triangle and quadrilateral faces was failing.
      
      Reviewed By: gkioxari
      
      Differential Revision: D36592981
      
      fbshipit-source-id: 5373edb2f38389ac646a75fd2e1fa7300eb8d054
      90d00f1b
  3. 22 May, 2022 1 commit
  4. 20 May, 2022 5 commits
    • Jeremy Reizenstein's avatar
      simplify image_feature_extractor control · 2d1c6d5d
      Jeremy Reizenstein authored
      Summary: If no view pooling, don't disable image_feature_extractor. Make image_feature_extractor default to absent.
      
      Reviewed By: davnov134
      
      Differential Revision: D36547815
      
      fbshipit-source-id: e51718e1bcbf65b8b365a6e894d4324f136635e9
      2d1c6d5d
    • Jeremy Reizenstein's avatar
      ImplicitronDatasetBase -> DatasetBase · 9fe15da3
      Jeremy Reizenstein authored
      Summary: Just a rename
      
      Reviewed By: shapovalov
      
      Differential Revision: D36516885
      
      fbshipit-source-id: 2126e3aee26d89a95afdb31e06942d61cbe88d5a
      9fe15da3
    • 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
      New file for ImplicitronDatasetBase · 69c6d06e
      Jeremy Reizenstein authored
      Summary: Separate ImplicitronDatasetBase and FrameData (to be used by all data sources) from ImplicitronDataset (which is specific).
      
      Reviewed By: shapovalov
      
      Differential Revision: D36413111
      
      fbshipit-source-id: 3725744cde2e08baa11aff4048237ba10c7efbc6
      69c6d06e
  5. 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
  6. 17 May, 2022 3 commits
  7. 16 May, 2022 1 commit
    • Jeremy Reizenstein's avatar
      create_x_impl · 899a3192
      Jeremy Reizenstein authored
      Summary: Make create_x delegate to create_x_impl so that users can rely on create_x_impl in their overrides of create_x.
      
      Reviewed By: shapovalov, davnov134
      
      Differential Revision: D35929810
      
      fbshipit-source-id: 80595894ee93346b881729995775876b016fc08e
      899a3192
  8. 15 May, 2022 1 commit
    • John Reese's avatar
      apply import merging for fbcode (11 of 11) · 3b230064
      John Reese authored
      Summary:
      Applies new import merging and sorting from µsort v1.0.
      
      When merging imports, µsort will make a best-effort to move associated
      comments to match merged elements, but there are known limitations due to
      the diynamic nature of Python and developer tooling. These changes should
      not produce any dangerous runtime changes, but may require touch-ups to
      satisfy linters and other tooling.
      
      Note that µsort uses case-insensitive, lexicographical sorting, which
      results in a different ordering compared to isort. This provides a more
      consistent sorting order, matching the case-insensitive order used when
      sorting import statements by module name, and ensures that "frog", "FROG",
      and "Frog" always sort next to each other.
      
      For details on µsort's sorting and merging semantics, see the user guide:
      https://usort.readthedocs.io/en/stable/guide.html#sorting
      
      Reviewed By: lisroach
      
      Differential Revision: D36402260
      
      fbshipit-source-id: 7cb52f09b740ccc580e61e6d1787d27381a8ce00
      3b230064
  9. 13 May, 2022 1 commit
  10. 12 May, 2022 3 commits
    • Jeremy Reizenstein's avatar
      resnet34 weights for remote executor · 9e57b994
      Jeremy Reizenstein authored
      Summary: Like vgg16 for lpips, internally we need resnet34 weights for coming feature extractor tests.
      
      Reviewed By: davnov134
      
      Differential Revision: D36349361
      
      fbshipit-source-id: 1c33009c904766fcc15e7e31cd15d0f820c57354
      9e57b994
    • 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
    • John Reese's avatar
      formatting changes from black 22.3.0 · bef959c7
      John Reese authored
      Summary:
      Applies the black-fbsource codemod with the new build of pyfmt.
      
      paintitblack
      
      Reviewed By: lisroach
      
      Differential Revision: D36324783
      
      fbshipit-source-id: 280c09e88257e5e569ab729691165d8dedd767bc
      bef959c7
  11. 11 May, 2022 1 commit
  12. 09 May, 2022 1 commit
  13. 06 May, 2022 1 commit
    • Jeremy Reizenstein's avatar
      test runner for eval_demo · ec9580a1
      Jeremy Reizenstein authored
      Summary:
      Create a test runner for the eval_demo code.  Debugging this is useful for understanding datasets.
      
      Introduces an environment variable INTERACTIVE_TESTING for ignoring tests which are not intended for use in regular test runs.
      
      Reviewed By: shapovalov
      
      Differential Revision: D35964016
      
      fbshipit-source-id: ab0f93aff66b6cfeca942b14466cf81f7feb2224
      ec9580a1
  14. 26 Apr, 2022 1 commit
    • Jeremy Reizenstein's avatar
      chunked_inputs · 2edb93d1
      Jeremy Reizenstein authored
      Summary: Make method for SDF's use of object mask more general, so that a renderer can be given per-pixel values.
      
      Reviewed By: shapovalov
      
      Differential Revision: D35247412
      
      fbshipit-source-id: 6aeccb1d0b5f1265a3f692a1453407a07e51a33c
      2edb93d1
  15. 13 Apr, 2022 2 commits
    • Tim Hatch's avatar
      apply import merging for fbcode/vision/fair (2 of 2) · 34bbb3ad
      Tim Hatch authored
      Summary:
      Applies new import merging and sorting from µsort v1.0.
      
      When merging imports, µsort will make a best-effort to move associated
      comments to match merged elements, but there are known limitations due to
      the diynamic nature of Python and developer tooling. These changes should
      not produce any dangerous runtime changes, but may require touch-ups to
      satisfy linters and other tooling.
      
      Note that µsort uses case-insensitive, lexicographical sorting, which
      results in a different ordering compared to isort. This provides a more
      consistent sorting order, matching the case-insensitive order used when
      sorting import statements by module name, and ensures that "frog", "FROG",
      and "Frog" always sort next to each other.
      
      For details on µsort's sorting and merging semantics, see the user guide:
      https://usort.readthedocs.io/en/stable/guide.html#sorting
      
      Reviewed By: bottler
      
      Differential Revision: D35553814
      
      fbshipit-source-id: be49bdb6a4c25264ff8d4db3a601f18736d17be1
      34bbb3ad
    • Jeremy Reizenstein's avatar
      make points2volumes feature rescaling optional · 78fd5af1
      Jeremy Reizenstein authored
      Summary: Add option to not rescale the features, giving more control. https://github.com/facebookresearch/pytorch3d/issues/1137
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D35219577
      
      fbshipit-source-id: cbbb643b91b71bc908cedc6dac0f63f6d1355c85
      78fd5af1
  16. 11 Apr, 2022 5 commits
    • Krzysztof Chalupka's avatar
      Submesh 4/n: TexturesVertex submeshing · 22f86072
      Krzysztof Chalupka authored
      Summary: Add submeshing capability for meshes with TexturesVertex.
      
      Reviewed By: bottler
      
      Differential Revision: D35448534
      
      fbshipit-source-id: 6d16a31a5bfb24ce122cf3c300a7616bc58353d1
      22f86072
    • Krzysztof Chalupka's avatar
      Submesh 3/n: Add submeshing functionality · 050f650a
      Krzysztof Chalupka authored
      Summary:
      Copypasting the docstring:
      ```
              Split a mesh into submeshes, defined by face indices of the original Meshes object.
      
              Args:
                face_indices:
                  Let the original mesh have verts_list() of length N.
                  Can be either
                    - List of length N. The n-th element is a list of length num_submeshes_n
                      (empty lists are allowed). Each element of the n-th sublist is a LongTensor
                      of length num_faces.
                    - List of length N. The n-th element is a possibly empty padded LongTensor of
                      shape (num_submeshes_n, max_num_faces).
      
              Returns:
                Meshes object with selected submeshes. The submesh tensors are cloned.
      
              Currently submeshing only works with no textures or with the TexturesVertex texture.
      
              Example:
      
              Take a Meshes object `cubes` with 4 meshes, each a translated cube. Then:
                  * len(cubes) is 4, len(cubes.verts_list()) is 4, len(cubes.faces_list()) is 4,
                  * [cube_verts.size for cube_verts in cubes.verts_list()] is [8, 8, 8, 8],
                  * [cube_faces.size for cube_faces in cubes.faces_list()] if [6, 6, 6, 6],
      
              Now let front_facet, top_and_bottom, all_facets be LongTensors of
              sizes (2), (4), and (12), each picking up a number of facets of a cube by specifying
              the appropriate triangular faces.
      
              Then let `subcubes = cubes.submeshes([[front_facet, top_and_bottom], [], [all_facets], []])`.
                  * len(subcubes) is 3.
                  * subcubes[0] is the front facet of the cube contained in cubes[0].
                  * subcubes[1] is a mesh containing the (disconnected) top and bottom facets of cubes[0].
                  * subcubes[2] is a clone of cubes[2].
                  * There are no submeshes of cubes[1] and cubes[3] in subcubes.
                  * subcubes[0] and subcubes[1] are not watertight. subcubes[2] is.
      ```
      
      Reviewed By: bottler
      
      Differential Revision: D35440657
      
      fbshipit-source-id: 8a6d2d300ce226b5b9eb440688528b5e795195a1
      050f650a
    • Krzysztof Chalupka's avatar
      Submesh 2/n: to_sorted · 8596fcac
      Krzysztof Chalupka authored
      Summary:
      Sort a mesh's vertices in alphabetical order, and resort the face coords accordingly. Textured meshes are not supported yet, but will be added down the stack.
      
      This, togehter with mesh equality, can be used to compare two meshes in a way invariant to vertex permutations, as shown in the unit tests.
      
      We do not want the submeshing mechanism to guarantee any particular vertex order, leaving that up to the implementation, so we need this function for testing.
      
      Reviewed By: bottler
      
      Differential Revision: D35440656
      
      fbshipit-source-id: 5a4dd921fdb00625a33da08b5fea79e20ac6402c
      8596fcac
    • Krzysztof Chalupka's avatar
      Submesh 1/n: Implement mesh equality · 7f097b06
      Krzysztof Chalupka authored
      Summary: Adding a mesh equality operator. Two Meshes objects m1, m2 are equal iff their vertex lists, face lists, and normals lists are equal. Textures meshes are not supported yet, but will be added for vertex textures down the stack.
      
      Reviewed By: bottler, nikhilaravi
      
      Differential Revision: D35440655
      
      fbshipit-source-id: 69974a59c091416afdb2892896859a189f5ebf3a
      7f097b06
    • Krzysztof Chalupka's avatar
      Submesh 0/n: Default to empty Meshes · aab95575
      Krzysztof Chalupka authored
      Summary:
      The default behavior of Meshes (with verts=None, faces=None) throws an exception:
      ```
      meshes = Meshes()
      > ValueError: Verts and Faces must be either a list or a tensor with shape (batch_size, N, 3) where N is either the maximum number of verts or faces respectively.
      ```
      
      Instead, let's default to an empty mesh, following e.g. PyTorch:
      ```
      empty_tensor = torch.FloatTensor()
      > torch.tensor([])
      ```
      
      this change is backwards-compatible (you can still init with verts=[], faces=[]).
      
      Reviewed By: bottler, nikhilaravi
      
      Differential Revision: D35443453
      
      fbshipit-source-id: d638a8fef49a089bf0da6dd2201727b94ceb21ec
      aab95575
  17. 10 Apr, 2022 1 commit
    • Georgia Gkioxari's avatar
      add L1 support for KNN & Chamfer · 67fff956
      Georgia Gkioxari authored
      Summary:
      Added L1 norm for KNN and chamfer op
      * The norm is now specified with a variable `norm` which can only be 1 or 2
      
      Reviewed By: bottler
      
      Differential Revision: D35419637
      
      fbshipit-source-id: 77813fec650b30c28342af90d5ed02c89133e136
      67fff956
  18. 06 Apr, 2022 2 commits
  19. 04 Apr, 2022 4 commits
    • Jeremy Reizenstein's avatar
      store original declared types in Configurable · 3b8a33e9
      Jeremy Reizenstein authored
      Summary: Aid reflection by adding the original declared types of replaced members of a configurable as values in _processed_members.
      
      Reviewed By: davnov134
      
      Differential Revision: D35358422
      
      fbshipit-source-id: 80ef3266144c51c1c2105f349e0dd3464e230429
      3b8a33e9
    • Jeremy Reizenstein's avatar
      logging · 199309fc
      Jeremy Reizenstein authored
      Summary: Use logging instead of printing in the internals of implicitron.
      
      Reviewed By: davnov134
      
      Differential Revision: D35247581
      
      fbshipit-source-id: be5ddad5efe1409adbae0575d35ade6112b3be63
      199309fc
    • Jeremy Reizenstein's avatar
      avoid visdom import in tests · 6473aa31
      Jeremy Reizenstein authored
      Summary: This might make the implicitron tests work better on RE.
      
      Reviewed By: davnov134
      
      Differential Revision: D35283131
      
      fbshipit-source-id: 4dda9684f632ab6e9cebcbf1e6e4a8243ec00c85
      6473aa31
    • Jeremy Reizenstein's avatar
      fix Optional[List] in Configurable · 2802fd93
      Jeremy Reizenstein authored
      Summary: Optional[not_a_type] was causing errors.
      
      Reviewed By: davnov134
      
      Differential Revision: D35355530
      
      fbshipit-source-id: e9b52cfd6347ffae0fe688ef30523a4092ccf9fd
      2802fd93