Summary: When rendering meshes with Phong shading, interpolate_face_attributes was taking up a nontrivial fraction of the overall shading time. This diff replaces our Python implementation of this function with a CUDA implementation.
Reviewed By: nikhilaravi
Differential Revision: D21610763
fbshipit-source-id: 2bb362a28f698541812aeab539047264b125ebb8
Summary: Make the `_open_file()` function return a context manager and remove the associated file closure
Reviewed By: nikhilaravi
Differential Revision: D20720506
fbshipit-source-id: 7d96ceb2fd64b6ee3985d0b0faf8d8bf791b1966
Summary: Finish extracting _open_file() to a separate utils module (started with D20754859 (c9267ab7af) / previous version of this diff).
Reviewed By: nikhilaravi
Differential Revision: D20720344
fbshipit-source-id: 77ef201ff37a8f2a0cd19be162cb97ee99480158
Summary: Remove abbreviated installation instructions from the homepage because they confuse.
Reviewed By: gkioxari
Differential Revision: D22160787
fbshipit-source-id: 8eb81030727f71951f8785f71c0a332ef58e790c
Summary:
There is a bug in efficient PnP that incorrectly weights points. This fixes it.
The test does not pass for the previous version with the bug.
Reviewed By: shapovalov
Differential Revision: D22449357
fbshipit-source-id: f5a22081e91d25681a6a783cce2f5c6be429ca6a
Summary: Conversion to/from the 6D representation of rotation from the paper http://arxiv.org/abs/1812.07035 ; based on David’s implementation.
Reviewed By: davnov134
Differential Revision: D22234397
fbshipit-source-id: 9e25ee93da7e3a2f2068cbe362cb5edc88649ce0
Summary: Update the transform step in the pointcloud rasterizer to use the `update_padded` method on `Pointclouds`. There was an inefficient step using `offset_points` which went via the packed represntation (and required unecessary additional memory). I think this was before the `update_padded` method was added to `Pointclouds`.
Reviewed By: gkioxari
Differential Revision: D22329166
fbshipit-source-id: 76db8a19654fb2f7807635d4f1c1729debdf3320
Summary:
The documentation of `Transform3d` highlights that the class handles points as well as normals. However, `transform_points` is applied to points and normals in the documentation instead of using `transform_normals` for normals, which I believe was intended.
This pull request fixes this typo in the documentation.
Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/233
Reviewed By: bottler
Differential Revision: D22287642
Pulled By: nikhilaravi
fbshipit-source-id: 0bc8754097b2e17a34fa3071319d00b78c3bc803
Summary: It's easier to understand code changes if we don't store the output in the notebooks. This is just a run of nbstripout on all the notebooks.
Reviewed By: nikhilaravi
Differential Revision: D22357375
fbshipit-source-id: bffdb426af2f676d448630d717658d609c224811
Summary:
Automatic run to suppress type errors.
#pyreupgrade
Differential Revision: D22369027
fbshipit-source-id: 2beb1a43e429a0850944a8849d416bedefd516ed
Summary: Added `sorted` argument to the `knn_points` function. This came up during the benchmarking against Faiss - sorting added extra memory usage. Match the memory usage of Faiss by making sorting optional.
Reviewed By: bottler, gkioxari
Differential Revision: D22329070
fbshipit-source-id: 0828ff9b48eefce99ce1f60089389f6885d03139
Summary:
Fix default setting of `max_faces_per_bin` and update mesh rasterization benchmark tests.
The previous setting of `max_faces_per_bin` was wrong and for larger mesh sizes and batch sizes it was causing a significant slow down due to an unecessarily large intermediate tensor being created.
Reviewed By: gkioxari
Differential Revision: D22301819
fbshipit-source-id: d5e817f5b917fb5633c9c6a8634b6c8ff65e3508
Summary:
Fixes the default setting of `max_points_per_bin` in `rasterize_points.py`. For large batches with large size pointclouds this was a causing the rasterizer to be very slow.
Expanded the pointcloud rendering benchmarks to include larger size pointclouds and fixed cuda synchronization issue in benchmark.
Reviewed By: gkioxari
Differential Revision: D22301185
fbshipit-source-id: 5077c1ba2c43d73efc1c659f0ec75959ceddf893
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Summary: Add ability to decode ply files which use types like int32.
Reviewed By: nikhilaravi
Differential Revision: D21639208
fbshipit-source-id: 0ede7d4aa353a6e940446680a18e7ac0c48fafee
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
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
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
Summary:
Make flat shading differentiable again
Currently test fails with P130944403 which looks weird.
Reviewed By: nikhilaravi
Differential Revision: D21567106
fbshipit-source-id: 65995b64739e08397b3d021b65625e3c377cd1a5
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
Summary: Use `self.__class__` when creating new instances, to slightly accommodate inheritance.
Reviewed By: nikhilaravi
Differential Revision: D21504476
fbshipit-source-id: b4600d15462fc1985da95a4cf761c7d794cfb0bb
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
Summary: Fix to enable a mesh/point rasterizer to be initialized without having to specify the camera.
Reviewed By: jcjohnson, gkioxari
Differential Revision: D21362359
fbshipit-source-id: 4f84ea18ad9f179c7b7c2289ebf9422a2f5e26de
Summary: This has been failing intermittently
Reviewed By: nikhilaravi
Differential Revision: D21403157
fbshipit-source-id: 51b74d6c813b52effe72d14b565e250fcabbb463
Summary:
Ran the linter.
TODO: need to update the linter as per D21353065.
Reviewed By: bottler
Differential Revision: D21362270
fbshipit-source-id: ad0e781de0a29f565ad25c43bc94a19b1828c020