66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
# Copyright (c) OpenMMLab. All rights reserved.
|
|
import json
|
|
import os.path as osp
|
|
from typing import Callable, Dict, List, Optional, Sequence, Union
|
|
|
|
from mmseg.registry import DATASETS
|
|
from .basesegdataset import BaseSegDataset
|
|
|
|
# LEGEND = [
|
|
# 255 255 255; % Background
|
|
# 0 0 0; % Roads
|
|
# 100 100 100; % Buildings
|
|
# 0 125 0; % Trees
|
|
# 0 255 0; % Grass
|
|
# 150 80 0; % Bare Soil
|
|
# 0 0 150; % Water
|
|
# 255 255 0; % Railways
|
|
# 150 150 255]; % Swimming Pools
|
|
|
|
@DATASETS.register_module()
|
|
class C2SFloodDataset(BaseSegDataset):
|
|
"""Zurich dataset.
|
|
|
|
In segmentation map annotation for LoveDA, 0 is the ignore index.
|
|
``reduce_zero_label`` should be set to True. The ``img_suffix`` and
|
|
``seg_map_suffix`` are both fixed to '.png'.
|
|
"""
|
|
METAINFO = dict(
|
|
classes=('Background', 'Water', 'Cloud', 'Cloud shadow'),
|
|
palette=[[0,0,0], [255,255,255], [255,0,0], [0,255,0]]
|
|
)
|
|
def __init__(self,
|
|
img_suffix='.npz',
|
|
seg_map_suffix='.npz',
|
|
reduce_zero_label=False,
|
|
**kwargs) -> None:
|
|
super().__init__(
|
|
img_suffix=img_suffix,
|
|
seg_map_suffix=seg_map_suffix,
|
|
reduce_zero_label=reduce_zero_label,
|
|
**kwargs)
|
|
|
|
def load_data_list(self) -> List[dict]:
|
|
"""Load annotation from directory or annotation file.
|
|
|
|
Returns:
|
|
list[dict]: All data info of dataset.
|
|
"""
|
|
data_list = []
|
|
if not osp.isdir(self.ann_file) and self.ann_file:
|
|
assert osp.isfile(self.ann_file), \
|
|
f'Failed to load `ann_file` {self.ann_file}'
|
|
lines = json.load(open(self.ann_file))
|
|
for line in lines:
|
|
# img_name = line.strip()
|
|
data_info = dict(
|
|
img_path=osp.join(self.data_root, line['s2_path']))
|
|
if 'target_path' in line.keys():
|
|
data_info['seg_map_path'] = osp.join(self.data_root, line['target_path'])
|
|
data_info['label_map'] = self.label_map
|
|
data_info['reduce_zero_label'] = self.reduce_zero_label
|
|
data_info['seg_fields'] = []
|
|
data_list.append(data_info)
|
|
data_list = sorted(data_list, key=lambda x: x['img_path'])
|
|
return data_list
|