Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A question about the result of 3DRegNet. #12

Closed
QWTforGithub opened this issue Jan 14, 2022 · 4 comments
Closed

A question about the result of 3DRegNet. #12

QWTforGithub opened this issue Jan 14, 2022 · 4 comments

Comments

@QWTforGithub
Copy link

Hi, thank you very much for your well-organized pointDSC code. I noticed the experimental result of 3DRegNet on 3DMatch in your paper. Would you like to provide the code of 3DRegNet on 3DMatch? Thank you very much!

@XuyangBai
Copy link
Owner

Hi, thanks for your interest. As shown in our paper (Supplementary 7.2) 3DRegNet does not work well on 3DMatch with their registration block so I only use the classification block to produce the inlier probability. Then 3DRegNet becomes a variant of PointCN (Learning to find good correspondence paper) which is the same as the following module (but you should uncomment the InstanceNorm first). I believe you can quickly derive a 3DRegNet model and use our implementation to train it by yourself.

for i in range(num_layers):
layer = nn.Sequential(
nn.Conv1d(num_channels, num_channels, kernel_size=1, bias=True),
# nn.InstanceNorm1d(num_channels),
nn.BatchNorm1d(num_channels),
nn.ReLU(inplace=True)
)
self.blocks[f'PointCN_layer_{i}'] = layer

@QWTforGithub
Copy link
Author

Thank you very much for your reply. I'd like to confirm again:

  1. Uncomment # nn.InstanceNorm1d(num_channels)
  2. comment Self.blocks [f'NonLocal_layer_{I}'] = NonLocalBlock(num_channels)
    Should I do this?

@XuyangBai
Copy link
Owner

Yes, that setting is what I used during my experiment.

@QWTforGithub
Copy link
Author

Hi, thanks for your interest. As shown in our paper (Supplementary 7.2) 3DRegNet does not work well on 3DMatch with their registration block so I only use the classification block to produce the inlier probability. Then 3DRegNet becomes a variant of PointCN (Learning to find good correspondence paper) which is the same as the following module (but you should uncomment the InstanceNorm first). I believe you can quickly derive a 3DRegNet model and use our implementation to train it by yourself.

for i in range(num_layers):
layer = nn.Sequential(
nn.Conv1d(num_channels, num_channels, kernel_size=1, bias=True),
# nn.InstanceNorm1d(num_channels),
nn.BatchNorm1d(num_channels),
nn.ReLU(inplace=True)
)
self.blocks[f'PointCN_layer_{i}'] = layer

And, I only use classified loss to train the network, i.e. BCE loss in pointDSC?

Yes, that setting is what I used during my experiment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants