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

Would you show how SSTNet work on the S3DIS? #3

Open
Taochen12138 opened this issue Sep 26, 2021 · 11 comments
Open

Would you show how SSTNet work on the S3DIS? #3

Taochen12138 opened this issue Sep 26, 2021 · 11 comments
Labels
good first issue Good for newcomers

Comments

@Taochen12138
Copy link

I only see the scannetv2 config while your article show the results on both s3dis and scannetv2.
Can you release the code of s3dis?

@lzhnb
Copy link
Member

lzhnb commented Sep 26, 2021

Hi, thank you very much for your attention to our work.
I also foresee that someone will ask S3DIS related questions, so I hope to give a unified reply to this question here.

The code of S3DIS is too messy and I do not have enough time to organize it.

I will tell you some details about the S3DIS.

  1. The dataset and preprocess API can refer to gorilla3d's preprocess and gorilla3d's datasets. The voxelization parameters follow ScanNet's, you can see it in the default parameters in S3DISInstDev
  2. The superpoints of S3DIS are generated by the superpoint-graph, you just need to download the pretrained model and follow their S3DIS.md, and you can get the superpoints of S3DIS.
  3. In the training network setting, the S3DIS's setting is strange, it treat the cell/floor/wall as instances. And we found that most scenes just have one cell and one floor, so we will group all cell/floor points as one instance, while this operation will damage the performance slightly. And for the walls, we treat them as normal object instances.(We consider that each scene may have several walls)

I feel sorry for this. And I hope these can help you.

@Taochen12138
Copy link
Author

Taochen12138 commented Sep 26, 2021

I do appreciate for your quick reply.
Now, I have already finished the second step above. The superpoints are generated.
Since the scannetv2 is too large, I still downloading it and I try to apply s3dis directly to the network.
Here is a special question. From 146 line to 150 line in scannetv2.py, the superpoints and xyz uses the same valid_idx array. So I assume that superpoints and xyz has the same shape. But the superpoints I generate seems have a different shape. If it means I got some mistake or misunderstanding?

Here is the code:

xyz_middle = xyz_middle[valid_idxs]
xyz = xyz[valid_idxs]
rgb = rgb[valid_idxs]
semantic_label = semantic_label[valid_idxs]
superpoint = np.unique(superpoint[valid_idxs], return_inverse=True)[1]

@lzhnb
Copy link
Member

lzhnb commented Sep 26, 2021

You are right. The 0-dim of superpoint ids should be equal to xyz's.

And superpoint generation in superpoint_graph will vocalize the point cloud S3DIS first, so it will downsample the number.

I guess that the superpoint_graph processing may return a point-to-voxel map, which can help you realize this.(assign the superpoint id for each point).
You can read the code in superpoint_graph partition.

I'm sorry that I forget some details about it.

@Taochen12138
Copy link
Author

Thank you.
I think I get what I need, like the image shows.
image

@lzhnb lzhnb closed this as completed Oct 9, 2021
@lzhnb lzhnb added the good first issue Good for newcomers label Oct 12, 2021
@lzhnb lzhnb reopened this Nov 10, 2021
@yangxin6
Copy link

Thank you. I think I get what I need, like the image shows. image
I’m also dealing with a dataset that is similar to S3DIS recently. Can you share your code on S3DIS datasets?

@SijanNeupane49
Copy link

Hi, Could you please share your code on S3DIS datasets? I would be grateful if you could do that for me I am in dire need of the code for S3DIS dataset. Please. Thank you in advance.

@lzhnb
Copy link
Member

lzhnb commented Feb 11, 2022

Hi, Could you please share your code on S3DIS datasets? I would be grateful if you could do that for me I am in dire need of the code for S3DIS dataset. Please. Thank you in advance.

The code for S3DIS dataset has been released in gorilla3d.

@SijanNeupane49
Copy link

@lzhnb Thank you for your quick reply. However,I have got some error and raised another issue . It would be really helpful if you could help me with that issue.

@SijanNeupane49
Copy link

I do appreciate for your quick reply. Now, I have already finished the second step above. The superpoints are generated. Since the scannetv2 is too large, I still downloading it and I try to apply s3dis directly to the network. Here is a special question. From 146 line to 150 line in scannetv2.py, the superpoints and xyz uses the same valid_idx array. So I assume that superpoints and xyz has the same shape. But the superpoints I generate seems have a different shape. If it means I got some mistake or misunderstanding?

Here is the code:

xyz_middle = xyz_middle[valid_idxs] xyz = xyz[valid_idxs] rgb = rgb[valid_idxs] semantic_label = semantic_label[valid_idxs] superpoint = np.unique(superpoint[valid_idxs], return_inverse=True)[1]

@Taochen12138 How could you solve the second step? How did you generate superpoints? Please help me. Thank you in advance.

@SijanNeupane49
Copy link

@lzhnb

I do appreciate for your quick reply. Now, I have already finished the second step above. The superpoints are generated. Since the scannetv2 is too large, I still downloading it and I try to apply s3dis directly to the network. Here is a special question. From 146 line to 150 line in scannetv2.py, the superpoints and xyz uses the same valid_idx array. So I assume that superpoints and xyz has the same shape. But the superpoints I generate seems have a different shape. If it means I got some mistake or misunderstanding?

Here is the code:

xyz_middle = xyz_middle[valid_idxs] xyz = xyz[valid_idxs] rgb = rgb[valid_idxs] semantic_label = semantic_label[valid_idxs] superpoint = np.unique(superpoint[valid_idxs], return_inverse=True)[1]

Thank you. I think I get what I need, like the image shows. image

Hi, how did you solve the issue as I am also getting dimension mismatch error, where it says my dimension of superpoint graph is not the same as the dimension of semantic label? It would be immense help if you could give me some suggestions. Thank you in advance.

@xuxiaoxxxx
Copy link

@lzhnb

I do appreciate for your quick reply. Now, I have already finished the second step above. The superpoints are generated. Since the scannetv2 is too large, I still downloading it and I try to apply s3dis directly to the network. Here is a special question. From 146 line to 150 line in scannetv2.py, the superpoints and xyz uses the same valid_idx array. So I assume that superpoints and xyz has the same shape. But the superpoints I generate seems have a different shape. If it means I got some mistake or misunderstanding?
Here is the code:
xyz_middle = xyz_middle[valid_idxs] xyz = xyz[valid_idxs] rgb = rgb[valid_idxs] semantic_label = semantic_label[valid_idxs] superpoint = np.unique(superpoint[valid_idxs], return_inverse=True)[1]

Thank you. I think I get what I need, like the image shows. image

Hi, how did you solve the issue as I am also getting dimension mismatch error, where it says my dimension of superpoint graph is not the same as the dimension of semantic label? It would be immense help if you could give me some suggestions. Thank you in advance.

Hi, do you slove this problem? I also meet this problem.

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

No branches or pull requests

5 participants