mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-02 20:02:49 +08:00
Summary: 1. Introduced weights to Umeyama implementation. This will be needed for weighted ePnP but is useful on its own. 2. Refactored to use the same code for the Pointclouds mask and passed weights. 3. Added test cases with random weights. 4. Fixed a bug in tests that calls the function with 0 points (fails randomly in Pytorch 1.3, will be fixed in the next release: https://github.com/pytorch/pytorch/issues/31421 ). Reviewed By: gkioxari Differential Revision: D20070293 fbshipit-source-id: e9f549507ef6dcaa0688a0f17342e6d7a9a4336c
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
|
|
|
from copy import deepcopy
|
|
from itertools import product
|
|
from fvcore.common.benchmark import benchmark
|
|
|
|
from test_points_alignment import TestCorrespondingPointsAlignment
|
|
|
|
|
|
def bm_corresponding_points_alignment() -> None:
|
|
|
|
case_grid = {
|
|
"allow_reflection": [True, False],
|
|
"batch_size": [1, 10, 100],
|
|
"dim": [3, 20],
|
|
"estimate_scale": [True, False],
|
|
"n_points": [100, 10000],
|
|
"random_weights": [False, True],
|
|
"use_pointclouds": [False],
|
|
}
|
|
|
|
test_args = sorted(case_grid.keys())
|
|
test_cases = product(*[case_grid[k] for k in test_args])
|
|
kwargs_list = [dict(zip(test_args, case)) for case in test_cases]
|
|
|
|
# add the use_pointclouds=True test cases whenever we have dim==3
|
|
kwargs_to_add = []
|
|
for entry in kwargs_list:
|
|
if entry["dim"] == 3:
|
|
entry_add = deepcopy(entry)
|
|
entry_add["use_pointclouds"] = True
|
|
kwargs_to_add.append(entry_add)
|
|
kwargs_list.extend(kwargs_to_add)
|
|
|
|
benchmark(
|
|
TestCorrespondingPointsAlignment.corresponding_points_alignment,
|
|
"CorrespodingPointsAlignment",
|
|
kwargs_list,
|
|
warmup_iters=1,
|
|
)
|