1. 24 Jun, 2020 1 commit
    • Jeremy Reizenstein's avatar
      specify full pytorch version for conda nightly builds. · 0baeb05a
      Jeremy Reizenstein authored
      Summary: Now pytorch 1.5.1 is released, pytorch 1.5 is ambiguous and causes problems. Now have specific builds for pytorch 1.5.0 and 1.5.1. Here we only change the conda builds.
      
      Reviewed By: gkioxari
      
      Differential Revision: D22196016
      
      fbshipit-source-id: 478327e870f538f54d3480d5a268a1ece5c5c680
      0baeb05a
  2. 18 Jun, 2020 2 commits
    • Luya Gao's avatar
      Adding support for selecting categories and ver2 for ShapeNetCore · 2ea6a7d8
      Luya Gao authored
      Summary: Adding support so that users can select which categories they would like to load with wordnet synset offsets or labels or a combination of both. ShapeNetCore now also supports loading v2.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22039207
      
      fbshipit-source-id: 1f0218acb790e5561e2ae373e99cebb9823eea1a
      2ea6a7d8
    • Luya Gao's avatar
      Skeleton of ShapeNetCore class · 9d279ba5
      Luya Gao authored
      Summary: Skeleton of ShapeNetCore class that loads ShapeNet v1 from a given directory to a Dataset object. Overrides _init_, _len_, and _getitem_ from torch.utils.data.Dataset. Currently getitem returns verts, faces and id_str, where id_str is a concatenation of synset_id and obj_id. Planning on adding support for loading ShapeNet v2, retrieving textures and returning wordnet synsets (not just ids) in next diffs.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21986222
      
      fbshipit-source-id: c2c515303f1898b6c495b52cb53c74d691585326
      9d279ba5
  3. 16 Jun, 2020 1 commit
    • Jeremy Reizenstein's avatar
      Restore C++14 compatibility · 2f6387f2
      Jeremy Reizenstein authored
      Summary: Fix the new CPU implementation of point_mesh functionality to be compatible with older C++.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22066785
      
      fbshipit-source-id: a245849342019a93ff68e186a10985458b007436
      2f6387f2
  4. 15 Jun, 2020 1 commit
    • Jeremy Reizenstein's avatar
      CPU implementation for point_mesh functions · 74659aef
      Jeremy Reizenstein authored
      Summary:
      point_mesh functions were missing CPU implementations.
      The indices returned are not always matching, possibly due to numerical instability.
      
      Reviewed By: gkioxari
      
      Differential Revision: D21594264
      
      fbshipit-source-id: 3016930e2a9a0f3cd8b3ac4c94a92c9411c0989d
      74659aef
  5. 10 Jun, 2020 1 commit
    • Jeremy Reizenstein's avatar
      Take care with single integers on gpu · 7f1e63ae
      Jeremy Reizenstein authored
      Summary:
      Pytorch seems to be becoming stricter about integer tensors of shape `(1,)` on GPU and not allowing them to be used as `int`s. For example the following no longer works on pytorch master,
          foo = torch.tensor([3, 5, 3], device="cuda:0")
          torch.arange(10) + foo[0]
      because this is the sum of tensors on different devices.
      
      Here fix tests which recently broke because of this.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21929745
      
      fbshipit-source-id: 25374f70468d1c895372766f1a9dd61df0833957
      7f1e63ae
  6. 09 Jun, 2020 2 commits
    • Yedidya Feldblum's avatar
      Cut FOR_EACH_KV · d0e7426a
      Yedidya Feldblum authored
      Summary: [Folly] Cut the FOR_EACH_KV macro, which may be replaced by a combination of range-for and structured bindings.
      
      Differential Revision: D21826182
      
      fbshipit-source-id: ce4712afd3d0d7806eb1fca8c97009da117f982e
      d0e7426a
    • Luya Gao's avatar
      Adding join_mesh in pytorch3d.structures.meshes · e053d7c4
      Luya Gao authored
      Summary: Adding a function in pytorch3d.structures.meshes to join multiple meshes into a Meshes object representing a single mesh. The function currently ignores all textures.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21876908
      
      fbshipit-source-id: 448602857e9d3d3f774d18bb4e93076f78329823
      e053d7c4
  7. 04 Jun, 2020 1 commit
  8. 03 Jun, 2020 1 commit
    • Jeremy Reizenstein's avatar
      Avoid plain division involving integers · 5444c53c
      Jeremy Reizenstein authored
      Summary: To avoid pytorch warnings and future behaviour changes, stop using torch.div and / with tensors of integers.
      
      Reviewed By: gkioxari, mruberry
      
      Differential Revision: D21857955
      
      fbshipit-source-id: fb9f3000f3d953352cdc721d2a5f73d3a4bbf4b7
      5444c53c
  9. 01 Jun, 2020 2 commits
    • Yedidya Feldblum's avatar
      Cut FOR_EACH_ENUMERATE · 40b068e4
      Yedidya Feldblum authored
      Summary: [Folly] Cut the `FOR_EACH_ENUMERATE` macro, which may be replaced by a combination of range-for, `ranges::view::enumerate`, and structured bindings.
      
      Reviewed By: markisaa
      
      Differential Revision: D21813019
      
      fbshipit-source-id: fc9ac09a4e2f72f1433d0a518f03d5cd69a59c55
      40b068e4
    • Luya Gao's avatar
      Adding support for changing background color · 65620e71
      Luya Gao authored
      Summary: Adds support to hard_rgb_blend and hard blending shaders in shader.py (HardPhongShader, HardGouraudShader, and HardFlatShader) for changing the background color on which objects are rendered
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21746062
      
      fbshipit-source-id: 08001200f4339d6a69c52405c6b8f4cac9f3f56e
      65620e71
  10. 23 May, 2020 2 commits
    • Nikhila Ravi's avatar
      update rasterizer transform method · e3819a49
      Nikhila Ravi authored
      Summary:
      Update the transform method in the mesh rasterizer class to use the new `update_padded` method on the `Meshes` class to directly update the mesh vertices.
      
      Also added a benchmark.
      
      Reviewed By: gkioxari
      
      Differential Revision: D21700352
      
      fbshipit-source-id: c330e4040c681729eb2cc7bdfd92fb4a51a1a7d6
      e3819a49
    • Georgia Gkioxari's avatar
      update padded in meshes · 1fb97f9c
      Georgia Gkioxari authored
      Summary:
      Three changes to Meshes
      
      1. `num_verts_per_mesh` and `num_faces_per_mesh` are assigned at construction time and are returned without the need for `compute_packed`
      2. `update_padded` updates `verts_padded` and shallow copies faces list and faces_padded and existing attributes from construction.
      3. `padded_to_packed_idx` does not need `compute_packed`
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21653674
      
      fbshipit-source-id: dc6815a2e2a925fe4a834fe357919da2b2c14527
      1fb97f9c
  11. 22 May, 2020 1 commit
    • generatedunixname89002005307016's avatar
      suppress errors in `vision` - batch 1 · ae68a54f
      generatedunixname89002005307016 authored
      Summary:
      This diff is auto-generated to upgrade the Pyre version and suppress errors in vision. The upgrade will affect Pyre local configurations in the following directories:
      ```
      vision/ale/search
      vision/fair/fvcore
      vision/fair/pytorch3d
      vision/ocr/rosetta_hash
      vision/vogue/personalization
      ```
      
      Differential Revision: D21688454
      
      fbshipit-source-id: 1f3c3fee42b6da2e162fd0932742ab8c5c96aa45
      ae68a54f
  12. 20 May, 2020 2 commits
    • Georgia Gkioxari's avatar
      fix alpha compositing · d689baac
      Georgia Gkioxari authored
      Summary:
      Fix division by zero when alpha is 1.0
      In this case, the nominator is already 0 and we need to make sure division with 0 does not occur which would produce nans
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21650478
      
      fbshipit-source-id: bc457105b3050fef1c8bd4e58e7d6d15c0c81ffd
      d689baac
    • Jeremy Reizenstein's avatar
      Alternative type names in PLY #205 · f2d1d2db
      Jeremy Reizenstein authored
      Summary: Add ability to decode ply files which use types like int32.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21639208
      
      fbshipit-source-id: 0ede7d4aa353a6e940446680a18e7ac0c48fafee
      f2d1d2db
  13. 19 May, 2020 1 commit
  14. 16 May, 2020 1 commit
    • Justin Johnson's avatar
      Add benchmark for diffuse and specular lighting · d8987c6f
      Justin Johnson authored
      Summary: I was trying to speed up the lighting computations, but my ideas didn't work. Even if that didn't work, we can at least commit the benchmarking script I wrote for diffuse and specular shading.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21580171
      
      fbshipit-source-id: 8b60c0284e91ecbe258b6aae839bd5c2bbe788aa
      d8987c6f
  15. 15 May, 2020 2 commits
    • Nikhila Ravi's avatar
      Make cuda tensors contiguous in host function and remove contiguous check · 3fef5068
      Nikhila Ravi authored
      Summary:
      Update the cuda kernels to:
      - remove contiguous checks for the grad tensors and for cpu functions which use accessors
      - for cuda implementations call `.contiguous()` on all tensors in the host function before invoking the kernel
      
      Reviewed By: gkioxari
      
      Differential Revision: D21598008
      
      fbshipit-source-id: 9b97bda4582fd4269c8a00999874d4552a1aea2d
      3fef5068
    • Roman Shapovalov's avatar
      Numerical stability of ePnP. · a8377f1f
      Roman Shapovalov authored
      Summary: lg-zhang found the problem with the quadratic part of ePnP implementation: n262385 . It was caused by a coefficient returned from the linear equation solver being equal to exactly 0.0, which caused `sign()` to return 0, something I had not anticipated. I also made sure we avoid division by zero by clamping all relevant denominators.
      
      Reviewed By: nikhilaravi, lg-zhang
      
      Differential Revision: D21531200
      
      fbshipit-source-id: 9eb2fa9d4f4f8f5f411d4cf1cffcc44b365b7e51
      a8377f1f
  16. 14 May, 2020 2 commits
    • Georgia Gkioxari's avatar
      flat shading fix · a0e14cae
      Georgia Gkioxari authored
      Summary:
      Make flat shading differentiable again
      
      Currently test fails with P130944403 which looks weird.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21567106
      
      fbshipit-source-id: 65995b64739e08397b3d021b65625e3c377cd1a5
      a0e14cae
    • Jeremy Reizenstein's avatar
      avoid converting a TensorOptions from float to integer · 728179e8
      Jeremy Reizenstein authored
      Summary: pytorch is adding checks that mean integer tensors with requires_grad=True need to be avoided. Fix accidentally creating them.
      
      Reviewed By: jcjohnson, gkioxari
      
      Differential Revision: D21576712
      
      fbshipit-source-id: 008218997986800a36d93caa1a032ee91f2bffcd
      728179e8
  17. 11 May, 2020 1 commit
  18. 10 May, 2020 1 commit
    • David Novotny's avatar
      SO3 log map fix for singularity at PI · 34a0df06
      David Novotny authored
      Summary:
      Fixes the case where the rotation angle is exactly 0/PI.
      Added a test for `so3_log_map(identity_matrix)`.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21477078
      
      fbshipit-source-id: adff804da97f6f0d4f50aa1f6904a34832cb8bfe
      34a0df06
  19. 06 May, 2020 2 commits
  20. 05 May, 2020 2 commits
    • Georgia Gkioxari's avatar
      add align modes for cubify · a61c9376
      Georgia Gkioxari authored
      Summary: Add alignment modes for cubify operation.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21393199
      
      fbshipit-source-id: 7022044e591229a6ed5efc361fd3215e65f43f86
      a61c9376
    • Jeremy Reizenstein's avatar
      Looser gradient check in test_rasterize_meshes · 8fc28baa
      Jeremy Reizenstein authored
      Summary: This has been failing intermittently
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21403157
      
      fbshipit-source-id: 51b74d6c813b52effe72d14b565e250fcabbb463
      8fc28baa
  21. 04 May, 2020 2 commits
    • Jeremy Reizenstein's avatar
      KNN return order documentation · 06ad1fb6
      Jeremy Reizenstein authored
      Summary: Fix documentation of KNN, issue #180
      
      Reviewed By: gkioxari
      
      Differential Revision: D21384761
      
      fbshipit-source-id: 2b36ee496f2060d17827d2fd66c490cdfa766866
      06ad1fb6
    • Nikhila Ravi's avatar
      lint fixes · 0eca74fa
      Nikhila Ravi authored
      Summary:
      Ran the linter.
      TODO: need to update the linter as per D21353065.
      
      Reviewed By: bottler
      
      Differential Revision: D21362270
      
      fbshipit-source-id: ad0e781de0a29f565ad25c43bc94a19b1828c020
      0eca74fa
  22. 01 May, 2020 1 commit
    • Jeremy Reizenstein's avatar
      Joining mismatched texture maps on CUDA #175 · 0c595dcf
      Jeremy Reizenstein authored
      Summary:
      Use nn.functional.interpolate instead of a TorchVision transform to resize texture maps to a common value. This works on all devices. This fixes issue #175.
      
      Also fix the condition so it only happens when needed.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21324510
      
      fbshipit-source-id: c50eb06514984995bd81f2c44079be6e0b4098e4
      0c595dcf
  23. 30 Apr, 2020 1 commit
    • Georgia Gkioxari's avatar
      fix self assign for normals est · e64e0d17
      Georgia Gkioxari authored
      Summary: Fix self assignment of normals when estimating normals
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21315980
      
      fbshipit-source-id: 2aa5864c3f066e39e07343f192cc6423ce1ae771
      e64e0d17
  24. 26 Apr, 2020 1 commit
    • Jeremy Reizenstein's avatar
      version 0.2.0 · 686c8666
      Jeremy Reizenstein authored
      Summary: Update version number for version 0.2.0.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21157358
      
      fbshipit-source-id: 32a5b93e5dc65a31a806a5ce7231f8603fe02e85
      686c8666
  25. 25 Apr, 2020 2 commits
  26. 24 Apr, 2020 4 commits
    • Nikhila Ravi's avatar
      fix get cuda device test error · cf84dacf
      Nikhila Ravi authored
      Summary:
      Cuda test failing on circle with the error `random_ expects 'from' to be less than 'to', but got from=0 >= to=0`
      
      This is because the `high` value in `torch.randint` is 1 more than the highest value in the distribution from which a value is drawn. So if there is only 1 cuda device available then the low and high are 0.
      
      Reviewed By: gkioxari
      
      Differential Revision: D21236669
      
      fbshipit-source-id: 46c312d431c474f1f2c50747b1d5e7afbd7df3a9
      cf84dacf
    • Michele Sanna's avatar
      a formula for bin size for images over 64x64 (#90) · f8acecb6
      Michele Sanna authored
      
      
      Summary:
      Signed-off-by: default avatarMichele Sanna <sanna@arrival.com>
      
      fixes the bin_size calculation with a formula for any image_size > 64. Matches the values chosen so far.
      
      simple test:
      
      ```
      import numpy as np
      import matplotlib.pyplot as plt
      
      image_size = np.arange(64, 2048)
      bin_size = np.where(image_size <= 64, 8, (2 ** np.maximum(np.ceil(np.log2(image_size)) - 4, 4)).astype(int))
      
      print(image_size)
      print(bin_size)
      
      for ims, bins in zip(image_size, bin_size):
          if ims <= 64:
              assert bins == 8
          elif ims <= 256:
              assert bins == 16
          elif ims <= 512:
              assert bins == 32
          elif ims <= 1024:
              assert bins == 64
          elif ims <= 2048:
              assert bins == 128
      
          assert (ims + bins - 1) // bins < 22
      
      plt.plot(image_size, bin_size)
      plt.grid()
      plt.show()
      ```
      
      ![img](https://user-images.githubusercontent.com/54891577/75464693-795bcf00-597f-11ea-9061-26440211691c.png)
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/90
      
      Reviewed By: jcjohnson
      
      Differential Revision: D21160372
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 660cf5832f4ca5be243c435a6bed969596fc0188
      f8acecb6
    • Nikhila Ravi's avatar
      Cuda updates · c3d636dc
      Nikhila Ravi authored
      Summary:
      Updates to:
      - enable cuda kernel launches on any GPU (not just the default)
      - cuda and contiguous checks for all kernels
      - checks to ensure all tensors are on the same device
      - error reporting in the cuda kernels
      - cuda tests now run on a random device not just the default
      
      Reviewed By: jcjohnson, gkioxari
      
      Differential Revision: D21215280
      
      fbshipit-source-id: 1bedc9fe6c35e9e920bdc4d78ed12865b1005519
      c3d636dc
    • Nikhila Ravi's avatar
      Update load obj and compare with SoftRas · c9267ab7
      Nikhila Ravi authored
      Summary:
      Updated the load obj function to support creating of a per face texture map using the information in an .mtl file. Uses the approach from in SoftRasterizer.
      
      Currently I have ported in the SoftRasterizer code but this is only to help with comparison and will  be deleted before landing. The ShapeNet Test data will also be deleted.
      
      Here is the [Design doc](https://docs.google.com/document/d/1AUcLP4QwVSqlfLAUfbjM9ic5vYn9P54Ha8QbcVXW2eI/edit?usp=sharing).
      
      ## Added
      - texture atlas creation functions in PyTorch based on the SoftRas cuda implementation
      - tests to compare SoftRas vs PyTorch3D implementation to verify it matches (using real shapenet data with meshes consisting of multiple textures)
      - benchmarks tests
      
      ## Remaining todo:
      - add more tests for obj io to test the new functions and the two texturing options
      - replace the shapenet data with the output from SoftRas saved as a file.
      
      # MAIN FILES TO REVIEW
      
      - `obj_io.py`
      - `test_obj_io.py` [still some tests to be added but have comparisons with SoftRas for now]
      
      The reference SoftRas implementations are in `softras_load_obj.py` and `load_textures.cu`.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20754859
      
      fbshipit-source-id: 42ace9dfb73f26e29d800c763f56d5b66c60c5e2
      c9267ab7