1. 20 May, 2020 1 commit
    • 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
  2. 19 May, 2020 1 commit
  3. 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
  4. 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
  5. 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
  6. 11 May, 2020 1 commit
  7. 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
  8. 06 May, 2020 2 commits
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 25 Apr, 2020 2 commits
  15. 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
  16. 23 Apr, 2020 2 commits
    • Jeremy Reizenstein's avatar
      avoid using torch/extension.h in cuda · 85c396f8
      Jeremy Reizenstein authored
      Summary:
      Use aten instead of torch interface in all cuda code. This allows the cuda build to work with pytorch 1.5 with GCC 5 (e.g. the compiler of ubuntu 16.04LTS). This wasn't working. It has been failing with errors like the below, perhaps due to a bug in nvcc.
      
      ```
      torch/include/torch/csrc/api/include/torch/nn/cloneable.h:68:61: error: invalid static_cast from type ‘const torch::OrderedDict<std::basic_string<char>, std::shared_ptr<torch::nn::Module> >’ to type ‘torch::OrderedDict<std::basic_string<char>, std::shared_ptr<torch::nn::Module> >
      ```
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21204029
      
      fbshipit-source-id: ca6bdbcecf42493365e1c23a33fe35e1759fe8b6
      85c396f8
    • Roman Shapovalov's avatar
      Not normalising control points by X.std() · 54b482bd
      Roman Shapovalov authored
      Summary:
      davnov134 found that the algorithm crashes if X is an axis-aligned plane. This is because I implemented scaling control points by `X.std()` as a poor man’s version of PCA whitening.
      I checked that it does not bring consistent improvements, so let’s get rid of it.
      
      The algorithm still results in slightly higher errors on the axis aligned planes but at least it does not crash. As a next step, I will experiment with detecting a planar case and using 3-point barycentric coordinates rather than 4-points.
      
      Reviewed By: davnov134
      
      Differential Revision: D21179968
      
      fbshipit-source-id: 1f002fce5541934486b51808be0e910324977222
      54b482bd
  17. 22 Apr, 2020 5 commits
    • Justin Johnson's avatar
      Expose knn_check_version in python · 9f31a4fd
      Justin Johnson authored
      Summary:
      We have multiple KNN CUDA implementations. From python, users can currently request a particular implementation via the `version` flag, but they have no way of knowing which implementations can be used for a given problem.
      
      This diff exposes a function `pytorch3d._C.knn_check_version(version, D, K)` that returns whether a particular version can be used.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21162573
      
      fbshipit-source-id: 6061960bdcecba454fd920b00036f4e9ff3fdbc0
      9f31a4fd
    • Nikhila Ravi's avatar
      fix comment in point rasterizer · e38cbfe5
      Nikhila Ravi authored
      Reviewed By: gkioxari
      
      Differential Revision: D21180328
      
      fbshipit-source-id: 218919c614c1ea54b5147871bd91960b8346524b
      e38cbfe5
    • Jeremy Reizenstein's avatar
      chamfer test consistency · 9e4bd2e5
      Jeremy Reizenstein authored
      Summary:
      Modify test_chamfer for more robustness. Avoid empty pointclouds, including where point_reduction is mean, for which we currently return nan (*), and so that we aren't looking at an empty gradient. Make sure we aren't using padding as points in the homogenous cases in the tests, which will lead to a tie between closest points and therefore a potential instability in the gradient - see https://github.com/pytorch/pytorch/issues/35699.
      
      (*) This doesn't attempt to fix the nan.
      
      Reviewed By: nikhilaravi, gkioxari
      
      Differential Revision: D21157322
      
      fbshipit-source-id: a609e84e25a24379c8928ff645d587552526e4af
      9e4bd2e5
    • Jeremy Reizenstein's avatar
      Cuda 10.2 for builds · faf08858
      Jeremy Reizenstein authored
      Summary: cuda 10.2 location on linux. Also remove unused conda test dependencies.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21176409
      
      fbshipit-source-id: dd3f339a92233ff16877ba76506ddf8f4418715d
      faf08858
    • Nikhila Ravi's avatar
      back face culling in rasterization · 4bf30593
      Nikhila Ravi authored
      Summary:
      Added backface culling as an option to the `raster_settings`. This is needed for the full forward rendering of shapenet meshes with texture (some meshes contain
      multiple overlapping segments which have different textures).
      
      For a triangle (v0, v1, v2) define the vectors A = (v1 - v0) and B = (v2 − v0) and use this to calculate the area of the triangle as:
      ```
      area = 0.5 * A  x B
      area = 0.5 * ((x1 − x0)(y2 − y0) − (x2 − x0)(y1 − y0))
      ```
      The area will be positive if (v0, v1, v2) are oriented counterclockwise (a front face), and negative if (v0, v1, v2) are oriented clockwise (a back face).
      
      We can reuse the `edge_function` as it already calculates the triangle area.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D20960115
      
      fbshipit-source-id: 2d8a4b9ccfb653df18e79aed8d05c7ec0f057ab1
      4bf30593
  18. 21 Apr, 2020 3 commits
    • charleschiu2012's avatar
      fix definition in function pytorch3d.renderer.cameras.look_at_view_transform (#120) · 3c6f9220
      charleschiu2012 authored
      Summary:
      fix Args' definition at line 1016, 1018, 1020 in function pytorch3d.renderer.cameras.look_at_view_transform.
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/120
      
      Reviewed By: bottler
      
      Differential Revision: D20597565
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: e10a221e3dccc0adf20b26808ad67328408a4388
      3c6f9220
    • Jeremy Reizenstein's avatar
      Builds with pytorch 1.5 · a53a2d37
      Jeremy Reizenstein authored
      Summary:
      Add conda packages for pytorch 1.5. Make wheels be only pytorch 1.5.
      
      Note that pytorch 1.4 has conda packages for cuda 9.2, 10.0 and 10.1, whilst pytorch 1.5 has packages for cuda 9.2, 10.1 and 10.2. We mirror these choices.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21157392
      
      fbshipit-source-id: 2f7311e6a83774a6d6c8afb8110b8bd9f37f1454
      a53a2d37
    • Georgia Gkioxari's avatar
      pytorch3d compatibility · f2b229c1
      Georgia Gkioxari authored
      Summary: Making meshrcnn compatible with new PyTorch3D features/API changes.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21149516
      
      fbshipit-source-id: 1c7b8c1c1f5a2abe7d379fee10ded5d2db21515a
      f2b229c1
  19. 20 Apr, 2020 2 commits
    • Nikhila Ravi's avatar
      coarse rasterization bug fix · 9ef1ee84
      Nikhila Ravi authored
      Summary:
      Fix a bug which resulted in a rendering artifacts if the image size was not a multiple of 16.
      Fix: Revert coarse rasterization to original implementation and only update fine rasterization to reverse the ordering of Y and X axis. This is much simpler than the previous approach!
      
      Additional changes:
      - updated mesh rendering end-end tests to check outputs from both naive and coarse to fine rasterization.
      - added pointcloud rendering end-end tests
      
      Reviewed By: gkioxari
      
      Differential Revision: D21102725
      
      fbshipit-source-id: 2e7e1b013dd6dd12b3a00b79eb8167deddb2e89a
      9ef1ee84
    • Jeremy Reizenstein's avatar
      skip code tests in conda build · 1e474960
      Jeremy Reizenstein authored
      Summary:
      None of the current test_build tests make sense during `conda build`.
      
      Also remove the unnecessary dependency on the `six` library.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20893852
      
      fbshipit-source-id: 685f0446eaa0bd9151eeee89fc630a1ddc0252ff
      1e474960
  20. 17 Apr, 2020 4 commits
    • Jeremy Reizenstein's avatar
      spelling and flake · 6207c359
      Jeremy Reizenstein authored
      Summary: mostly recent lintish things
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21089003
      
      fbshipit-source-id: 028733c1d875268f1879e4481da475b7100ba0b6
      6207c359
    • Jeremy Reizenstein's avatar
      torch C API warnings · 9397cd87
      Jeremy Reizenstein authored
      Summary: This is mostly replacing the old PackedTensorAccessor with the new PackedTensorAccessor64.
      
      Reviewed By: gkioxari
      
      Differential Revision: D21088773
      
      fbshipit-source-id: 5973e5a29d934eafb7c70ec5ec154ca076b64d27
      9397cd87
    • Jeremy Reizenstein's avatar
      vert_align for Pointclouds object · f25af969
      Jeremy Reizenstein authored
      Reviewed By: gkioxari
      
      Differential Revision: D21088730
      
      fbshipit-source-id: f8c125ac8c8009d45712ae63237ca64acf1faf45
      f25af969
    • Jeremy Reizenstein's avatar
      remove final nearest_neighbor files · e19df587
      Jeremy Reizenstein authored
      Summary: A couple of files for the removed nearest_neighbor functionality are left behind.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21088624
      
      fbshipit-source-id: 4bb29016b4e5f63102765b384c363733b60032fa
      e19df587