filaPro / oneformer3d

[CVPR2024] OneFormer3D: One Transformer for Unified Point Cloud Segmentation
Other
348 stars 32 forks source link

CUDA Memory not enough #24

Closed boxiao-wv closed 8 months ago

boxiao-wv commented 9 months ago

Dear filaPro,

Thanks for the amazing work! I am trying to train on S3DIS dataset, however, the training always breaks at around epoch 15 due to not enough cuda memory. I have a RTX4090 with 24GB memory. Could you provide some hints of how to adjust the config file to let the training fit into 24GB memory?

Thanks a lot!

filaPro commented 9 months ago

Hi, Please try #11.

boxiao-wv commented 9 months ago

Hi, Please try #11.

Hey Danila,

Thanks a lot! I reduced the PointSample_ to 100k, now the training seems to be fine.

I have some questions concerning the instance segmentation on S3DIS. In the return value of the function predict_by_feat, I assume the length of instance_labels is how many objects/instances are detected and their classes are the array values, and instance_labels reflects the confidence of each prediction. inst_res[0] is the mask for each instances (and I think each point can be potentially assigned to multiple instances, so they are not mutually exclusive, right?).

However, I am a bit confused by the pts_instance_mask, why you append pan_res[1] to the list? I wasn't able to fully understand the function pred_pan. Why does pan_res[1] belong to pts_instance_mask?

pts_instance_mask is essential to visualize the instance segmentation results, which elements of the list should I use to color the original point clouds? If using pts_instance_mask[0], how do you usually deal with the overlapping points between instances?

Many many thanks for your time!

filaPro commented 9 months ago
  1. yes predicted masks may intersect
  2. in pts_semantic_mask we keep semantic predictions for semantic and panoptic segmentation; in pts_instance_mask we keep instance predictions for instance and panoptic segmentation. each of these 4 things is (a bit) different from one another
  3. just keep the predictions with instance_score more than some threshold e.g. 0.3 and there will be not to much intersections. for visualization we just sort them by this score and start painting from the highest