in modified_mmseg/datasets/pipelines/loading.py [0:0]
def __call__(self, results):
"""Call function to load multiple types annotations.
Args:
results (dict): Result dict from :obj:`mmseg.CustomDataset`.
Returns:
dict: The dict contains loaded semantic segmentation annotations.
"""
if self.file_client is None:
self.file_client = mmcv.FileClient(**self.file_client_args)
if results.get('seg_prefix', None) is not None:
filename = osp.join(results['seg_prefix'],
results['ann_info']['seg_map'])
else:
filename = results['ann_info']['seg_map']
img_bytes = self.file_client.get(filename)
gt_semantic_seg = mmcv.imfrombytes(
img_bytes, flag='unchanged',
backend=self.imdecode_backend).squeeze().astype(np.uint8)
# modify if custom classes
if results.get('label_map', None) is not None:
for old_id, new_id in results['label_map'].items():
gt_semantic_seg[gt_semantic_seg == old_id] = new_id
# reduce zero_label
if self.reduce_zero_label:
# avoid using underflow conversion
gt_semantic_seg[gt_semantic_seg == 0] = 255
gt_semantic_seg = gt_semantic_seg - 1
gt_semantic_seg[gt_semantic_seg == 254] = 255
results['gt_semantic_seg'] = gt_semantic_seg
results['seg_fields'].append('gt_semantic_seg')
if results.get('dt_prefix', None) is not None:
dt_filename = osp.join(results['dt_prefix'],
results['img_info']['dt']['dt_map'])
else:
dt_filename = results['dt']['dt_map']
dct = self._load_mat(dt_filename)
distance_map = dct['depth'].astype(np.int32)
dir_deg = dct['dir_deg'].astype(np.float) # in [0, 360 / deg_reduce]
deg_reduce = dct['deg_reduce'][0][0]
dir_deg = deg_reduce * dir_deg - 180 # in [-180, 180]
# import ipdb; ipdb.set_trace()
results['distance_map'] = distance_map
results['angle_map'] = dir_deg
results['seg_fields'].append('distance_map')
results['seg_fields'].append('angle_map')
return results