r"""Evaluate panoptic results for Semantickitti and NuScenes. Please refer to the `semantic kitti api `_ for more details Args: classes (list): Classes used in the dataset. thing_classes (list): Thing classes used in the dat
| 9 | |
| 10 | |
| 11 | class EvalPanoptic: |
| 12 | r"""Evaluate panoptic results for Semantickitti and NuScenes. |
| 13 | Please refer to the `semantic kitti api |
| 14 | <https://github.com/PRBonn/semantic-kitti-api/>`_ for more details |
| 15 | |
| 16 | Args: |
| 17 | classes (list): Classes used in the dataset. |
| 18 | thing_classes (list): Thing classes used in the dataset. |
| 19 | stuff_classes (list): Stuff classes used in the dataset. |
| 20 | include (list): Include classes in the dataset. |
| 21 | dataset_type (str): Type of dataset. |
| 22 | min_num_points (int): Minimum number of points of an object to be |
| 23 | counted as ground truth in evaluation. |
| 24 | id_offset (int): Offset for instance ids to concat with |
| 25 | semantic labels. |
| 26 | label2cat (dict[str]): Mapping from label to category. |
| 27 | ignore_index (int): Indices of ignored classes in evaluation. |
| 28 | logger (logging.Logger | str, optional): Logger used for printing. |
| 29 | Defaults to None. |
| 30 | """ |
| 31 | |
| 32 | def __init__(self, |
| 33 | classes: List[str], |
| 34 | thing_classes: List[str], |
| 35 | stuff_classes: List[str], |
| 36 | include: List[int], |
| 37 | dataset_type: str, |
| 38 | min_num_points: int, |
| 39 | id_offset: int, |
| 40 | label2cat: Dict[str, str], |
| 41 | ignore_index: int, |
| 42 | logger: MMLogger = None): |
| 43 | self.classes = classes |
| 44 | self.thing_classes = thing_classes |
| 45 | self.stuff_classes = stuff_classes |
| 46 | self.include = include |
| 47 | self.dataset_type = dataset_type |
| 48 | self.ignore_index = ignore_index |
| 49 | self.num_classes = len(classes) |
| 50 | self.print_ignore_label=True |
| 51 | if len(include) == self.num_classes: |
| 52 | self.num_classes += 1 |
| 53 | self.print_ignore_label=False |
| 54 | self.label2cat = label2cat |
| 55 | self.logger = logger |
| 56 | self.id_offset = id_offset |
| 57 | self.eps = 1e-15 |
| 58 | self.min_num_points = min_num_points |
| 59 | self.reset() |
| 60 | |
| 61 | def reset(self): |
| 62 | """Reset class variables.""" |
| 63 | # general things |
| 64 | # iou stuff |
| 65 | self.confusion_matrix = np.zeros((self.num_classes, self.num_classes), |
| 66 | dtype=int) |
| 67 | # panoptic stuff |
| 68 | self.pan_tp = np.zeros(self.num_classes, dtype=int) |