Download submodule/pytorch3d/tests/pulsar/test_depth.py from Stylique/idol-models: direct link, hf CLI and curl.
- Browser
- Download file 3.48 kB
-
https://huggingface.co/Stylique/idol-models/resolve/main/submodule/pytorch3d/tests/pulsar/test_depth.py
- Command line
-
hf download hf://Stylique/idol-models/submodule/pytorch3d/tests/pulsar/test_depth.py
-
curl -L -o test_depth.py https://huggingface.co/Stylique/idol-models/resolve/main/submodule/pytorch3d/tests/pulsar/test_depth.py
3.48 kB
| # Copyright (c) Meta Platforms, Inc. and affiliates. | |
| # All rights reserved. | |
| # | |
| # This source code is licensed under the BSD-style license found in the | |
| # LICENSE file in the root directory of this source tree. | |
| """Test the sorting of the closest spheres.""" | |
| import logging | |
| import os | |
| import sys | |
| import unittest | |
| from os import path | |
| import imageio | |
| import numpy as np | |
| import torch | |
| from ..common_testing import TestCaseMixin | |
| # Making sure you can run this, even if pulsar hasn't been installed yet. | |
| sys.path.insert(0, path.join(path.dirname(__file__), "..", "..")) | |
| devices = [torch.device("cuda"), torch.device("cpu")] | |
| IN_REF_FP = path.join(path.dirname(__file__), "reference", "nr0000-in.pth") | |
| OUT_REF_FP = path.join(path.dirname(__file__), "reference", "nr0000-out.pth") | |
| class TestDepth(TestCaseMixin, unittest.TestCase): | |
| """Test different numbers of channels.""" | |
| def test_basic(self): | |
| from pytorch3d.renderer.points.pulsar import Renderer | |
| for device in devices: | |
| gamma = 1e-5 | |
| max_depth = 15.0 | |
| min_depth = 5.0 | |
| renderer = Renderer( | |
| 256, | |
| 256, | |
| 10000, | |
| orthogonal_projection=True, | |
| right_handed_system=False, | |
| n_channels=1, | |
| ).to(device) | |
| data = torch.load(IN_REF_FP, map_location="cpu") | |
| # For creating the reference files. | |
| # Use in case of updates. | |
| # data["pos"] = torch.rand_like(data["pos"]) | |
| # data["pos"][:, 0] = data["pos"][:, 0] * 2. - 1. | |
| # data["pos"][:, 1] = data["pos"][:, 1] * 2. - 1. | |
| # data["pos"][:, 2] = data["pos"][:, 2] + 9.5 | |
| result, result_info = renderer.forward( | |
| data["pos"].to(device), | |
| data["col"].to(device), | |
| data["rad"].to(device), | |
| data["cam_params"].to(device), | |
| gamma, | |
| min_depth=min_depth, | |
| max_depth=max_depth, | |
| return_forward_info=True, | |
| bg_col=torch.zeros(1, device=device, dtype=torch.float32), | |
| percent_allowed_difference=0.01, | |
| ) | |
| depth_map = Renderer.depth_map_from_result_info_nograd(result_info) | |
| depth_vis = (depth_map - depth_map[depth_map > 0].min()) * 200 / ( | |
| depth_map.max() - depth_map[depth_map > 0.0].min() | |
| ) + 50 | |
| if not os.environ.get("FB_TEST", False): | |
| imageio.imwrite( | |
| path.join( | |
| path.dirname(__file__), | |
| "test_out", | |
| "test_depth_test_basic_depth.png", | |
| ), | |
| depth_vis.cpu().numpy().astype(np.uint8), | |
| ) | |
| # For creating the reference files. | |
| # Use in case of updates. | |
| # torch.save( | |
| # data, path.join(path.dirname(__file__), "reference", "nr0000-in.pth") | |
| # ) | |
| # torch.save( | |
| # {"sphere_ids": sphere_ids, "depth_map": depth_map}, | |
| # path.join(path.dirname(__file__), "reference", "nr0000-out.pth"), | |
| # ) | |
| # sys.exit(0) | |
| reference = torch.load(OUT_REF_FP, map_location="cpu") | |
| self.assertClose(reference["depth_map"].to(device), depth_map) | |
| if __name__ == "__main__": | |
| logging.basicConfig(level=logging.INFO) | |
| unittest.main() | |