601 Commits

Author SHA1 Message Date
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
Nikhila Ravi
3b035f57f0 Update README with contributors and new tutorials
Summary:
Updated the README with:
- Contributor list
- News updates
- New tutorial links

Reviewed By: gkioxari

Differential Revision: D24412028

fbshipit-source-id: 0c4ba9ebe16a7a4728801356a9271ff152282686
2020-10-30 10:31:50 -07:00
Dave Schnizlein
36fb257ef1 Update cameras to accept projection matrix as input
Summary: To initialize the Cameras class currently we require the principal point, focal length and other parameters to be specified from which we calculate the intrinsic matrix. In some cases the matrix might be directly available e.g. from a dataset and the associated metadata for an image.

Reviewed By: nikhilaravi

Differential Revision: D24489509

fbshipit-source-id: 1b411f19c5f6c8074bcfbf613f3339d5e242c119
2020-10-30 08:53:14 -07:00
Jeremy Reizenstein
6f4697bc1b pytorch 1.7 support
Summary: CircleCI build configuration to support pytorch1.7, including binaries with cuda 11.0. Note that the default torch on pip is still on cuda 10.2, so I have left the `main` (non conda build) on cuda 10.2 with the existing driver.

Reviewed By: gkioxari

Differential Revision: D24623523

fbshipit-source-id: 59cfa1be06c16225f0f12ed336c07220e8a9a511
2020-10-29 12:20:54 -07:00
Jeremy Reizenstein
fdcf368708 import vis parts separately
Summary: We envision `pytorch3d.vis` to contain submodules with different dependencies. Allow (and require) them to be imported independently.

Reviewed By: theschnitz

Differential Revision: D24622519

fbshipit-source-id: 44840f70f5fd2bd410405bf09546024e48238744
2020-10-29 10:16:43 -07:00
Jeremy Reizenstein
0e5f4f7660 remove texture_vis test
Summary: This recently added test is sensitive to the version of PIL because of different algorithms to draw ellipses/circles. Remove it as there is no obvious safe way to test this. Replace with a test for the underlying centres_for_image().

Reviewed By: theschnitz

Differential Revision: D24622465

fbshipit-source-id: e46d7384df491c71ac87ba8bbbce89507ac40080
2020-10-29 10:16:42 -07:00
Jeremy Reizenstein
aa4cc0adbc images for debugging TexturesUV
Summary: New methods to directly plot a TexturesUV map with its used points, using PIL and matplotlib.

Reviewed By: gkioxari

Differential Revision: D23782968

fbshipit-source-id: 692970857b5be13a35a3175dc82ac03963a73555
2020-10-27 10:10:05 -07:00
Jeremy Reizenstein
b149bbfb3c script to run tutorials
Summary: Script to execute tutorials inside docker with the nightly build.

Reviewed By: nikhilaravi

Differential Revision: D24503200

fbshipit-source-id: cfa010a7750627d4e87d224a112ff77952feeb55
2020-10-26 11:30:06 -07:00
Amitav Baruah
2084160b16 Remove duplicate imports in DensePose tutorial
Summary: We were importing torch, torchvision, PyTorch3D, and sys twice. This is just removing the duplicate (unneeded) imports

Reviewed By: theschnitz

Differential Revision: D24479270

fbshipit-source-id: 1048732f65242eb776c3eef537cb1ae58815c1eb
2020-10-22 12:10:40 -07:00
Shubham Jain
4d8f132a78 Texture UV Documentation Correction (#409)
Summary: Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/409

Reviewed By: bottler

Differential Revision: D24478451

Pulled By: nikhilaravi

fbshipit-source-id: 933d6f7a02a3118ee30ecda045fd9f62a7df1176
2020-10-22 11:39:47 -07:00
gmanasi
e7d7fad1e8 Update LICENSE name to BSD 3-Clause License. (#310)
Summary:
The README for the project refers to the BSD 3-Clause License, but the License file has only BSD License as the name. Updated the License name to BSD 3-Clause License for correct reference.

License files are an important part of source code and should not have errors. This helps developers to correctly reference the license when integrating the source code within their applications.

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

Reviewed By: theschnitz

Differential Revision: D24220599

Pulled By: nikhilaravi

fbshipit-source-id: 657bde0abe946e95864fc048eb930a91ddf08b99
2020-10-22 08:59:59 -07:00
Jeremy Reizenstein
7e986cfba8 Avoid torch.square
Summary: Fix axis_angle conversions where I used torch.square which doesn't work with pytorch 1.4

Reviewed By: nikhilaravi

Differential Revision: D24451546

fbshipit-source-id: ba26f7dad5fa991f0a8f7d3d09ee7151163aecf4
2020-10-22 02:23:05 -07:00
Jeremy Reizenstein
c93c4dd7b2 axis_angle representation of rotations
Summary: We can represent a rotation as a vector in the axis direction, whose length is the rotation anticlockwise in radians around that axis.

Reviewed By: gkioxari

Differential Revision: D24306293

fbshipit-source-id: 2e0f138eda8329f6cceff600a6e5f17a00e4deb7
2020-10-21 06:23:28 -07:00
Amitav Baruah
005a334f99 Render PyTorch3d cameras in plotly
Summary: Take in a renderer with camera(s) and render the cameras as wireframes in the corresponding plotly plots

Reviewed By: nikhilaravi

Differential Revision: D24151706

fbshipit-source-id: f8e86d61f3d991500bafc0533738c79b96bda630
2020-10-20 17:16:17 -07:00
Amitav Baruah
035109675e Render plotly plot from PyTorch3D renderer POV
Summary:
Use a provided renderer's camera positions to render a plotly plot to match what the renderer would render for pointclouds and meshes.
- takes in a Cameras object for viewpoints
- for each subplot, will index into the Cameras object (or use the Cameras object, if len(viewpoint_cameras) == 1 and use the Cameras' eye and at vectors to set plotly's camera's corresponding values, the eye and center values.

Reviewed By: nikhilaravi

Differential Revision: D24094934

fbshipit-source-id: 48abcdb04c6909a172ba9f721522c3446952a089
2020-10-20 17:16:17 -07:00
Amitav Baruah
3d1863ce6f Update tutorials to reflect plotly refactor
Summary: Change the two affected tutorials to use plot_scene and plot_batch_individually.

Reviewed By: nikhilaravi

Differential Revision: D24235480

fbshipit-source-id: ca9d73bfb7ccf733efaf16299c15927406d7f2aa
2020-10-20 17:16:17 -07:00
Amitav Baruah
bf7aca320a Add wrapper function to plot batches
Summary:
- adds plot_batch_individually
- for each batched object, plots each object in its own subplot with other same-indexed elements of the other batched objects provided as input

Reviewed By: nikhilaravi

Differential Revision: D24258389

fbshipit-source-id: a80128e6e7a03a44c257b0598569159afadb2d39
2020-10-20 17:16:17 -07:00
Amitav Baruah
964893cdcb Refactor plot_meshes and plot_pointclouds to one generalizable API, plot_scene
Summary: Defines a function plot_scene that takes in a dictionary defining subplot and trace layouts for Mesh/Pointcloud objects and plots them. Also supports other plotly axis arguments and mesh lighting. Plot_batch_individually is a wrapper function that takes in one or multiple batched Meshes/Pointclouds and uses plot_scene to plot each element within a batch in an individual subplot, possibly sharing that subplot with traces of other individual elements of the other batched structures passed in.

Reviewed By: nikhilaravi

Differential Revision: D24235479

fbshipit-source-id: 9f669f1b186d55fe5c75552083316c0cf1387472
2020-10-20 17:16:17 -07:00
Jeremy Reizenstein
abd390319c Reshape for faces_packed_to_edges_packed
Summary:
As pointed out in #328, we had an indexing operation where a reshape would do and be faster. The resulting faces_packed_to_edges_packed is no longer contiguous.

Also fix a use of faces_packed_to_edges_packed which might modify the object unintentionally.

Reviewed By: theschnitz

Differential Revision: D24390292

fbshipit-source-id: 225677d8fcc1d6b76efad7706718ecdb5182ffe1
2020-10-20 13:47:48 -07:00
Nikhila Ravi
4cfac7c79c Add images for new tutorials
Summary: Added images for four tutorials to add to the README.

Reviewed By: gkioxari

Differential Revision: D24411993

fbshipit-source-id: 5f0b2256efb156b5956013c26b8ddb1631bd1c46
2020-10-20 09:14:11 -07:00
Jeremy Reizenstein
30e4e891db linter comment strictnesss
Summary: The linter has become stricter about the indenting of comments and docstrings. This was accompanied by a codemod. In a few places we can fix the problem nicer than the codemod has.

Reviewed By: gkioxari

Differential Revision: D24363880

fbshipit-source-id: 4cff3bbe3d2a834bc92a490469a2b24fa376e6ab
2020-10-18 02:38:59 -07:00
Nikhila Ravi
563d441b00 multigpu mesh rendering fixes
Summary:
Small fix and updated tests for multigpu rendering case.

This resolves the issue seen in: https://github.com/facebookresearch/pytorch3d/issues/401

Reviewed By: gkioxari

Differential Revision: D24314681

fbshipit-source-id: 84c5a5359844c77518b48044001daa9a86f3c43a
2020-10-16 09:01:52 -07:00
Jeremy Reizenstein
4d52f9fb8b matrix_to_quaternion corner case
Summary: Issue #119. The function `sqrt(max(x, 0))` is not convex and has infinite gradient at 0, but 0 is a subgradient at 0. Here we implement it in such a way as to give 0 as the gradient.

Reviewed By: gkioxari

Differential Revision: D24306294

fbshipit-source-id: 48d136faca083babad4d64970be7ea522dbe9e09
2020-10-15 03:21:40 -07:00
John Reese
2d39723610 apply black 20.8b1 formatting update
Summary:
allow-large-files

black_any_style

Reviewed By: zertosh

Differential Revision: D24325133

fbshipit-source-id: b4afe80d1e8b2bc993f4b8e3822c02964df47462
2020-10-14 20:22:09 -07:00
Albhox
11a9f5ea30 typos (#386)
Summary: Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/386

Reviewed By: gkioxari

Differential Revision: D24220501

Pulled By: nikhilaravi

fbshipit-source-id: 5bb0014b46a89fde52c9aaccba0e3ba6d485430f
2020-10-12 09:52:18 -07:00
Jeremy Reizenstein
8a9d20151d Avoid contextlib.nullcontext for Python 3.6 compatibility
Summary: As mentioned in a comment on https://github.com/facebookresearch/pytorch3d/issues/77, we can't use this function in Python 3.6. It's easy to write our own version.

Reviewed By: gkioxari

Differential Revision: D24249915

fbshipit-source-id: 4c70a3efb03daa115041d082e616511297eab8fa
2020-10-12 09:47:44 -07:00
Nikhila Ravi
f5383a7e5a Fix texture atlas for objs which only have material properties
Summary:
Fix for GitHub issue #381.

The example mesh provided in the issue only had material properties but no texture image. The current implementation of texture atlassing generated an atlas using both the material properties and the texture image but only worked if there was a texture image and associated vertex uv coordinates. I have now modified the texture atlas creation so that it doesn't require an image and can work with materials which only have material properties.

Reviewed By: gkioxari

Differential Revision: D24153068

fbshipit-source-id: 63e9d325db09a84b336b83369d5342ce588a9932
2020-10-07 12:54:01 -07:00
Amitav Baruah
5d65a0cf8c Rename visualization to vis
Summary: Importing from pytorch3d.visualization is wordy, so shortened the path to the vis module and updated the relevant imports.

Reviewed By: nikhilaravi

Differential Revision: D24116527

fbshipit-source-id: e0e4da7d48c5afedec07482d7be43362b6822445
2020-10-06 15:55:05 -07:00
Georgia Gkioxari
e651a4299c add texture vertex sampling functionality to textures
Summary: Enhance every texture type with `faces_verts_textures_packed` that allows users to query the texture of each vertex in mesh

Reviewed By: nikhilaravi

Differential Revision: D24058778

fbshipit-source-id: 19d0e3a244fa96aae462c47bf52e07dfd3b7c6f0
2020-10-06 10:44:33 -07:00
Georgia Gkioxari
327bd2b976 extend sample_points_from_meshes with texture
Summary:
Enhanced `sample_points_from_meshes` with texture sampling

* This new feature is used to return textures corresponding to the sampled points in `sample_points_from_meshes`

Reviewed By: nikhilaravi

Differential Revision: D24031525

fbshipit-source-id: 8e5d8f784cc38aa391aa8e84e54423bd9fad7ad1
2020-10-06 09:17:58 -07:00
Amitav Baruah
5c9485c7be Add note explaining plotly visualizations
Summary: Add markdown note explaining why PyTorch3D has plotly visualizations, examples, and how to save these visualizations as an image.

Reviewed By: nikhilaravi

Differential Revision: D23976283

fbshipit-source-id: cbbaffd1f0ebe3466841e42fdb454d85773152cd
2020-10-01 16:49:19 -07:00
Amitav Baruah
a03fd7320f Add plotly visualization examples
Summary: Add examples of using the Plotly visualization functions to the corresponding tutorial notebooks.

Reviewed By: nikhilaravi

Differential Revision: D23879109

fbshipit-source-id: ea8c45aa6c828eb2f6ea2ae1c8846adc486f92e0
2020-10-01 16:49:19 -07:00
Amitav Baruah
8f1e9e1f06 Plotly figure for visualizing pointclouds
Summary:
Visualize a pointcloud in plotly.
- customize lighting and light position
- customizable axis arguments
- customizable height and width of plotly figure
- render batches in subplots or the same plot

Reviewed By: nikhilaravi

Differential Revision: D23872391

fbshipit-source-id: 9b1e1fd417500521be9d0eb85d71c77a538fa77c
2020-10-01 16:49:19 -07:00
Amitav Baruah
8b6310359f plotly figure for visualizing a mesh
Summary:
Visualize a mesh in a plotly figure.
- customize lighting and light position
- customizable axis arguments (x, y, z)
- customizable height and width of plotly figure
- render batches of meshes in subplots or in a singular plot

Reviewed By: nikhilaravi

Differential Revision: D22611960

fbshipit-source-id: 5dc5c55e599d5b0d9c38f22e156c662654099e11
2020-10-01 16:49:19 -07:00
Patrick Labatut
8219a52ccc Fix a few linting warnings
Summary: Fix a few linting warnings

Reviewed By: nikhilaravi

Differential Revision: D20720810

fbshipit-source-id: c5b6a25fdd7971cc8743b54bbe162464a874071d
2020-10-01 02:39:27 -07:00
Eduardo Henrique Arnold
4f8a2f1979 Fixing look_at_view_transform documentation, azim angle definition was incorrect (#251)
Summary:
…between the projection on the y=0 plane and reference vector (0,0,1).

Fixes https://github.com/facebookresearch/pytorch3d/issues/229

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

Reviewed By: gkioxari

Differential Revision: D23967073

Pulled By: nikhilaravi

fbshipit-source-id: fb6f10d4b7f5e319d17e28b4316837205b637f5e
2020-09-29 09:47:09 -07:00
generatedunixname89002005307016
d902a96ca2 suppress errors in vision - batch 1
Differential Revision: D23970214

fbshipit-source-id: b6a328f53178304b36556b5cf96584467a7d2ce4
2020-09-28 13:33:20 -07:00
Nikhila Ravi
e5ac38aa87 fix docs for FOVPerspectiveCamera
Summary: Small documentation fix for FOVPerspectiveCamera. The error pointed out in the GitHub issue was due to the docs referring to the OpenGL z parameterization from [-1, 1] whereas we use the [0, 1] range.

Reviewed By: gkioxari

Differential Revision: D23857312

fbshipit-source-id: 2d20677ec614c935e76f67e100a41a23df708d59
2020-09-23 17:28:15 -07:00