Open FengQiaojun opened 4 years ago
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.
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?
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?
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.
Thank you so much for your clarification!
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