|
import json |
|
import cv2 |
|
import os |
|
from basicsr.utils import img2tensor |
|
|
|
|
|
class dataset_coco_mask_color(): |
|
def __init__(self, path_json, root_path_im, root_path_mask, image_size): |
|
super(dataset_coco_mask_color, self).__init__() |
|
with open(path_json, 'r', encoding='utf-8') as fp: |
|
data = json.load(fp) |
|
data = data['annotations'] |
|
self.files = [] |
|
self.root_path_im = root_path_im |
|
self.root_path_mask = root_path_mask |
|
for file in data: |
|
name = "%012d.png" % file['image_id'] |
|
self.files.append({'name': name, 'sentence': file['caption']}) |
|
|
|
def __getitem__(self, idx): |
|
file = self.files[idx] |
|
name = file['name'] |
|
|
|
im = cv2.imread(os.path.join(self.root_path_im, name.replace('.png', '.jpg'))) |
|
im = cv2.resize(im, (512, 512)) |
|
im = img2tensor(im, bgr2rgb=True, float32=True) / 255. |
|
|
|
mask = cv2.imread(os.path.join(self.root_path_mask, name)) |
|
mask = cv2.resize(mask, (512, 512)) |
|
mask = img2tensor(mask, bgr2rgb=True, float32=True) / 255. |
|
|
|
sentence = file['sentence'] |
|
return {'im': im, 'mask': mask, 'sentence': sentence} |
|
|
|
def __len__(self): |
|
return len(self.files) |
|
|