838 Commits

Author SHA1 Message Date
David Novotny
1e4a2e8624 __getitem__ for Transform3D
Summary: Implements the `__getitem__` method for `Transform3D`

Reviewed By: nikhilaravi

Differential Revision: D23813975

fbshipit-source-id: 5da752ed8ea029ad0af58bb7a7856f0995519b7a
2021-01-05 03:39:24 -08:00
generatedunixname89002005307016
ac3f8dc833 suppress errors in vision/fair/pytorch3d
Differential Revision: D25777275

fbshipit-source-id: ca30fedca118ff22a8be5e29c4c4f21628c94579
2021-01-04 23:09:43 -08:00
David Novotny
b4dea43963 Support for multi-dimensional list_to_padded/padded_to_list.
Summary: Extends `list_to_padded`/`padded_to_list` to work for tensors with an arbitrary number of input dimensions.

Reviewed By: nikhilaravi, gkioxari

Differential Revision: D23813969

fbshipit-source-id: 52c212a2ecdb3c4dfb6ac47217715e07998f37f1
2021-01-04 09:42:52 -08:00
Jeremy Reizenstein
0ba55a83ad fix conda channel in tests
Summary: Now we use iopath, we need to find it from its own channel.

Reviewed By: nikhilaravi

Differential Revision: D25710499

fbshipit-source-id: 1c67eb6d5b009d35b65a3acd3ebff6e0e45fecc4
2020-12-27 13:14:42 -08:00
generatedunixname89002005307016
fc58acb2d4 suppress errors in vision/fair/pytorch3d
Differential Revision: D25702902

fbshipit-source-id: f0d6708ba917df85b575dfc5525c902b2cab7ea0
2020-12-24 11:24:28 -08:00
Jeremy Reizenstein
25c065e9da PathManager passing
Summary:
Make no internal functions inside pytorch3d/io interpret str paths except using a PathManager from iopath which they have been given. This means we no longer use any global PathManager object and we no longer use fvcore's deprecated file_io.

To preserve the APIs, various top level functions create their own default-initialized PathManager object if they are not provided one.

Reviewed By: theschnitz

Differential Revision: D25372969

fbshipit-source-id: c176ee31439645fa54a157d6f1aef18b09501569
2020-12-24 10:16:03 -08:00
Jeremy Reizenstein
b95621573b lint
Summary: Allowing usort, isort and black to coexist without fighting means we can't have imports commented as deprecated from the same module as other imports.

Reviewed By: nikhilaravi

Differential Revision: D25372970

fbshipit-source-id: 637f5a0025c0df9fbec47cba73ce5387f4f8b467
2020-12-24 10:16:03 -08:00
Jeremy Reizenstein
513a6476bc iopath dependency
Summary: Add ioPath as a dependency of PyTorch3D in preparation for using the new PathManager.

Reviewed By: nikhilaravi

Differential Revision: D25372971

fbshipit-source-id: d8aa661d2de975e747dd494edc42bf843990cf68
2020-12-24 10:16:03 -08:00
Jeremy Reizenstein
0a309ec6c7 requirements for readthedocs
Summary: Use a more recent PyTorch to build the documentation.

Reviewed By: nikhilaravi

Differential Revision: D25679756

fbshipit-source-id: 83d647f709337110d39886eaa6aad2565d740c6d
2020-12-22 08:53:36 -08:00
Christoph Lassner
caa3371376 Fix Pulsar backend batched radius handling.
Summary: This fixes a corner case for multi-radius handling for the pulsar backend. The additional dimensionality check ensures that the batched parsing for radiuses is only performed when appropriate.

Reviewed By: bottler

Differential Revision: D25387708

fbshipit-source-id: c486dcf327f812265b7ca8ca5ef5c6a31e6d4549
2020-12-21 13:02:25 -08:00
Nikhila Ravi
ebac66daeb Classic Marching Cubes algorithm implementation
Summary:
Defines a function to run marching cubes algorithm on a single or batch of 3D scalar fields. Returns a mesh's faces and vertices.

UPDATES (12/18)
- Input data is now specified as a (B, D, H, W) tensor as opposed to a (B, W, H, D) tensor. This will now be compatible with the Volumes datastructure.
- Add an option to return output vertices in local coordinates instead of world coordinates.
Also added a small fix to remove the dype for device in Transforms3D - if passing in a torch.device instead of str it causes a pyre error.

Reviewed By: jcjohnson

Differential Revision: D24599019

fbshipit-source-id: 90554a200319fed8736a12371cc349e7108aacd0
2020-12-18 07:25:50 -08:00
Foo Guo Wei
9c6b58c5ad Expose axis-angle/quaternion conversion functions in transforms package (#486)
Summary:
Fixes https://github.com/facebookresearch/pytorch3d/issues/484

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/486

Reviewed By: bottler

Differential Revision: D25620407

Pulled By: nikhilaravi

fbshipit-source-id: 9a29e4e717aebcca46e46ff5e7bb80a183a92836
2020-12-18 05:18:48 -08:00
Nikhila Ravi
01759d8ffb Texture Atlas sampling bug fix
Summary: Fixes the index out of bound errors for texture sampling from a texture atlas: when barycentric coordinates are 1.0, the integer index into the (R, R) per face texture map is R (max can only be R-1).

Reviewed By: gkioxari

Differential Revision: D25543803

fbshipit-source-id: 82d0935b981352b49c1d95d5a17f9cc88bad0a82
2020-12-17 04:10:56 -08:00
Nikhila Ravi
3d769a66cb Non Square image rasterization for pointclouds
Summary:
Similar to non square image rasterization for meshes, apply the same updates to the pointcloud rasterizer.

Main API Change:
- PointRasterizationSettings now accepts a tuple/list of (H, W) for the image size.

Reviewed By: jcjohnson

Differential Revision: D25465206

fbshipit-source-id: 7370d83c431af1b972158cecae19d82364623380
2020-12-15 14:15:32 -08:00
Evgeniy Zheltonozhskiy
569e5229a9 Add check for verts and faces being on same device and also checks for pointclouds/features/normals being on the same device (#384)
Summary: Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/384

Test Plan: `test_meshes` and `test_points`

Reviewed By: gkioxari

Differential Revision: D24730524

Pulled By: nikhilaravi

fbshipit-source-id: acbd35be5d9f1b13b4d56f3db14f6e8c2c0f7596
2020-12-14 16:18:19 -08:00
Nikhila Ravi
19340462e4 Return self in the to method for the renderer classes
Summary: Add `return self` to the `to` function for the renderer classes.

Reviewed By: bottler

Differential Revision: D25534487

fbshipit-source-id: e8dbd35524f0bd40e835439e93184b5a1f1532ca
2020-12-14 15:28:04 -08:00
Evgeniy Zheltonozhskiy
831e64efb0 Pass epsilon value properly to the transformation (#418)
Summary:
As for now, epsilon value is ignored, since `kwargs` are passed to constructor only

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/418

Reviewed By: gkioxari

Differential Revision: D24730500

Pulled By: nikhilaravi

fbshipit-source-id: 7cce820dbe14f8c74d3df4f18c45d50e228c6a45
2020-12-14 15:25:32 -08:00
Elie Michel
f248bfc415 Two minor fixes in doc and tutorial (#254)
Summary:
`INSTALL.md` On Windows, pip install from git does not work with single quotes. I replace them with double quote as those should work for any OS.

`camera_position_optimization_with_differentiable_rendering.ipynb` To extract the silhouette from the reference image, we need to reject white values, not black values, because the background of the ref is white:
![ref](https://user-images.githubusercontent.com/5802849/86496925-b72e9100-bd7f-11ea-9f61-72abb3efe1b5.png)

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/254

Reviewed By: gkioxari

Differential Revision: D23798508

Pulled By: nikhilaravi

fbshipit-source-id: 1fbec291c48c367539a8a4fea389a109aab49e3d
2020-12-14 12:36:01 -08:00
Jeremy Reizenstein
16a0be790b nightlies with pytorch 1.7.1
Summary: Add nightly linux conda builds with the new pytorch 1.7.1. This supports python 3.9.

Reviewed By: nikhilaravi

Differential Revision: D25532757

fbshipit-source-id: b734637063e148389951899450566275f3cf5831
2020-12-14 08:35:06 -08:00
generatedunixname89002005307016
1b82388ab8 suppress errors in vision - batch 1
Differential Revision: D25497975

fbshipit-source-id: 9f7aa8d1dd31fa62a428321394d8c97b2d9d937d
2020-12-11 12:46:33 -08:00
Jeremy Reizenstein
d6412c94dc CUB conda instructions
Summary: We have already uploaded a conda package of the cub 1.10.0 sources to our channel on anaconda. Here is the code we used.

Reviewed By: nikhilaravi

Differential Revision: D25395358

fbshipit-source-id: b58fd473fcafd425c98c9d7a7c32574f651383a0
2020-12-10 09:47:56 -08:00
Nikhila Ravi
d07307a451 Non square image rasterization for meshes
Summary:
There are a couple of options for supporting non square images:
1) NDC stays at [-1, 1] in both directions with the distance calculations all modified by (W/H). There are a lot of distance based calculations (e.g. triangle areas for barycentric coordinates etc) so this requires changes in many places.
2) NDC is scaled by (W/H) so the smallest side has [-1, 1]. In this case none of the distance calculations need to be updated and only the pixel to NDC calculation needs to be modified.

I decided to go with option 2 after trying option 1!

API Changes:
- Image size can now be specified optionally as a tuple

TODO:
- add a benchmark test for the non square case.

Reviewed By: jcjohnson

Differential Revision: D24404975

fbshipit-source-id: 545efb67c822d748ec35999b35762bce58db2cf4
2020-12-09 09:18:11 -08:00
Jeremy Reizenstein
0216e4689a Slow pull from docker
Summary: The "manual" docker pull in the testrun builds has been taking more than 10 minutes recently, and its lack of output causes circleci to timeout. As a quick fix, we enable the output from this operation.

Reviewed By: gkioxari

Differential Revision: D25305127

fbshipit-source-id: 19682bfa0294145457a37df6d6faf7a08dcc63c9
2020-12-03 12:34:17 -08:00
generatedunixname89002005287564
a0cd2506f6 Daily arc lint --take BLACK
Reviewed By: zertosh

Differential Revision: D25241045

fbshipit-source-id: c3a1e1e02ef557b1e82cb672e987e05016e246fd
2020-12-01 04:19:28 -08:00
Georgia Gkioxari
112959e087 taubin smoothing
Summary: Taubin Smoothing for filtering meshes and making them smoother. Taubin smoothing is an iterative approach.

Reviewed By: nikhilaravi

Differential Revision: D24751149

fbshipit-source-id: fb779e955f1a1f6750e704f1b4c6dfa37aebac1a
2020-11-30 11:38:04 -08:00
Amitav Baruah
fc7a4cacc3 Fix plotly pointcloud visualization feature bug
Summary: If a pointcloud had less than pointcloud_max_points, the colors would not render. This diff fixes that.

Reviewed By: bottler

Differential Revision: D25099044

fbshipit-source-id: 47c3ddcdb4e06284b0a7966ffca1b973f394921f
2020-11-19 13:52:46 -08:00
Amitav Baruah
6c2fc685de Update subplot arrangement to support non-uniform grids
Summary: Previously, grids where the columns don't divide the number of plots evenly would error. Now, there'll just be a sparse last row.

Reviewed By: bottler

Differential Revision: D25069236

fbshipit-source-id: 9d2fd62f3d39bfebc07ce0a41718621fa69d6057
2020-11-18 15:47:01 -08:00
Georgia Gkioxari
5fb63b4520 move icp_data.pth to tests/data
Summary: Move icp_data.pth to tests/data

Reviewed By: bottler

Differential Revision: D25012575

fbshipit-source-id: 9252d2eeca9141c82ad3bf9d3e3331a2eab5203b
2020-11-18 14:07:12 -08:00
Nikhila Ravi
ddb0b1b652 small update to website generation script
Summary: Small fix in website generation script.

Reviewed By: bottler

Differential Revision: D24893286

fbshipit-source-id: 5afbe05d749914788917a3834cf32e2f48bb4765
2020-11-11 16:50:34 -08:00
Christoph Lassner
faed5405c8 Fix #442.
Summary: This fixed #442 by declaring two math functions to be device-only.

Reviewed By: bottler

Differential Revision: D24896992

fbshipit-source-id: a15918d06d2a3e6ee5cf250fec7af5f2f50a6164
2020-11-11 14:06:21 -08:00
Jeremy Reizenstein
18ce14cd31 version number for 0.3.0
Reviewed By: nikhilaravi

Differential Revision: D24390049

fbshipit-source-id: d86ba8dd933bce18e65ae71b3ea42426838b8fc2
v0.3.0
2020-11-11 10:05:53 -08:00
Nikhila Ravi
5059be2a83 website and README updates
Summary: Small updates to the website setup before the website is updated

Reviewed By: bottler

Differential Revision: D24880351

fbshipit-source-id: 5c40664ad1ca3dd9f4fc746b239a82d47ed3a8e6
2020-11-11 09:45:06 -08:00
John Reese
90f1d5c258 apply pyfmt with usort to opted-in sources
Reviewed By: zertosh

Differential Revision: D24880203

fbshipit-source-id: 2034cdfc2712209e86d3d05c119c58f979b05c52
2020-11-10 21:27:01 -08:00
Jeremy Reizenstein
4296fd96c5 curl needs -L
Summary: As mentioned in a comment on https://github.com/facebookresearch/pytorch3d/issues/438, curl must be told to follow redirects.

Reviewed By: nikhilaravi

Differential Revision: D24870138

fbshipit-source-id: 0c8aeb5146f8699bcea03d4108276fc24e9eab6b
2020-11-10 16:35:42 -08:00
Jeremy Reizenstein
47fafe2cce Remove installation instructions from tutorial website.
Summary: Now installation is a bit complicated, remove this instruction from the website and redirect to the notebooks themselves.

Reviewed By: nikhilaravi

Differential Revision: D24860588

fbshipit-source-id: 3bf1af3cdb69b564492fb01a5a5ba40203f3858e
2020-11-10 13:06:08 -08:00
Jeremy Reizenstein
de7af4a704 CUB when installing inside tutorials
Summary:
We now require CUB for building, here we make the tutorials include it.

Also make the installation cell do nothing if it has already succeeded.

I use curl not wget, and `os.environ` to set the variables not shell methods, because they are more likely to work on Windows.

Reviewed By: nikhilaravi

Differential Revision: D24860574

fbshipit-source-id: 5be86af15e53f8db016ee0e96fb43153bd69adbc
2020-11-10 13:06:08 -08:00
Christoph Lassner
fb2763dc78 Fix flaky CircleCI test.
Summary: This fixes issues with `pulsar.test.TestDepth` that we are encountering on CircleCI. The ID equality test is removed, which seems to give different results on different hardware (which is okay, because the exact order of spheres can slightly vary if they're close due to numerical instabilities). The depth map validity test stays in place.

Reviewed By: bottler

Differential Revision: D24840776

fbshipit-source-id: 2f38ea4880abf202c84d2987fdd71a84c5ef3b05
2020-11-10 10:14:17 -08:00
Jeremy Reizenstein
aefe2b9f0d CUB installation instructions
Summary: Make it easy to have CUB available for building

Reviewed By: nikhilaravi

Differential Revision: D24773722

fbshipit-source-id: 8759bef6ded4989088189685b2a615c97e5f8b99
2020-11-10 09:38:05 -08:00
Jeremy Reizenstein
d220ee2f66 pulsar build and CI changes
Summary:
Changes to CI and some minor fixes now that pulsar is part of pytorch3d. Most significantly, add CUB to CI builds.

Make CUB_HOME override the CUB already in cudatoolkit (important for cuda11.0 which uses cub 1.9.9 which pulsar doesn't work well with.
Make imageio available for testing.
Lint fixes.
Fix some test verbosity.
Avoid use of atomicAdd_block on older GPUs.

Reviewed By: nikhilaravi, classner

Differential Revision: D24773716

fbshipit-source-id: 2428356bb2e62735f2bc0c15cbe4cff35b1b24b8
2020-11-10 09:38:05 -08:00
Dave Schnizlein
804235b05a Remove point mesh edge kernels
Summary:
Removes the now-unnecessary kernels from point mesh edge file

Migrates all point mesh functionality into one file.

Reviewed By: gkioxari

Differential Revision: D24550086

fbshipit-source-id: f924996cd38a7c2c1cf189d8a01611de4506cfa3
2020-11-10 09:34:16 -08:00
Dave Schnizlein
8dcfe30f66 Consolidate mesh backward kernels
Summary: This diff creates the generic MeshBackwardKernel which can handle distance calculations between point, edge and faces in either direction. Replaces only point_mesh_face code for now.

Reviewed By: gkioxari

Differential Revision: D24549374

fbshipit-source-id: 2853c1da1c2a6b6de8d0e40007ba0735b8959044
2020-11-10 09:34:16 -08:00
Dave Schnizlein
c41aff23f0 Consolidate point mesh forward kernels
Summary: This diff creates the generic MeshForwardKernel which can handle distance calculations between point, edge and faces in either direction. Replaces only point_mesh_face code for now.

Reviewed By: gkioxari

Differential Revision: D24543316

fbshipit-source-id: 302707d7cec2d77a899738adf40481035c240da8
2020-11-10 09:34:16 -08:00
Christoph Lassner
194b29fb6c Fix #431.
Summary: Added missing include for cstdint for Windows and removed problematic inline assembly.

Reviewed By: bottler

Differential Revision: D24838053

fbshipit-source-id: 95496be841c2c22a82068073d4740e98ee8a02ac
2020-11-09 13:25:09 -08:00
Dave Schnizlein
83fef0a576 Add MeshRendererWithFragments class to also return fragments after rendering
Summary: Users want to be able to obtain the depth from the renderer. Current work-around requires running the rasterizer and extra time. This change creates a new renderer class that also returns the fragments from the rasterizer.

Reviewed By: nikhilaravi

Differential Revision: D24432381

fbshipit-source-id: 6552e8a6bfee646791afb34bdb7452fbc4094aed
2020-11-05 09:20:01 -08:00
Christoph Lassner
b6be3b95fb Example and test updates.
Summary: This commit performs pulsar example and test refinements. The examples are fully adjusted to adhere to PEP style guide and additional comments are added.

Reviewed By: nikhilaravi

Differential Revision: D24723391

fbshipit-source-id: 6d289006f080140159731e7f3a8c98b582164f1a
2020-11-04 09:54:17 -08:00
Jeremy Reizenstein
e9a26f263a Restrict import of ops from Pointclouds
Summary: Move to a local import for calculating pointcloud normals, similar to _compute_face_areas_normals on Meshes.

Reviewed By: theschnitz

Differential Revision: D24695260

fbshipit-source-id: 9e1eb5d15017975b8c4f4175690cc3654f38d9a4
2020-11-04 04:00:25 -08:00
Christoph Lassner
039e02601d examples and docs.
Summary: This diff updates the documentation and tutorials with information about the new pulsar backend. For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder docs/examples.

Reviewed By: nikhilaravi

Differential Revision: D24498129

fbshipit-source-id: e312b0169a72b13590df6e4db36bfe6190d742f9
2020-11-03 13:06:35 -08:00
Christoph Lassner
960fd6d8b6 pulsar interface unification.
Summary:
This diff builds on top of the `pulsar integration` diff to provide a unified interface for the existing PyTorch3D point renderer and Pulsar. For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder docs/examples.

The unified interfaces are completely consistent. Switching the render backend is as easy as using `renderer = PulsarPointsRenderer(rasterizer=rasterizer).to(device)` instead of `renderer = PointsRenderer(rasterizer=rasterizer, compositor=compositor)` and adding the `gamma` parameter to the forward function. All PyTorch3D camera types are supported as far as possible; keyword arguments are properly forwarded to the camera. The `PerspectiveCamera` and `OrthographicCamera` require znear and zfar as additional parameters for the forward pass.

Reviewed By: nikhilaravi

Differential Revision: D21421443

fbshipit-source-id: 4aa0a83a419592d9a0bb5d62486a1cdea9d73ce6
2020-11-03 13:06:35 -08:00
Christoph Lassner
b19fe1de2f pulsar integration.
Summary:
This diff integrates the pulsar renderer source code into PyTorch3D as an alternative backend for the PyTorch3D point renderer. This diff is the first of a series of three diffs to complete that migration and focuses on the packaging and integration of the source code.

For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder `docs/examples`.

Tasks addressed in the following diffs:
* Add the PyTorch3D interface,
* Add notebook examples and documentation (or adapt the existing ones to feature both interfaces).

Reviewed By: nikhilaravi

Differential Revision: D23947736

fbshipit-source-id: a5e77b53e6750334db22aefa89b4c079cda1b443
2020-11-03 13:06:35 -08:00
Jeremy Reizenstein
d565032399 Docker authentication
Summary: To avoid docker's new ratelimiting, we sign in.

Reviewed By: theschnitz

Differential Revision: D24681688

fbshipit-source-id: 6bb1a86ee15a151758e8a2bdb081da280308ad0c
2020-11-02 11:30:07 -08:00