MCPcopy Create free account
hub / github.com/SooLab/CGFormer / RefDataset

Class RefDataset

utils/dataset.py:85–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83
84
85class RefDataset(Dataset):
86 def __init__(self, lmdb_dir, mask_dir, dataset, split, mode, input_size,
87 word_length):
88 super(RefDataset, self).__init__()
89 self.lmdb_dir = lmdb_dir
90 self.mask_dir = mask_dir
91 self.dataset = dataset
92 self.split = split
93 self.mode = mode
94 self.input_size = (input_size, input_size)
95 #self.mask_size = [13, 26, 52]
96 self.word_length = word_length
97 self.mean = torch.tensor([0.485, 0.456, 0.406]).reshape(3, 1, 1)
98 self.std = torch.tensor([0.229, 0.224, 0.225]).reshape(3, 1, 1)
99 self.length = info[dataset][split]
100 self.env = None
101 # self.coco_transforms = make_coco_transforms(mode, cautious=False)
102
103 def _init_db(self):
104 self.env = lmdb.open(self.lmdb_dir,
105 subdir=os.path.isdir(self.lmdb_dir),
106 readonly=True,
107 lock=False,
108 readahead=False,
109 meminit=False)
110 with self.env.begin(write=False) as txn:
111 self.length = loads_pyarrow(txn.get(b'__len__'))
112 self.keys = loads_pyarrow(txn.get(b'__keys__'))
113
114 def __len__(self):
115 return self.length
116
117 def __getitem__(self, index):
118 # Delay loading LMDB data until after initialization: https://github.com/chainer/chainermn/issues/129
119 if self.env is None:
120 self._init_db()
121 env = self.env
122 with env.begin(write=False) as txn:
123 byteflow = txn.get(self.keys[index])
124 ref = loads_pyarrow(byteflow)
125 # img
126 ori_img = cv2.imdecode(np.frombuffer(ref['img'], np.uint8),
127 cv2.IMREAD_COLOR)
128 img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
129 img_size = img.shape[:2]
130 # mask
131 seg_id = ref['seg_id']
132 mask_dir = os.path.join(self.mask_dir, str(seg_id) + '.png')
133 # sentences
134 idx = np.random.choice(ref['num_sents'])
135 sents = ref['sents']
136 # transform
137 # mask transform
138 mask = cv2.imdecode(np.frombuffer(ref['mask'], np.uint8),
139 cv2.IMREAD_GRAYSCALE)
140 mask = mask / 255.
141 if self.mode == 'train':
142 sent = sents[idx]

Callers 2

main_workerFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by 1

mainFunction · 0.72