622 Commits

Author SHA1 Message Date
Jeremy Reizenstein
4d2c0600f6 update INSTALL.md for next release
Summary: New Python, new PyTorches.

Reviewed By: patricklabatut

Differential Revision: D29538175

fbshipit-source-id: f7086ef84a2993c760a1b1f668a3336e898c801e
2021-08-03 08:10:52 -07:00
Jeremy Reizenstein
5ecce83217 PyTorch 1.4 compat
Summary: Restore compatibility with PyTorch 1.4 and 1.5, and a few lint fixes.

Reviewed By: patricklabatut

Differential Revision: D30048115

fbshipit-source-id: ee05efa7c625f6079fb06a3cc23be93e48df9433
2021-08-03 08:10:52 -07:00
CodemodService Bot
55aaec4d83 Daily arc lint --take BLACK
Reviewed By: wynsmart

Differential Revision: D30065248

fbshipit-source-id: 600915ab43d3d6d4846f60f976391f9dc1d77d10
2021-08-03 04:34:21 -07:00
Georgia Gkioxari
0c32f094af NDC/screen cameras API fix, compatibility with renderer
Summary:
API fix for NDC/screen cameras and compatibility with PyTorch3D renderers.

With this new fix:
* Users can define cameras and `transform_points` under any coordinate system conventions. The transformation applies the camera K and RT to the input points, not regarding for PyTorch3D conventions. So this makes cameras completely independent from PyTorch3D renderer.

* Cameras can be defined either in NDC space or screen space. For existing ones, FoV cameras are in NDC space. Perspective/Orthographic can be defined in NDC or screen space.

* The interface with PyTorch3D renderers happens through `transform_points_ndc` which transforms points to the NDC space and assumes that input points are provided according to PyTorch3D conventions.

* Similarly, `transform_points_screen` transforms points to screen space and again assumes that input points are under PyTorch3D conventions.

* For Orthographic/Perspective cameras, if they are defined in screen space, the `get_ndc_camera_transform` allows points to be converted to NDC for use for the renderers.

Reviewed By: nikhilaravi

Differential Revision: D26932657

fbshipit-source-id: 1a964e3e7caa54d10c792cf39c4d527ba2fb2e79
2021-08-02 01:01:10 -07:00
Patrick Labatut
9a14f54e8b Fix circular import
Summary: This fixes a recently introduced circular import: the problem went unnoticed by having `pytorch3d.renderer` imported first...

Reviewed By: bottler

Differential Revision: D29686235

fbshipit-source-id: 4b9f2faecec2cc8347ee259cfc359dc9e4f67784
2021-07-30 03:06:15 -07:00
Yida Wang
5eec5e289e remove type error suppressions in nerf_data_module
Summary: Remove `pyre-fixme` and `pyre-ignore` and fix the type errors.

Reviewed By: kandluis

Differential Revision: D29899546

fbshipit-source-id: dc8314f314bbc8acc002b8dbf21013cf3bafe65d
2021-07-27 17:32:41 -07:00
Roman Shapovalov
e794d062e8 Improving RayBundle docstrings
Summary: This changes only documentation. We want to be explicit that ray directions are not normalised (nor assumed to be normalised) but their magnitude is used.

Reviewed By: nikhilaravi

Differential Revision: D29845210

fbshipit-source-id: b81fb3da13a42ad20e8721ed5271fd4f3d8f5acb
2021-07-23 09:33:17 -07:00
Jeremy Reizenstein
1872e0249c path_manager in obj_io
Summary: Use PathManager for checking file existence, rather than assuming the path is a local file, in a couple of cases.

Reviewed By: patricklabatut

Differential Revision: D29734621

fbshipit-source-id: e2236a7c2c50ba6916936a4d786abd601205b519
2021-07-19 05:44:20 -07:00
Jeremy Reizenstein
9e8d91ebf9 restore build tests
Summary: A bad env var check meant these tests were not being run. Fix that, and fix the copyright test for the new message format.

Reviewed By: patricklabatut

Differential Revision: D29734562

fbshipit-source-id: a1a9bb68901b09c71c7b4ff81a04083febca8d50
2021-07-19 05:44:20 -07:00
Alexey Sidnev
bcee361d04 Replace torch.det() with manual implementation for 3x3 matrix
Summary:
# Background
There is an unstable error during training (it can happen after several minutes or after several hours).
The error is connected to `torch.det()` function in  `_check_valid_rotation_matrix()`.

if I remove the function `torch.det()` in `_check_valid_rotation_matrix()` or remove the whole functions `_check_valid_rotation_matrix()` the error is disappeared (D29555876).

# Solution
Replace `torch.det()` with manual implementation for 3x3 matrix.

Reviewed By: patricklabatut

Differential Revision: D29655924

fbshipit-source-id: 41bde1119274a705ab849751ece28873d2c45155
2021-07-19 05:02:51 -07:00
Alexey Sidnev
2f668ecefe Disable gradient calculation in _check_valid_rotation_matrix()
Summary:
# Make `transform3d.py` a little bit better (performance and code quality)

## 1. Add decorator `torch.no_grad()` to the function `_check_valid_rotation_matrix()`

Function `_check_valid_rotation_matrix()` is needed to identify errors during forward pass only, it's not used for gradients.

## 2. Replace two calls `to` with the single one

Reviewed By: bottler

Differential Revision: D29656501

fbshipit-source-id: 4419e24dbf436c1b60abf77bda4376fb87a593be
2021-07-16 01:58:29 -07:00
Roman Shapovalov
0c02ae907e Adding utility methods to TensorProperties
Summary:
Context: in the code we are releasing with CO3D dataset, we use  `cuda()` on TensorProperties like Pointclouds and Cameras where we recursively move batch to a GPU. It would be good to push it to a release so we don’t need to depend on the nightly build.

Additionally, I aligned the logic of `.to("cuda")` without device index to the one of `torch.Tensor` where the current device is populated to index. It should not affect any actual use cases but some tests had to be changed.

Reviewed By: bottler

Differential Revision: D29659529

fbshipit-source-id: abe58aeaca14bacc68da3e6cf5ae07df3353e3ce
2021-07-13 10:29:26 -07:00
Christoph Lassner
fa44a05567 Fixing a bug that prevents opacity gradient calculation if no other gradients are required.
Summary: An early-return test for gradient calculation did not include the opacity gradient calculation - hence would also return early without calculating gradients even if opacity gradients are required.

Reviewed By: bottler

Differential Revision: D29505684

fbshipit-source-id: 575e820b8f58b19476b2fe3288702806733e840b
2021-07-10 01:06:56 -07:00
Christoph Lassner
75432a0695 Add OpenCV camera conversion; fix bug for camera unified PyTorch3D interface.
Summary: This commit adds a new camera conversion function for OpenCV style parameters to Pulsar parameters to the library. Using this function it addresses a bug reported here: https://fb.workplace.com/groups/629644647557365/posts/1079637302558095, by using the PyTorch3D->OpenCV->Pulsar chain instead of the original direct conversion function. Both conversions are well-tested and an additional test for the full chain has been added, resulting in a more reliable solution requiring less code.

Reviewed By: patricklabatut

Differential Revision: D29322106

fbshipit-source-id: 13df13c2e48f628f75d9f44f19ff7f1646fb7ebd
2021-07-10 01:06:56 -07:00
Patrick Labatut
fef5bcd8f9 Use rotation matrices for OpenCV / PyTorch3D conversions
Summary: Use rotation matrices for OpenCV / PyTorch3D conversions: this avoids hiding issues with conversions to / from axis-angle vectors and ensure new conversion functions have a consistent interface.

Reviewed By: bottler, classner

Differential Revision: D29634099

fbshipit-source-id: 40b28357914eb563fedea60a965dcf69e848ccfa
2021-07-09 10:26:34 -07:00
Pyre Bot Jr
44d2a9b623 suppress errors in vision/fair/pytorch3d
Differential Revision: D29573014

fbshipit-source-id: 87083e30d757fcceb4e380edc9973e07e6da6c76
2021-07-06 17:29:37 -07:00
Jeremy Reizenstein
10eb3892da Downloads from utils in a couple of tutorials
Summary: Fixes #514, so we don't assume user of the tutorial has access to utils.

Reviewed By: nikhilaravi

Differential Revision: D29557294

fbshipit-source-id: 10ac994be65df0822d3ee4e9d690189ff13074a2
2021-07-06 15:32:24 -07:00
Jeremy Reizenstein
68a35543d5 xcode update for mac builds
Summary: Avoid using old xcode which CircleCI say is deprecated.

Reviewed By: patricklabatut

Differential Revision: D29538176

fbshipit-source-id: 1e2ae4845d42365c778536446958966bbecf188c
2021-07-05 06:09:28 -07:00
David Novotny
4426a9d12c RayBundle visualization
Summary: Extends plotly_vis to visualize `RayBundle`s.

Reviewed By: patricklabatut

Differential Revision: D29014098

fbshipit-source-id: 4dee426510a1fa53d4afefbe1bcdd003684c9932
2021-07-01 17:31:01 -07:00
Jeremy Reizenstein
62ff77b49a points2volumes benchmark run alone
Summary: Enable this benchmark to be run on its own, like others.

Reviewed By: patricklabatut

Differential Revision: D29522846

fbshipit-source-id: c7b3b5c9a0fcdeeb79d8b2ec197684b4380aa547
2021-07-01 16:08:40 -07:00
Jeremy Reizenstein
61754b2fac lint fixes
Summary: Fixing recent lint problems.

Reviewed By: patricklabatut

Differential Revision: D29522647

fbshipit-source-id: 9bd89fbfa512ecd7359ec355cf12b16fb7024b47
2021-07-01 16:08:40 -07:00
Patrick Labatut
5615f072d7 Add missing common module to auto-generated documentation
Summary: Add missing common module to auto-generated documentation

Reviewed By: nikhilaravi

Differential Revision: D29429687

fbshipit-source-id: fcbd02bda959b0f5674c344d17ce3f36ac4b85ae
2021-06-29 15:37:33 -07:00
Pyre Bot Jr
14f7fe4a65 suppress errors in fbcode/vision - batch 2
Differential Revision: D29458533

fbshipit-source-id: d9ef216fdbb677e49371ad91ea5e9355146c1c52
2021-06-29 09:49:16 -07:00
Jeremy Reizenstein
b8790474f1 work with old linalg
Summary: solve and lstsq have moved around in torch. Cope with both.

Reviewed By: patricklabatut

Differential Revision: D29302316

fbshipit-source-id: b34f0b923e90a357f20df359635929241eba6e74
2021-06-28 06:31:35 -07:00
Patrick Labatut
5284de6e97 Deprecate so3_exponential_map
Summary: Deprecate the `so3_exponential_map()` function in favor of its alias `so3_exp_map()`: this aligns with the naming of `so3_log_map()` and the recently introduced `se3_exp_map()` / `se3_log_map()` pair.

Reviewed By: bottler

Differential Revision: D29329966

fbshipit-source-id: b6f60b9e86b2995f70b1fbeb16f9feea05c55de9
2021-06-28 04:28:06 -07:00
Patrick Labatut
f593bfd3c2 More type annotations
Summary: More type annotations: device, shaders, pluggable I/O, stats in NeRF project, cameras, textures, etc...

Reviewed By: nikhilaravi

Differential Revision: D29327396

fbshipit-source-id: cdf0ceaaa010e22423088752688c8dd81f1acc3c
2021-06-25 19:56:25 -07:00
Nikhila Ravi
542e2e7c07 Save UV texture with obj mesh
Summary: Add functionality to to save an `.obj` file with associated UV textures: `.png` image and `.mtl` file as well as saving verts_uvs and faces_uvs to the `.obj` file.

Reviewed By: bottler

Differential Revision: D29337562

fbshipit-source-id: 86829b40dae9224088b328e7f5a16eacf8582eb5
2021-06-24 15:56:01 -07:00
Patrick Labatut
64289a491d Annotate dunder functions
Summary: Annotate the (return type of the) following dunder functions across the codebase: `__init__()`, `__len__()`, `__getitem__()`

Reviewed By: nikhilaravi

Differential Revision: D29001801

fbshipit-source-id: 928d9e1c417ffe01ab8c0445311287786e997c7c
2021-06-24 15:19:16 -07:00
Pyre Bot Jr
35855bf860 suppress errors in vision/fair/pytorch3d
Differential Revision: D29360359

fbshipit-source-id: 9e91e8499a23e30a5fc39f8f6444b2db9f6b4142
2021-06-24 05:33:55 -07:00
Georgia Gkioxari
07a5a68d50 refactor laplacian matrices
Summary:
Refactor of all functions to compute laplacian matrices in one file.
Support for:
* Standard Laplacian
* Cotangent Laplacian
* Norm Laplacian

Reviewed By: nikhilaravi

Differential Revision: D29297466

fbshipit-source-id: b96b88915ce8ef0c2f5693ec9b179fd27b70abf9
2021-06-24 03:53:21 -07:00
Christoph Lassner
da9974b416 Add PyTorch3D->OpenCV camera parameter conversion.
Summary: This diff implements the inverse of D28992470 (8006842f2a): a function to extract OpenCV convention camera parameters from a PyTorch3D `PerspectiveCameras` object. This is the first part of the new PyTorch3d<>OpenCV<>Pulsar conversion functions.

Reviewed By: patricklabatut

Differential Revision: D29278411

fbshipit-source-id: 68d4555b508dbe8685d8239443f839d194cc2484
2021-06-23 14:38:41 -07:00
Patrick Labatut
e4039aa570 Remove _C pyre fixmes
Summary:
Get rid of pyre fixmes related to importing a native module:
- add stub file for the `_C` native extension to the internal typeshed
- add initial annotations to the new stub file
- remove the now unnecessary pyre ignores

Reviewed By: nikhilaravi

Differential Revision: D28929467

fbshipit-source-id: 6525e15c8f27215a3ff6f78392925fd0ed6ec2ac
2021-06-22 18:36:20 -07:00
Nikhila Ravi
de72049fe5 Create stale.yml (#721)
Summary:
Github action to close issues/PRs that are not labelled with "enhancement" or "how-to" if they have not had any activity in 30 days.

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

Reviewed By: bottler

Differential Revision: D29309817

Pulled By: nikhilaravi

fbshipit-source-id: 039f6d4f29e9d04c01f59d145317a34ad75026a5
2021-06-22 16:30:56 -07:00
Jeremy Reizenstein
279f4a154d texture map list validation
Summary: Add some more validation of a list of texture maps. Move the initialisation of maps_padded to a new function to reduce complexity.

Reviewed By: nikhilaravi

Differential Revision: D29263443

fbshipit-source-id: 153e262d2e9af21090570768020fca019e364024
2021-06-22 16:07:47 -07:00
Jeremy Reizenstein
2a0660baab Flexible #channels in TexturesUV.join_scene
Summary: The TexturesUV class supports an arbitrary number of channels. In one place in join_scene we unnecessarily assumed the usual value, 3.

Reviewed By: patricklabatut

Differential Revision: D29133477

fbshipit-source-id: de8eb15fdd55675da084634d9d99e2a3f4d35401
2021-06-22 16:07:47 -07:00
Jeremy Reizenstein
c538725885 use C for #channels in textures
Summary: Comments in textures.py were inconsistent in describing the number of channels, sometimes C, sometimes D, sometimes 3. Now always C.

Reviewed By: patricklabatut

Differential Revision: D29263435

fbshipit-source-id: 7c1260c164c52852dc9e14d0e12da4cfb64af408
2021-06-22 16:07:47 -07:00
Jeremy Reizenstein
c639198c97 builds for PyTorch 1.9
Summary:
Build for pytorch 1.9, and make it the only mac build. Not testing on cuda 11.1, because of annoying failures which are restricted to certain hardware.

Also update cuda driver in CI tests.

Reviewed By: patricklabatut

Differential Revision: D29302314

fbshipit-source-id: 78def378adb9d7aa287abdc5ac0af269e3ba3625
2021-06-22 12:39:44 -07:00
Jeremy Reizenstein
bbc12e70c4 Fix build for package_data
Summary: include_package_data does not work well in the presence of built extensions, and the OSS build hasn't been working for a few days since #593 was merged.

Reviewed By: patricklabatut

Differential Revision: D29302315

fbshipit-source-id: db7e46f8c4593743c3522087979592f9989c7c6b
2021-06-22 12:39:44 -07:00
Pyre Bot Jr
639f05a190 suppress errors in fbcode/vision - batch 2
Differential Revision: D29301375

fbshipit-source-id: a061a2fb7c7f2fd2038e31b28a5bdf0bfe1676f6
2021-06-22 12:00:22 -07:00
Patrick Labatut
8f4ddb5a1f Add license linting for PyTorch3D
Summary: Add license linting for PyTorch3D

Reviewed By: zertosh

Differential Revision: D29001800

fbshipit-source-id: 3099cd6dac58dc5403f768aafde491b74fbc4dc2
2021-06-22 03:45:27 -07:00
Patrick Labatut
af93f34834 License lint codebase
Summary: License lint codebase

Reviewed By: theschnitz

Differential Revision: D29001799

fbshipit-source-id: 5c59869911785b0181b1663bbf430bc8b7fb2909
2021-06-22 03:45:27 -07:00
Patrick Labatut
7e43f29d52 Lint codebase
Summary: Lint codebase

Reviewed By: bottler

Differential Revision: D29263057

fbshipit-source-id: ac97f01d2a79fead3b09c2cbb21b50ce688a577d
2021-06-22 03:45:27 -07:00
Jeremy Reizenstein
ce60d4b00e remove requires_grad from random rotations
Summary: Because rotations and (rotation) quaternions live on curved manifolds, it doesn't make sense to optimize them directly. Having a prominent option to require gradient on random ones may cause people to try, and isn't particularly useful.

Reviewed By: theschnitz

Differential Revision: D29160734

fbshipit-source-id: fc9e320672349fe334747c5b214655882a460a62
2021-06-21 11:45:42 -07:00
Jeremy Reizenstein
31c448a95d Test gltf texture without renderer.
Summary:
Change the cow gltf loading test to validate the texture values and not to validate the renderer output because it has an unstable pixel.

Also a couple of lints.

Reviewed By: patricklabatut

Differential Revision: D29131260

fbshipit-source-id: 5e11f066a2a638588aacb09776cc842173ef669f
2021-06-21 08:11:36 -07:00
Jeremy Reizenstein
9c09c0d316 conda timeout in CI
Summary: Conda build command can be very slow at resolving dependencies with PyTorch 1.8. I extended the timeout for this in the tests. Here do the same for the builds.

Reviewed By: patricklabatut

Differential Revision: D29131188

fbshipit-source-id: 554e694f0f8aa7509141016720b1e9019177b214
2021-06-21 07:26:39 -07:00
Jeremy Reizenstein
354a1808ff Fix save_ply with noncontiguous faces
Summary: As noted in #710, save_ply was failing with some values of the faces tensor. It was assuming the faces were contiguous in using view() to change them. Here we avoid doing that.

Reviewed By: patricklabatut

Differential Revision: D29159655

fbshipit-source-id: 47214a7ce915bab8d81f109c2b97cde464fd57d8
2021-06-21 06:05:45 -07:00
David Novotny
8006842f2a Conversion from OpenCV cameras
Summary: Implements a conversion function between OpenCV and PyTorch3D cameras.

Reviewed By: patricklabatut

Differential Revision: D28992470

fbshipit-source-id: dbcc9f213ec293c2f6938261c704aea09aad3c90
2021-06-21 05:03:32 -07:00
David Novotny
b2ac2655b3 SE3 exponential and logarithm maps.
Summary:
Implements the SE3 logarithm and exponential maps.
(this is a second part of the split of D23326429)

Outputs of `bm_se3`:
```
Benchmark         Avg Time(μs)      Peak Time(μs) Iterations
--------------------------------------------------------------------------------
SE3_EXP_1                738             885            678
SE3_EXP_10               717             877            698
SE3_EXP_100              718             847            697
SE3_EXP_1000             729            1181            686
--------------------------------------------------------------------------------

Benchmark          Avg Time(μs)      Peak Time(μs) Iterations
--------------------------------------------------------------------------------
SE3_LOG_1               1451            2267            345
SE3_LOG_10              2185            2453            229
SE3_LOG_100             2217            2448            226
SE3_LOG_1000            2455            2599            204
--------------------------------------------------------------------------------
```

Reviewed By: patricklabatut

Differential Revision: D27852557

fbshipit-source-id: e42ccc9cfffe780e9cad24129de15624ae818472
2021-06-21 04:48:27 -07:00
David Novotny
9f14e82b5a SO3 improvements for stable gradients.
Summary:
Improves so3 functions to make gradient computation stable:
- Instead of `torch.acos`, uses `acos_linear_extrapolation` which has finite gradients of reasonable magnitude for all inputs.
- Adds tests for the latter.

The tests of the finiteness of the gradient in `test_so3_exp_singularity`, `test_so3_exp_singularity`, `test_so3_cos_bound` would fail if the `so3` functions would call `torch.acos` instead of `acos_linear_extrapolation`.

Reviewed By: bottler

Differential Revision: D23326429

fbshipit-source-id: dc296abf2ae3ddfb3942c8146621491a9cb740ee
2021-06-21 04:48:27 -07:00
David Novotny
dd45123f20 Linearly extrapolated acos.
Summary:
Implements a backprop-safe version of `torch.acos` that linearly extrapolates the function outside bounds.

Below is a plot of the extrapolated acos for different bounds:
{F611339485}

Reviewed By: bottler, nikhilaravi

Differential Revision: D27945714

fbshipit-source-id: fa2e2385b56d6fe534338d5192447c4a3aec540c
2021-06-21 04:48:27 -07:00