- 17 May, 2025 1 commit
-
-
fengzch authored
-
- 02 Aug, 2024 1 commit
-
-
Rebecca Chen (Python) authored
Summary: * Adds a "max" option for the point_reduction input to the chamfer_distance function. * When combining the x and y directions, maxes the losses instead of summing them when point_reduction="max". * Moves batch reduction to happen after the directions are combined. * Adds test_chamfer_point_reduction_max and test_single_directional_chamfer_point_reduction_max tests. Fixes https://github.com/facebookresearch/pytorch3d/issues/1838 Reviewed By: bottler Differential Revision: D60614661 fbshipit-source-id: 7879816acfda03e945bada951b931d2c522756eb
-
- 17 Jun, 2024 1 commit
-
-
vedrenne authored
Summary: Currently, it is not possible to access a sub-transform using an indexer for all 3d transforms inheriting the `Transforms3d` class. For instance: ```python from pytorch3d import transforms N = 10 r = transforms.random_rotations(N) T = transforms.Transform3d().rotate(R=r) R = transforms.Rotate(r) x = T[0] # ok x = R[0] # TypeError: __init__() got an unexpected keyword argument 'matrix' ``` This is because all these classes (namely `Rotate`, `Translate`, `Scale`, `RotateAxisAngle`) inherit the `__getitem__()` method from `Transform3d` which has the [following code on line 201](https://github.com/facebookresearch/pytorch3d/blob/main/pytorch3d/transforms/transform3d.py#L201): ```python return self.__class__(matrix=self.get_matrix()[index]) ``` The four classes inheriting `Transform3d` are not initialized through a matrix argument, hence they error. I propose to modify the `__getitem__()` method of the `Transform3d` class to fix this behavior. The least invasive way to do it I can think of consists of creating an empty instance of the current class, then setting the `_matrix` attribute manually. Thus, instead of ```python return self.__class__(matrix=self.get_matrix()[index]) ``` I propose to do: ```python instance = self.__class__.__new__(self.__class__) instance._matrix = self.get_matrix()[index] return instance ``` As far as I can tell, this modification occurs no modification whatsoever for the user, except for the ability to index all 3d transforms. Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1801 Reviewed By: MichaelRamamonjisoa Differential Revision: D58410389 Pulled By: bottler fbshipit-source-id: f371e4c63d2ae4c927a7ad48c2de8862761078de
-
- 12 Mar, 2024 1 commit
-
-
Cijo Jose authored
Summary: Implements the the TexturesUV with multiple map ids. Reviewed By: bottler Differential Revision: D53944063 fbshipit-source-id: 06c25eb6d69f72db0484f16566dd2ca32a560b82
-
- 03 Mar, 2024 1 commit
-
-
Amethyst Reese authored
Summary: Formats the covered files with pyfmt. paintitblack Reviewed By: aleivag Differential Revision: D54447727 fbshipit-source-id: 8844b1caa08de94d04ac4df3c768dbf8c865fd2f
-
- 16 Feb, 2024 1 commit
-
-
Cijo Jose authored
Summary: The diff support colors in cubify for align = "center" Reviewed By: bottler Differential Revision: D53777011 fbshipit-source-id: ccb2bd1e3d89be3d1ac943eff08f40e50b0540d9
-
- 13 Feb, 2024 1 commit
-
-
Jeremy Reizenstein authored
Summary: Add an option to run tests without the OpenGL Renderer. Reviewed By: patricklabatut Differential Revision: D53573400 fbshipit-source-id: 54a14e7b2f156d24e0c561fdb279f4a9af01b793
-
- 08 Feb, 2024 1 commit
-
-
Ada Martin authored
Summary: Fixes https://github.com/facebookresearch/pytorch3d/issues/1641. The bug was caused by the mistaken downcasting of an int64_t into int, causing issues only on inputs large enough to have hashes that escaped the bounds of an int32. Also added a test case for this issue. Reviewed By: bottler Differential Revision: D53505370 fbshipit-source-id: 0fdd0efc6d259cc3b0263e7ff3a4ab2c648ec521
-
- 31 Jan, 2024 1 commit
-
-
generatedunixname89002005287564 authored
Reviewed By: zsol Differential Revision: D53258682 fbshipit-source-id: 3f006b5f31a2b1ffdc6323d3a3b08ac46c3162ce
-
- 16 Jan, 2024 1 commit
-
-
Ido Zachevsky authored
Summary: Fixed `get_rgbd_point_cloud` to take any number of image input channels. Reviewed By: bottler Differential Revision: D52796276 fbshipit-source-id: 3ddc0d1e337a6cc53fc86c40a6ddb136f036f9bc
-
- 04 Jan, 2024 1 commit
-
-
Abdelrahman Selim authored
Summary: Replace implementations of `so3_exp_map` and `so3_log_map` in so3.py with existing more-stable implementations. Reviewed By: bottler Differential Revision: D52513319 fbshipit-source-id: fbfc039643fef284d8baa11bab61651964077afe
-
- 21 Dec, 2023 1 commit
-
-
Tony Tan authored
Summary: Implement submeshing for TexturesAtlas and add associated test Reviewed By: bottler Differential Revision: D52334053 fbshipit-source-id: d54080e9af1f0c01551702736e858e3bd439ac58
-
- 19 Dec, 2023 1 commit
-
-
Hassan Lotfi authored
Summary: Implement `submeshes` for TexturesUV. Fix what Meshes.submeshes passes to the texture's submeshes function to make this possible. Reviewed By: bottler Differential Revision: D52192060 fbshipit-source-id: 526734962e3376aaf75654200164cdcebfff6997
-
- 11 Dec, 2023 1 commit
-
-
Eric Young authored
Summary: Performance improvement: Use torch.lerp to map uv coordinates to the range needed for grid_sample (i.e. map [0, 1] to [-1, 1] and invert the y-axis) Reviewed By: bottler Differential Revision: D51961728 fbshipit-source-id: db19a5e3f482e9af7b96b20f88a1e5d0076dac43
-
- 07 Dec, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: Porting this commit by davnov134 . https://github.com/fairinternal/pytorch3d/commit/93a3a62800799c73758505c6397ac7a1440b18d9#diff-a8e107ebe039de52ca112ac6ddfba6ebccd53b4f53030b986e13f019fe57a378 Capability to interpret world/local coordinates with various align_corners semantics. Reviewed By: bottler Differential Revision: D51855420 fbshipit-source-id: 834cd220c25d7f0143d8a55ba880da5977099dd6
-
- 04 Dec, 2023 1 commit
-
-
Jeremy Reizenstein authored
Summary: Fix recent flake complaints Reviewed By: MichaelRamamonjisoa Differential Revision: D51811912 fbshipit-source-id: 65183f5bc7058da910e4d5a63b2250ce8637f1cc
-
- 14 Nov, 2023 3 commits
-
-
Aleksandrs Ecins authored
Summary: Fixes lint in test_render_points in the PyTorch3D library. Differential Revision: D51289841 fbshipit-source-id: 1eae621eb8e87b0fe5979f35acd878944f574a6a
-
YangHai authored
Summary: When the ply format looks as follows: ``` comment TextureFile ***.png element vertex 892 property double x property double y property double z property double nx property double ny property double nz property double texture_u property double texture_v ``` `MeshPlyFormat` class will read uv from the ply file and read the uv map as commented as TextureFile. Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1100 Reviewed By: MichaelRamamonjisoa Differential Revision: D50885176 Pulled By: bottler fbshipit-source-id: be75b1ec9a17a1ed87dbcf846a9072ea967aec37
-
Jeremy Reizenstein authored
Summary: fixes https://github.com/facebookresearch/pytorch3d/issues/1679 Reviewed By: MichaelRamamonjisoa Differential Revision: D50949933 fbshipit-source-id: 5c467de8bf84dd2a3d61748b3846678582d24ea3
-
- 15 Aug, 2023 1 commit
-
-
Haritha Jayasinghe authored
Summary: The `chamfer_distance` function currently allows `"sum"` or `"mean"` reduction, but does not support returning unreduced (per-point) loss terms. Unreduced losses could be useful if the user wishes to inspect individual losses, or perform additional modifications to loss terms before reduction. One example would be implementing a robust kernel over the loss. This PR adds a `None` option to the `point_reduction` parameter, similar to `batch_reduction`. In case of bi-directional chamfer loss, both the forward and backward distances are returned (a tuple of Tensors of shape `[D, N]` is returned). If normals are provided, similar logic applies to normals as well. This PR addresses issue https://github.com/facebookresearch/pytorch3d/issues/622. Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1605 Reviewed By: jcjohnson Differential Revision: D48313857 Pulled By: bottler fbshipit-source-id: 35c824827a143649b04166c4817449e1341b7fd9
-
- 06 Jul, 2023 5 commits
-
-
Emilien Garreau authored
Summary: Convert ImplicitronRayBundle to a "classic" class instead of a dataclass. This change is introduced as a way to preserve the ImplicitronRayBundle interface while allowing two outcomes: - init lengths arguments is now a Optional[torch.Tensor] instead of torch.Tensor - lengths is now a property which returns a `torch.Tensor`. The lengths property will either recompute lengths from bins or return the stored _lengths. `_lenghts` is None if bins is set. It saves us a bit of memory. Reviewed By: shapovalov Differential Revision: D46686094 fbshipit-source-id: 3c75c0947216476ebff542b6f552d311024a679b
-
Emilien Garreau authored
Summary: ## Context Bins are used in mipnerf to allow to manipulate easily intervals. For example, by doing the following, `bins[..., :-1]` you will obtain all the left coordinates of your intervals, while doing `bins[..., 1:]` is equals to the right coordinates of your intervals. We introduce here the support of bins like in MipNerf implementation. ## RayPointRefiner Small changes have been made to modify RayPointRefiner. - If bins is None ``` mids = torch.lerp(ray_bundle.lengths[..., 1:], ray_bundle.lengths[…, :-1], 0.5) z_samples = sample_pdf( mids, # [..., npt] weights[..., 1:-1], # [..., npt - 1] …. ) ``` - If bins is not None In the MipNerf implementation the sampling is done on all the bins. It allows us to use the full weights tensor without slashing it. ``` z_samples = sample_pdf( ray_bundle.bins, # [..., npt + 1] weights, # [..., npt] ... ) ``` ## RayMarcher Add a ray_deltas optional argument. If None, keep the same deltas computation from ray_lengths. Reviewed By: shapovalov Differential Revision: D46389092 fbshipit-source-id: d4f1963310065bd31c1c7fac1adfe11cbeaba606 -
Emilien Garreau authored
Summary: Add blurpool has defined in [MIP-NeRF](https://arxiv.org/abs/2103.13415). It has been added has an option for RayPointRefiner. Reviewed By: shapovalov Differential Revision: D46356189 fbshipit-source-id: ad841bad86d2b591a68e1cb885d4f781cf26c111
-
Emilien Garreau authored
Summary: Add a new implicit module Integral Position Encoding based on [MIP-NeRF](https://arxiv.org/abs/2103.13415). Reviewed By: shapovalov Differential Revision: D46352730 fbshipit-source-id: c6a56134c975d80052b3a11f5e92fd7d95cbff1e
-
Emilien Garreau authored
Summary: Introduce methods to approximate the radii of conical frustums along rays as described in [MipNerf](https://arxiv.org/abs/2103.13415): - Two new attributes are added to ImplicitronRayBundle: bins and radii. Bins is of size n_pts_per_ray + 1. It allows us to manipulate easily and n_pts_per_ray intervals. For example we need the intervals coordinates in the radii computation for \(t_{\mu}, t_{\delta}\). Radii are used to store the radii of the conical frustums. - Add 3 new methods to compute the radii: - approximate_conical_frustum_as_gaussians: It computes the mean along the ray direction, the variance of the conical frustum with respect to t and variance of the conical frustum with respect to its radius. This implementation follows the stable computation defined in the paper. - compute_3d_diagonal_covariance_gaussian: Will leverage the two previously computed variances to find the diagonal covariance of the Gaussian. - conical_frustum_to_gaussian: Mix everything together to compute the means and the diagonal covariances along the ray of the Gaussians. - In AbstractMaskRaySampler, introduces the attribute `cast_ray_bundle_as_cone`. If False it won't change the previous behaviour of the RaySampler. However if True, the samplers will sample `n_pts_per_ray +1` instead of `n_pts_per_ray`. This points are then used to set the bins attribute of ImplicitronRayBundle. The support of HeterogeneousRayBundle has not been added since the current code does not allow it. A safeguard has been added to avoid a silent bug in the future. Reviewed By: shapovalov Differential Revision: D45269190 fbshipit-source-id: bf22fad12d71d55392f054e3f680013aa0d59b78
-
- 16 Jun, 2023 1 commit
-
-
Jeremy Reizenstein authored
Summary: Make test work in isolation, and when run internally make it not try the sqlalchemy files. Reviewed By: shapovalov Differential Revision: D46352513 fbshipit-source-id: 7417a25d7a5347d937631c9f56ae4e3242dd622e
-
- 14 Jun, 2023 2 commits
-
-
Roman Shapovalov authored
Summary: Making it easier for the clients to use these datasets. Reviewed By: bottler Differential Revision: D46727179 fbshipit-source-id: cf619aee4c4c0222a74b30ea590cf37f08f014cc
-
Roman Shapovalov authored
Summary: Adds stratified sampling of sequences within categories applied after category / sequence filters but before the num sequence limit. It respects the insertion order into the sequence_annots table, i.e. takes top N sequences within each category. Reviewed By: bottler Differential Revision: D46724002 fbshipit-source-id: 597cb2a795c3f3bc07f838fc51b4e95a4f981ad3
-
- 13 Jun, 2023 1 commit
-
-
Norman Mueller authored
Summary: Single directional chamfer distance and option to use non-absolute cosine similarity Reviewed By: bottler Differential Revision: D46593980 fbshipit-source-id: b2e591706a0cdde1c2d361614cecebb84a581433
-
- 26 May, 2023 1 commit
-
-
Emilien Garreau authored
Summary: Fine implicit function was called before the coarse implicit function. Reviewed By: shapovalov Differential Revision: D46224224 fbshipit-source-id: 6b1cc00cc823d3ea7a5b42774c9ec3b73a69edb5
-
- 22 May, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: 1. We may need to store arrays of unknown shape in the database. It implements and tests serialisation. 2. Previously, when an inexisting metadata file was passed to SqlIndexDataset, it would try to open it and create an empty file, then crash. We now open the file in a read-only mode, so the error message is more intuitive. Note that the implementation is SQLite specific. Reviewed By: bottler Differential Revision: D46047857 fbshipit-source-id: 3064ae4f8122b4fc24ad3d6ab696572ebe8d0c26
-
- 19 May, 2023 1 commit
-
-
Jeremy Reizenstein authored
Summary: I don't know why RE tests sometimes fail here, but maybe it's a race condition. If that's right, this should fix it. Reviewed By: shapovalov Differential Revision: D46020054 fbshipit-source-id: 20b746b09ad9bd77c2601ac681047ccc6cc27ed9
-
- 17 May, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: This is mostly a refactoring diff to reduce friction in extending the frame data. Slight functional changes: dataset getitem now accepts (seq_name, frame_number_as_singleton_tensor) as a non-advertised feature. Otherwise this code crashes: ``` item = dataset[0] dataset[item.sequence_name, item.frame_number] ``` Reviewed By: bottler Differential Revision: D45780175 fbshipit-source-id: 75b8e8d3dabed954a804310abdbd8ab44a8dea29
-
- 07 May, 2023 1 commit
-
-
dhb authored
Summary: Although we can load per-vertex normals in `load_obj`, saving per-vertex normals is not supported in `save_obj`. This patch fixes this by allowing passing per-vertex normal data in `save_obj`: ``` python def save_obj( f: PathOrStr, verts, faces, decimal_places: Optional[int] = None, path_manager: Optional[PathManager] = None, *, verts_normals: Optional[torch.Tensor] = None, faces_normals: Optional[torch.Tensor] = None, verts_uvs: Optional[torch.Tensor] = None, faces_uvs: Optional[torch.Tensor] = None, texture_map: Optional[torch.Tensor] = None, ) -> None: """ Save a mesh to an .obj file. Args: f: File (str or path) to which the mesh should be written. verts: FloatTensor of shape (V, 3) giving vertex coordinates. faces: LongTensor of shape (F, 3) giving faces. decimal_places: Number of decimal places for saving. path_manager: Optional PathManager for interpreting f if it is a str. verts_normals: FloatTensor of shape (V, 3) giving the normal per vertex. faces_normals: LongTensor of shape (F, 3) giving the index into verts_normals for each vertex in the face. verts_uvs: FloatTensor of shape (V, 2) giving the uv coordinate per vertex. faces_uvs: LongTensor of shape (F, 3) giving the index into verts_uvs for each vertex in the face. texture_map: FloatTensor of shape (H, W, 3) representing the texture map for the mesh which will be saved as an image. The values are expected to be in the range [0, 1], """ ``` Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1511 Reviewed By: shapovalov Differential Revision: D45086045 Pulled By: bottler fbshipit-source-id: 666efb0d2c302df6cf9f2f6601d83a07856bf32f
-
- 05 May, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: Import generic path; avoiding incorrect path patching. Reviewed By: bottler Differential Revision: D45573976 fbshipit-source-id: e6ff4d759deb936e3b636defa1e0851fb0127b46
-
- 04 May, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: I forgot to include these tests to D45086611 when transferring code from pixar_replay repo. They test the new ORM types used in SQL dataset and are SQL Alchemy 2.0 specific. An important test for extending types is a proof of concept for generality of SQL Dataset. The idea is to extend FrameAnnotation and FrameData in parallel. Reviewed By: bottler Differential Revision: D45529284 fbshipit-source-id: 2a634e518f580c312602107c85fc320db43abcf5
-
- 01 May, 2023 1 commit
-
-
Ilia Vitsnudel authored
Summary: Added a suit of functions and code additions to experimental_gltf_io.py file to enable saving Meshes in TexturesVertex format into .glb file. Also added a test to tets_io_gltf.py to check the functionality with the test described in Test Plane. Reviewed By: bottler Differential Revision: D44969144 fbshipit-source-id: 9ce815a1584b510442fa36cc4dbc8d41cc3786d5
-
- 25 Apr, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: Moving SQL dataset to PyTorch3D. It has been extensively tested in pixar_replay. It requires SQLAlchemy 2.0, which is not supported in fbcode. So I exclude the sources and tests that depend on it from buck TARGETS. Reviewed By: bottler Differential Revision: D45086611 fbshipit-source-id: 0285f03e5824c0478c70ad13731525bb5ec7deef
-
- 20 Apr, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: We currently support caching bounding boxes in MaskAnnotation. If present, they are not re-computed from the mask. However, the masks need to be loaded for the bbox to be set. This diff fixes that. Even if load_masks / load_blobs are unset, the bounding box can be picked up from the metadata. Reviewed By: bottler Differential Revision: D45144918 fbshipit-source-id: 8a2e2c115e96070b6fcdc29cbe57e1cee606ddcd
-
- 18 Apr, 2023 1 commit
-
-
Roman Shapovalov authored
Summary: The code does not crash if depth map/mask are not given. Reviewed By: bottler Differential Revision: D45082985 fbshipit-source-id: 3610d8beb4ac897fbbe52f56a6dd012a6365b89b
-