Summary: Adding collate_batched_meshes for datasets.utils: takes in a list of dictionaries and merge them into one dictionary (while adding a merged mesh to the dictionary).
Reviewed By: nikhilaravi
Differential Revision: D22180404
fbshipit-source-id: f811f9a140f09638f355ad5739bffa6ee415819f
Summary: Additional functionality for renderer in ShapeNetCore: users can select which objects to render by specifying their model_ids, or users could choose to render several random objects in some categories, or users could specify indices of the objects in the loaded dataset. (currently doesn't support changing lighting, still investigating why lighting is causing instability in renderings)
Reviewed By: nikhilaravi
Differential Revision: D22179594
fbshipit-source-id: 74c49094ffa3ea2eb71de9451f9e5da5053d356d
Summary: Adding a renderer to ShapeNetCore (Note that the lights are currently turned off for the test; will investigate why lighting causes instability in rendering)
Reviewed By: nikhilaravi
Differential Revision: D22102673
fbshipit-source-id: a704756a1e93b61d5a879f0e5ee14ebcb0df49d7
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