5 Commits

Author SHA1 Message Date
Roman Shapovalov
04d8bf6a43 Efficient PnP.
Summary:
Efficient PnP algorithm to fit 2D to 3D correspondences under perspective assumption.

Benchmarked both variants of nullspace and pick one; SVD takes 7 times longer in the 100K points case.

Reviewed By: davnov134, gkioxari

Differential Revision: D20095754

fbshipit-source-id: 2b4519729630e6373820880272f674829eaed073
2020-04-17 07:44:16 -07:00
David Novotny
8abbe22ffb ICP - point-to-point version
Summary:
The iterative closest point algorithm - point-to-point version.

Output of `bm_iterative_closest_point`:
Argument key: `batch_size dim n_points_X n_points_Y use_pointclouds`

```
Benchmark                                         Avg Time(μs)      Peak Time(μs) Iterations
--------------------------------------------------------------------------------
IterativeClosestPoint_1_3_100_100_False              107569          111323              5
IterativeClosestPoint_1_3_100_1000_False             118972          122306              5
IterativeClosestPoint_1_3_1000_100_False             108576          110978              5
IterativeClosestPoint_1_3_1000_1000_False            331836          333515              2
IterativeClosestPoint_1_20_100_100_False             134387          137842              4
IterativeClosestPoint_1_20_100_1000_False            149218          153405              4
IterativeClosestPoint_1_20_1000_100_False            414248          416595              2
IterativeClosestPoint_1_20_1000_1000_False           374318          374662              2
IterativeClosestPoint_10_3_100_100_False             539852          539852              1
IterativeClosestPoint_10_3_100_1000_False            752784          752784              1
IterativeClosestPoint_10_3_1000_100_False           1070700         1070700              1
IterativeClosestPoint_10_3_1000_1000_False          1164020         1164020              1
IterativeClosestPoint_10_20_100_100_False            374548          377337              2
IterativeClosestPoint_10_20_100_1000_False           472764          476685              2
IterativeClosestPoint_10_20_1000_100_False          1457175         1457175              1
IterativeClosestPoint_10_20_1000_1000_False         2195820         2195820              1
IterativeClosestPoint_1_3_100_100_True               110084          115824              5
IterativeClosestPoint_1_3_100_1000_True              142728          147696              4
IterativeClosestPoint_1_3_1000_100_True              212966          213966              3
IterativeClosestPoint_1_3_1000_1000_True             369130          375114              2
IterativeClosestPoint_10_3_100_100_True              354615          355179              2
IterativeClosestPoint_10_3_100_1000_True             451815          452704              2
IterativeClosestPoint_10_3_1000_100_True             511833          511833              1
IterativeClosestPoint_10_3_1000_1000_True            798453          798453              1
--------------------------------------------------------------------------------
```

Reviewed By: shapovalov, gkioxari

Differential Revision: D19909952

fbshipit-source-id: f77fadc88fb7c53999909d594114b182ee2a3def
2020-04-16 14:02:16 -07:00
Jeremy Reizenstein
b87058c62a fix recent lint
Summary: lint clean again

Reviewed By: patricklabatut

Differential Revision: D20868775

fbshipit-source-id: ade4301c1012c5c6943186432465215701d635a9
2020-04-06 06:41:00 -07:00
Roman Shapovalov
e37085d999 Weighted Umeyama.
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
2020-04-03 02:59:11 -07:00
David Novotny
e5b1d6d3a3 Umeyama
Summary:
Umeyama estimates a rigid motion between two sets of corresponding points.

Benchmark output for `bm_points_alignment`

```
Arguments key: [<allow_reflection>_<batch_size>_<dim>_<estimate_scale>_<n_points>_<use_pointclouds>]
Benchmark                                                        Avg Time(μs)      Peak Time(μs) Iterations
--------------------------------------------------------------------------------
CorrespodingPointsAlignment_True_1_3_True_100_False                   7382            9833             68
CorrespodingPointsAlignment_True_1_3_True_10000_False                 8183           10500             62
CorrespodingPointsAlignment_True_1_3_False_100_False                  7301            9263             69
CorrespodingPointsAlignment_True_1_3_False_10000_False                7945            9746             64
CorrespodingPointsAlignment_True_1_20_True_100_False                 13706           41623             37
CorrespodingPointsAlignment_True_1_20_True_10000_False               11044           33766             46
CorrespodingPointsAlignment_True_1_20_False_100_False                 9908           28791             51
CorrespodingPointsAlignment_True_1_20_False_10000_False               9523           18680             53
CorrespodingPointsAlignment_True_10_3_True_100_False                 29585           32026             17
CorrespodingPointsAlignment_True_10_3_True_10000_False               29626           36324             18
CorrespodingPointsAlignment_True_10_3_False_100_False                26013           29253             20
CorrespodingPointsAlignment_True_10_3_False_10000_False              25000           33820             20
CorrespodingPointsAlignment_True_10_20_True_100_False                40955           41592             13
CorrespodingPointsAlignment_True_10_20_True_10000_False              42087           42393             12
CorrespodingPointsAlignment_True_10_20_False_100_False               39863           40381             13
CorrespodingPointsAlignment_True_10_20_False_10000_False             40813           41699             13
CorrespodingPointsAlignment_True_100_3_True_100_False               183146          194745              3
CorrespodingPointsAlignment_True_100_3_True_10000_False             213789          231466              3
CorrespodingPointsAlignment_True_100_3_False_100_False              177805          180796              3
CorrespodingPointsAlignment_True_100_3_False_10000_False            184963          185695              3
CorrespodingPointsAlignment_True_100_20_True_100_False              347181          347325              2
CorrespodingPointsAlignment_True_100_20_True_10000_False            363259          363613              2
CorrespodingPointsAlignment_True_100_20_False_100_False             351769          352496              2
CorrespodingPointsAlignment_True_100_20_False_10000_False           375629          379818              2
CorrespodingPointsAlignment_False_1_3_True_100_False                 11155           13770             45
CorrespodingPointsAlignment_False_1_3_True_10000_False               10743           13938             47
CorrespodingPointsAlignment_False_1_3_False_100_False                 9578           11511             53
CorrespodingPointsAlignment_False_1_3_False_10000_False               9549           11984             53
CorrespodingPointsAlignment_False_1_20_True_100_False                13809           14183             37
CorrespodingPointsAlignment_False_1_20_True_10000_False              14084           15082             36
CorrespodingPointsAlignment_False_1_20_False_100_False               12765           14177             40
CorrespodingPointsAlignment_False_1_20_False_10000_False             12811           13096             40
CorrespodingPointsAlignment_False_10_3_True_100_False                28823           39384             18
CorrespodingPointsAlignment_False_10_3_True_10000_False              27135           27525             19
CorrespodingPointsAlignment_False_10_3_False_100_False               26236           28980             20
CorrespodingPointsAlignment_False_10_3_False_10000_False             42324           45123             12
CorrespodingPointsAlignment_False_10_20_True_100_False              723902          723902              1
CorrespodingPointsAlignment_False_10_20_True_10000_False            220007          252886              3
CorrespodingPointsAlignment_False_10_20_False_100_False              55593           71636              9
CorrespodingPointsAlignment_False_10_20_False_10000_False            44419           71861             12
CorrespodingPointsAlignment_False_100_3_True_100_False              184768          185199              3
CorrespodingPointsAlignment_False_100_3_True_10000_False            198657          213868              3
CorrespodingPointsAlignment_False_100_3_False_100_False             224598          309645              3
CorrespodingPointsAlignment_False_100_3_False_10000_False           197863          202002              3
CorrespodingPointsAlignment_False_100_20_True_100_False             293484          309459              2
CorrespodingPointsAlignment_False_100_20_True_10000_False           327253          366644              2
CorrespodingPointsAlignment_False_100_20_False_100_False            420793          422194              2
CorrespodingPointsAlignment_False_100_20_False_10000_False          462634          485542              2
CorrespodingPointsAlignment_True_1_3_True_100_True                    7664            9909             66
CorrespodingPointsAlignment_True_1_3_True_10000_True                  7190            8366             70
CorrespodingPointsAlignment_True_1_3_False_100_True                   6549            8316             77
CorrespodingPointsAlignment_True_1_3_False_10000_True                 6534            7710             77
CorrespodingPointsAlignment_True_10_3_True_100_True                  29052           32940             18
CorrespodingPointsAlignment_True_10_3_True_10000_True                30526           33453             17
CorrespodingPointsAlignment_True_10_3_False_100_True                 28708           32993             18
CorrespodingPointsAlignment_True_10_3_False_10000_True               30630           35973             17
CorrespodingPointsAlignment_True_100_3_True_100_True                264909          320820              3
CorrespodingPointsAlignment_True_100_3_True_10000_True              310902          322604              2
CorrespodingPointsAlignment_True_100_3_False_100_True               246832          250634              3
CorrespodingPointsAlignment_True_100_3_False_10000_True             276006          289061              2
CorrespodingPointsAlignment_False_1_3_True_100_True                  11421           13757             44
CorrespodingPointsAlignment_False_1_3_True_10000_True                11199           12532             45
CorrespodingPointsAlignment_False_1_3_False_100_True                 11474           15841             44
CorrespodingPointsAlignment_False_1_3_False_10000_True               10384           13188             49
CorrespodingPointsAlignment_False_10_3_True_100_True                 36599           47340             14
CorrespodingPointsAlignment_False_10_3_True_10000_True               40702           50754             13
CorrespodingPointsAlignment_False_10_3_False_100_True                41277           52149             13
CorrespodingPointsAlignment_False_10_3_False_10000_True              34286           37091             15
CorrespodingPointsAlignment_False_100_3_True_100_True               254991          258578              2
CorrespodingPointsAlignment_False_100_3_True_10000_True             257999          261285              2
CorrespodingPointsAlignment_False_100_3_False_100_True              247511          248693              3
CorrespodingPointsAlignment_False_100_3_False_10000_True            251807          263865              3
```

Reviewed By: gkioxari

Differential Revision: D19808389

fbshipit-source-id: 83305a58627d2fc5dcaf3c3015132d8148f28c29
2020-04-02 14:46:51 -07:00