ouenal / scribblekitti

Scribble-Supervised LiDAR Semantic Segmentation, CVPR 2022 (ORAL)
https://ouenal.github.io/scribblekitti/
142 stars 17 forks source link

Error while creating Pseudo-Labels #6

Closed LeonRuddat closed 2 years ago

LeonRuddat commented 2 years ago

Hi, I would like to get Scribble Kitti running on my own data. For this I have already created my own scribble labels. Because I don't have point labels, I downloaded the checkpoint of the first step and ran save.py with it. That worked smoothly. But when I run the crb with the generated h5-file I get the following error:

  Determining global threshold k^(c,r)...
  0%|                                                                                                                                                                                                | 0/19130 
  [00:00<?, ?it/s]
  Traceback (most recent call last):
  File "crb.py", line 65, in <module>
    mask = pred[bin_mask] == j
  IndexError: boolean index did not match indexed array along dimension 0; dimension is 1 but corresponding boolean dimension is 124668

At first I thought that maybe it is because of my data. But the error also occurs when I use your scribbles. I have not changed anything in the code. Here is a link to the h5-file i created with your labels after downloading the step1-checkpoint. I just thought I would ask. Maybe it's something trivial that I haven't noticed.

Thank's in advance!

Best Regards Leon

ouenal commented 2 years ago

I couldn't recreate this with the h5 file I have. Maybe when tidying up the code I might've introduced an error into the code. I will take a look at this over the week and get back to you.

But from what I understand the issue is just dimension mismatches. It might stem from a couple of things so it's hard to say with just this error message. Can you try printing the shapes of pred and bin_mask? To hotfix the issue, you can try reshaping, or squeeze/unsqueezing to match the dimensions.

LeonRuddat commented 2 years ago

hey, first of all thanks for your quick answer. I did not chance anything in the code, so this can't be the cause of the issue. Might be environment related. Did you only test it with your h5 or did you also try mine? Can you you provide yours, so i can test it on my machine? ATM I am working on getting an Environment running on another machine. Maybe this will work. I will provide the prints when my training is done.

ouenal commented 2 years ago

I checked with your h5-file and could recreate the issue. I don't have the corresponding data (LiDAR/labels) so I can't run the entire thing. Here is a quick hotfix. You can change the following lines in crb.py as follows: L43 'conf': np.empty((len(ds)*104126,)), L51 pred = hf[os.path.join(label_path_, 'pred')][()].squeeze(0) L52 conf = hf[os.path.join(label_path_, 'conf')][()].squeeze(0) as well as L87 and L88. There appears to be a redundant dimension in the saved predictions and confidences. I am not pushing this to repository just yet. I want to first test this on my end later this week by generating the h5-file from scratch and running CRB. I will update the repository accordingly afterwards. In the mean time this should fix things.

LeonRuddat commented 2 years ago

Runs smoothly now! Still weird that I randomly added the dimension to the h5. Thanks alot! :)