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

Question about the difference between PVCNN and SPVCNN #19

Closed
jialeli1 opened this issue Nov 27, 2020 · 4 comments
Closed

Question about the difference between PVCNN and SPVCNN #19

jialeli1 opened this issue Nov 27, 2020 · 4 comments

Comments

@jialeli1
Copy link

Awesome performance!

If the NAS part is excluded, is it just that the sparse 3D convolution is added to SPVCNN, compared to PVCNN? However, I thought you already used the sparse 3D convolution in PVCNN when I read PVCNN some time ago. After all, you have already cited the sparse 3D convolution and SECOND in PVCNN.

If the answer is yes, I feel very regret that I missed this idea.

@kentang-mit
Copy link
Collaborator

kentang-mit commented Nov 27, 2020

Hello,

We actually didn't use sparse 3D convolution in PVCNN. Besides this apparent difference, another important difference in SPVCNN and PVCNN is that the voxelization / devoxelization operations are more challenging, therefore we don't want to have too many SPVConv layers.

Best,
Haotian

@chaitjo
Copy link

chaitjo commented Dec 15, 2020

Hi @kentangSJTU, I had a quick follow-up on this discussion:

the voxelization / devoxelization operations are more challenging, therefore we don't want to have too many SPVConv layers

Do you mean that the voxelization/devoxelization operations for sparse tensors are more time costly in the SPVConv layers compared to PVConv (i.e. dense 3D convolution)? Any further insight would be very helpful.

@kentang-mit
Copy link
Collaborator

Hi @chaitjo,

Thanks for your interest. For dense tensors, we can directly infer a point's memory location given its coordinates (coordinate x,y,z will correspond to memory location x * y_max * z_max + y * z_max + z). However, for sparse tensors, there is no such property, and we have to rely on hash map query to obtain the memory location of a point given its coordinates. Therefore, voxelization and devoxelization operations can be slower.

Best,
Haotian

@chaitjo
Copy link

chaitjo commented Dec 16, 2020

Thanks for the explanation!

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

3 participants