RPMNet icon indicating copy to clipboard operation
RPMNet copied to clipboard

Confusion of the logic in forward pipeline.

Open JarvisLee0423 opened this issue 1 year ago • 7 comments

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?

JarvisLee0423 avatar Mar 21 '23 08:03 JarvisLee0423

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.

yewzijian avatar Mar 21 '23 10:03 yewzijian

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.

JarvisLee0423 avatar Mar 21 '23 10:03 JarvisLee0423

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.

yewzijian avatar Mar 21 '23 10:03 yewzijian

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.

JarvisLee0423 avatar Mar 21 '23 10:03 JarvisLee0423

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.

yewzijian avatar Mar 21 '23 10:03 yewzijian

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

JarvisLee0423 avatar Mar 21 '23 11:03 JarvisLee0423

Yes

yewzijian avatar Mar 21 '23 11:03 yewzijian