Closed Yang-Li-2000 closed 1 year ago
Hi,
(1) The val_cylinder_asym_ood.py. is to generate and store the uncertainty score for every point. After that, you should use our semantic_kitti_api or nuScenes_api to evaluate the open-set performance based on the stored uncertainty files. The unknown class for open-set evaluation is at https://github.com/Jun-CEN/semantic_kitti_api/blob/bd918e4b3f143d1f12132b5b5e586abf5f0c7149/auxiliary/np_ioueval.py#L86-L87 (2) K^{sk} is the unknown class for SemanticKITTI dataset, and K^{ns} is the unknown class for nuScenes dataset. So for SemanticKITTI, the unknown class is only other-vehicle.
I am still confused about the class indices for unseen objects when using semantic kitti dataset. What are the differences between class 5 and class 20 in voxel_label_origin in train_cylinder_asym_ood_final.py?
Hi,
The unknown class in SemanticKITTI is only 5. The 20 in train_cylinder_asym_ood_final.py is the position of our dummy classifier. In other words, the probability of unknown class is at the 20th position of the logits. loss_dummy means the second largest probability should be the unknown class, which refers to the model calibration technique in the paper.
In the repo "semantic_kitti_api-master", it seems that the class index for unseen classes is 5 after mapping, which corresponds to class 13, 16, 20, 99, 256, 257, and 259 before mapping.
In val_cylinder_asym_ood.py in the repo "Open_world_3D_semantic_segmentation", in contrast, there does not seem to be a class for unseen objects. It looks like a few classifiers (self.logits2 in forward_dummy_final in segmentator_3d_asymm_spconv.py) are specialized for producing uncertainty scores for unseen classes. However, it is not clear which class corresponds to the unseen class.
Additionally, in Section 5.1 of the paper, novel classes are defined to be {barrier, construction-vehicle, tra ffi c-cone, trailer}.
In semantic-kitti.yaml in both of the repos, however, there does not seem to exist barrier, construction-vehicle, tra ffi c-cone, or trailer.
I am confused about how to tell which points belong to the unseen class when running val_cylinder_asym_ood.py.