FCGF icon indicating copy to clipboard operation
FCGF copied to clipboard

Question on util/transform_estimation.py est_quad_linear_robust()

Open FengQiaojun opened this issue 5 years ago • 5 comments
trafficstars

Hi Chris,

Thank you for sharing the code!

I wonder which algorithm is using here for transformation estimation in the util/transform_estimation.py. Can you point out the reference?

Thanks! Qiaojun

FengQiaojun avatar Feb 25 '20 00:02 FengQiaojun

It's used in https://github.com/chrischoy/FCGF/blob/master/lib/trainer.py#L329. Both transformation estimation and ContrastiveLossTrainer are kind of legacy code we do not use for training FCGFs.

chrischoy avatar Feb 25 '20 00:02 chrischoy

Is the ContrastiveLossTrainer associated with the "Contrastive" mentioned in the Table 3 of the paper?

I see. I am just curious what algorithm it is using here transform_estimation.py. The build_linear_system(), and the solve_linear_system(). Do you still remember that?

FengQiaojun avatar Feb 25 '20 00:02 FengQiaojun

Hi @FengQiaojun , I am reading FCGF's code recently. For me, this seems like an iterative re-weighted least square problem with Cauchy robust kernel and the parameter in the M-estimator is changed heuristically.

More specifically, we want to solve for $argmin_T \rho (Tx - y)$, where x is pts0 and y is pts1 as in the code and $\rho$ is Cauchy M-estimator (per Table1 in https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/RR-2676.pdf). In each Gauss-Newton iteration, the jacobian of $Tx-y$ (aka. variable A) is computed by parametrizing the rotation part of $T$ using Euler angle (ref. https://robotacademy.net.au/lesson/derivative-of-a-rotation-matrix/). In solve_linear_system() the normal equation $A^\top A x = A^\top b$ is solved to compute the delta transform, which will be eventually applied to the final estimated transformation.

However, I am still wondering why won't the authors simply pick a Kabsch algorithm. Will different choices of transformation fitting algorithm affect the registration recall metrics?

heiwang1997 avatar Apr 19 '20 09:04 heiwang1997

The method used in solve_linear_system is a simpler version of FGR. For the final registration recall, we use the original authors matlab code that uses RANSAC as I have explained in the evaluation section of the readme file.

chrischoy avatar Apr 19 '20 15:04 chrischoy

Thank you so much for your clarification!

heiwang1997 avatar Apr 19 '20 18:04 heiwang1997