yewzijian / RPMNet

RPM-Net: Robust Point Matching using Learned Features (CVPR2020)
MIT License
344 stars 59 forks source link

Confusion of the logic in forward pipeline. #36

Open JarvisLee0423 opened 1 year ago

JarvisLee0423 commented 1 year ago

Hi, I got another problem about the details of your network design.

For each iteration, you will update the source point cloud before feeding it into the feature extraction network. According to your implementation, in details, you extract the features from the transformed source points cloud and reference points cloud, and then compute the transformation at this interation by using the extracted features.

Afterwards, you will use the computed transformation to multiply with the original source point cloud to obtain the input source point clouds for the next iteration every time.

In my opinion, this pipeline is OK for the first iteration, since the featrues are extracted from the original source and reference points cloud at the begining, therefore, it is natural to compute the transformation between the original source and reference points cloud based on these features.

However, for the remaining iterations, the features are extracted from the transformed source points cloud and original reference points cloud. It seems that the transformation computed from these features are the alignment of the transformed source points cloud and original reference points cloud, thus, the new transformed source points cloud should be computed by using the previous transformed points cloud and currently computed transformation, rather than the original points cloud and the present transformation.

I am a little bit confused by these, and want to know why don't you implement the forward pipeline like this. Is there any other considerations?

yewzijian commented 1 year ago

The features are used to establish correspondences. You can assign it to either the 1) transformed source point cloud and compute the incremental transform, or 2) original source point cloud and compute the required transform at one go. Both are equivalent.

JarvisLee0423 commented 1 year ago

I see. But in this case, the correspondence you found is based on transformed points cloud and reference one. Dose it make sense to use the transformed based correspondence to compute the original transformation? If it must be align correctly, maybe the first method is more understandable.

yewzijian commented 1 year ago

Not sure if I understand what you mean. Since I use the original source coordinates in each iteration when computing the transform, the transform is with respect to the original point cloud.

JarvisLee0423 commented 1 year ago

Yes, I understand what you mean. But in your code, when you find the correspondence between two points cloud, you used transformed source and original reference. After that, the new transformation computed from the above correspondence is used to transform the original source to original reference. Therefore, here I think it is not alignment. The transformed based correspondence is used to compute the original transformation.

yewzijian commented 1 year ago

The original source and transformed source point clouds are the same point cloud with the same ordering, just with different poses.

The features help to find which points correspond to each other, i.e. i'th point in source corresponds to j'th point in reference. Even though the features are computed from the transformed source point cloud, it is valid for the original source point cloud since the point ordering is the same.

JarvisLee0423 commented 1 year ago

Oh, I see. Thanks for your explanation! So, for the results, I can just use the last transformation to do the registration.

yewzijian commented 1 year ago

Yes