chrischoy / FCGF

Fully Convolutional Geometric Features: Fast and accurate 3D features for registration and correspondence.
MIT License
634 stars 111 forks source link

Question on util/transform_estimation.py est_quad_linear_robust() #18

Open FengQiaojun opened 4 years ago

FengQiaojun commented 4 years ago

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

chrischoy commented 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.

FengQiaojun commented 4 years ago

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?

heiwang1997 commented 4 years ago

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?

chrischoy commented 4 years ago

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.

heiwang1997 commented 4 years ago

Thank you so much for your clarification!