VinAIResearch / GaPro

GaPro: Box-Supervised 3D Point Cloud Instance Segmentation Using Gaussian Processes as Pseudo Labelers (ICCV 2023)
Apache License 2.0
18 stars 1 forks source link

IndexError: boolean index did not match indexed array along dimension 0; dimension is 1199 but corresponding boolean dimension is 127533 #2

Open Ckeai opened 8 months ago

Ckeai commented 8 months ago

Hello, I am very interested in your work. While replicating your code, I encountered an issue, as shown in the attached image. During training, the dimensions of valid_idxs do not match with the dimensions of the mean label mu_label. The mu_label is generated in the pseudo-label generation part of the code. This issue has been troubling me for quite some time, and I would appreciate your guidance on this matter. IndexError

Traceback (most recent call last): File "tools/train.py", line 351, in main() File "tools/train.py", line 342, in main train(epoch, model, optimizer, scheduler, scaler, train_loader, cfg, logger, writer) File "tools/train.py", line 64, in train for i, batch in enumerate(train_loader, start=1): File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 681, in next data = self._next_data() File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1376, in _next_data return self._process_data(data) File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1402, in _process_data data.reraise() File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/_utils.py", line 461, in reraise raise exception IndexError: Caught IndexError in DataLoader worker process 0. Original Traceback (most recent call last): File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop data = fetcher.fetch(index) File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/WANGboyue/wbw/anaconda3/envs/gapro_backup/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/WANGboyue/wbw/GaPro-master/ISBNet/isbnet/data/custom.py", line 174, in getitem self.transform_train(xyz, rgb, semantic_label, instance_label, prob_label, mu_label, var_label, spp) File "/WANGboyue/wbw/GaPro-master/ISBNet/isbnet/data/custom.py", line 148, in transform_train mu_label = mu_label[valid_idxs] IndexError: boolean index did not match indexed array along dimension 0; dimension is 1199 but corresponding boolean dimension is 127533

ngoductuanlhp commented 7 months ago

Could you double-check the initial shape of the semantic_label, instance_label, prob_label, mu_label when loading at here? If you process the pseudo-label correctly, all these tensors have the similar shape of (N) where N is the total number of points.

Ckeai commented 7 months ago

I followed the readme, but the variance and mean of the processed pseudo-labels are indeed incorrect in dimension.

Stay-Naive commented 6 months ago

I came across the same problem. Do you have any idea now to solve this problem? @ngoductuanlhp @Ckeai By the way, when I check the code in gen_ps.py, the wall_box confused me. In gapro/scannet_planes.py/get_wall_boxes, this part of data seems to come from dataset/scannetv2/scannet_planes/. However, I downloaded and prepared the scannet dataset following the document, and I did not have this part of data. Also, I did not see any instruction about this.