Example #1
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = decode_int_filename(name)

        img = imageio.imread(get_img_path(name_str, self.voc12_root))

        ms_img_list = []
        for s in self.scales:
            if s == 1:
                s_img = img
            else:
                s_img = imutils.pil_rescale(img, s, order=3)
            s_img = self.img_normal(s_img)
            s_img = imutils.HWC_to_CHW(s_img)
            ms_img_list.append(np.stack([s_img, np.flip(s_img, -1)], axis=0))
        if len(self.scales) == 1:
            ms_img_list = ms_img_list[0]

        out = {
            "name": name_str,
            "img": ms_img_list,
            "size": (img.shape[0], img.shape[1]),
            "label": torch.from_numpy(self.label_list[idx])
        }
        return out
Example #2
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = decode_int_filename(name)

        img = imageio.imread(get_img_path(name_str, self.voc12_root))
        label = imageio.imread(os.path.join(self.label_dir, name_str + '.png'))

        img = np.asarray(img)

        if self.rescale:
            img, label = imutils.random_scale((img, label),
                                              scale_range=self.rescale,
                                              order=(3, 0))

        if self.img_normal:
            img = self.img_normal(img)

        if self.hor_flip:
            img, label = imutils.random_lr_flip((img, label))

        if self.crop_method == "random":
            img, label = imutils.random_crop((img, label), self.crop_size,
                                             (0, 255))
        else:
            img = imutils.top_left_crop(img, self.crop_size, 0)
            label = imutils.top_left_crop(label, self.crop_size, 255)

        img = imutils.HWC_to_CHW(img)

        return {'name': name, 'img': img, 'label': label}
Example #3
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = name  # decode_int_filename(name)

        #img = imageio.imread(get_img_path(name_str, self.voc12_root))
        print(get_img_path(name_str, self.voc12_root).strip('['))
        try:
            img = imageio.imread(get_img_path(name_str, self.voc12_root))
        except:
            print("this didn't work")
            #import bpython
            #bpython.embed(locals())
        ms_img_list = []
        for s in self.scales:
            if s == 1:
                s_img = img
            else:
                s_img = imutils.pil_rescale(img, s, order=3)
            s_img = self.img_normal(s_img)
            s_img = imutils.HWC_to_CHW(s_img)
            ms_img_list.append(np.stack([s_img, np.flip(s_img, -1)], axis=0))
        if len(self.scales) == 1:
            ms_img_list = ms_img_list[0]

        out = {
            "name": name_str,
            "img": ms_img_list,
            "size": (img.shape[0], img.shape[1]),
            "label": torch.from_numpy(self.label_list[idx])
        }
        return out
Example #4
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = decode_int_filename(name)

        img = np.asarray(
            imageio.imread(get_img_path(name_str, self.voc12_root),
                           pilmode='RGB'))

        if self.resize_long:
            img = imutils.random_resize_long(img, self.resize_long[0],
                                             self.resize_long[1])

        if self.rescale:
            img = imutils.random_scale(img, scale_range=self.rescale, order=3)

        if self.img_normal:
            img = self.img_normal(img)

        if self.hor_flip:
            img = imutils.random_lr_flip(img)

        if self.crop_size:
            if self.crop_method == "random":
                img = imutils.random_crop(img, self.crop_size, 0)
            else:
                img = imutils.top_left_crop(img, self.crop_size, 0)

        if self.to_torch:
            img = imutils.HWC_to_CHW(img)

        return {'name': name_str, 'img': img}
Example #5
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = name

        img = np.asarray(imageio.imread(name_str))

        if self.resize_long:
            img = imutils.random_resize_long(img, self.resize_long[0],
                                             self.resize_long[1])

        if self.rescale:
            img = imutils.random_scale(img, scale_range=self.rescale, order=3)

        if self.img_normal:
            img = self.img_normal(img)

        if self.hor_flip:
            img = imutils.random_lr_flip(img)

        if self.crop_size:
            if self.crop_method == "random":
                img = imutils.random_crop(img, self.crop_size, 0)
            else:
                img = imutils.top_left_crop(img, self.crop_size, 0)

        if self.to_torch:
            img = imutils.HWC_to_CHW(img)

        return {'name': name_str, 'img': img.copy()}
Example #6
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        name_str = decode_int_filename(name)

        img = imageio.imread(get_img_path(name_str, self.voc12_root))

        ms_img_list = []
        for s in self.scales:
            s_img = skimage.transform.rescale(img,
                                              scale=s,
                                              order=3,
                                              multichannel=True,
                                              preserve_range=True,
                                              anti_aliasing=False)
            s_img = self.img_normal(s_img)
            s_img = imutils.HWC_to_CHW(s_img)
            ms_img_list.append(np.stack([s_img, np.flip(s_img, -1)], axis=0))

        out = {
            "name": name_str,
            "img": ms_img_list,
            "size": (img.shape[0], img.shape[1]),
            "label": torch.from_numpy(self.label_list[idx])
        }
        return out
Example #7
0
    def __getitem__(self, index):
        datafiles = self.imgs[index]
        name = datafiles['name']
        x_path = datafiles['img']
        img = np.asarray(imageio.imread(x_path))
        if img.shape != (128, 128, 3):
            img = np.expand_dims(img, axis=2)
            img = np.concatenate((img, img, img), axis=-1)

        if self.resize_long:
            img = imutils.random_resize_long(img, self.resize_long[0],
                                             self.resize_long[1])
        if self.rescale:
            img = imutils.random_scale(img, scale_range=self.rescale, order=3)
        if self.img_normal:
            img = self.img_normal(img)
        if self.hor_flip:
            img = imutils.random_lr_flip(img)
        if self.crop_size:
            if self.crop_method == "random":
                img = imutils.random_crop(img, self.crop_size, 0)
            else:
                img = imutils.top_left_crop(img, self.crop_size, 0)
        if self.to_torch:
            img = imutils.HWC_to_CHW(img)
        return {'name': name, 'img': img}
Example #8
0
 def __getitem__(self, index):
     datafiles = self.imgs[index]
     name = datafiles['name']
     x_path = datafiles['img']
     img_y = datafiles['label']
     img = imageio.imread(x_path)
     if img.shape != (128, 128, 3):
         img = np.expand_dims(img, axis=2)
         img = np.concatenate((img, img, img), axis=-1)
     ms_img_list = []
     for s in self.scales:
         if s == 1:
             s_img = img
         else:
             s_img = imutils.pil_rescale(img, s, order=3)
         s_img = self.img_normal(s_img)
         #print(s_img.shape)
         s_img = imutils.HWC_to_CHW(s_img)
         ms_img_list.append(
             np.stack([s_img, np.flip(s_img, -1)],
                      axis=0))  # np.flip(img, -1)左右翻转, 将原图与翻转后的图像拼在一起
     if len(self.scales) == 1:
         ms_img_list = ms_img_list[0]
     out = {
         "name": name,
         "img": ms_img_list,
         "size": (img.shape[0], img.shape[1]),
         "label": img_y
     }
     return out
Example #9
0
    def __getitem__(self, idx):
        name_str = self.img_name_list[idx]
        #name_str = decode_int_filename(name)
        #if self.image_folder.split('/')[1] == 'kaggle':
        paths_imgs = glob.glob('{}/{}*.png'.format(self.image_folder,
                                                   name_str))
        img = combine_imgs(paths_imgs)
        #else:
        #   img = np.asarray(imageio.imread(get_img_path_2(name_str,
        #                                                 self.voc12_root,self.image_folder)))

        #img = imageio.imread(get_img_path_2(name_str, self.voc12_root,self.image_folder))

        ms_img_list = []
        for s in self.scales:
            if s == 1:
                s_img = img
            else:
                s_img = imutils.pil_rescale(img, s, order=3)
            s_img = self.img_normal(s_img)
            s_img = imutils.HWC_to_CHW(s_img)
            ms_img_list.append(np.stack([s_img, np.flip(s_img, -1)], axis=0))
        if len(self.scales) == 1:
            ms_img_list = ms_img_list[0]

        out = {
            "name": name_str,
            "img": ms_img_list,
            "size": (img.shape[0], img.shape[1]),
            "label": torch.from_numpy(self.label_list[idx])
        }
        return out
Example #10
0
    def __getitem__(self, idx):
        sample = super().__getitem__(idx)
        ms_img_list = []
        img = sample['img']
        for s in self.scales:
            height, width = img.shape[:2]
            target_height, target_width = (int(np.round(height * s)),
                                           int(np.round(width * s)))

            transform = []
            if s != 1:
                transform.append(
                    alb.Resize(target_height,
                               target_width,
                               interpolation=cv2.INTER_CUBIC))
            transform.append(
                alb.Normalize((0.5, ) * self.num_channels,
                              (0.5, ) * self.num_channels, 2**16 - 1))
            transform = alb.Compose(transform)
            s_img = transform(image=img)['image']
            s_img = imutils.HWC_to_CHW(s_img)

            # ResNet50 CAM compute cam as sum of original + flipped image flipped back
            ms_img_list.append(np.stack([s_img, np.flip(s_img, -1)], axis=0))
        if len(self.scales) == 1:
            ms_img_list = ms_img_list[0]

        out = {
            "name": sample['name'],
            "img": ms_img_list,
            "size": (img.shape[0], img.shape[1]),
            "label": sample['label']
        }
        return out
Example #11
0
def mywork(model, args):
    img_dir = "/home/pfc/code/object_detect/irn/voc12/data/VOC12/infer/JPEGImages"
    img_normal = voc12.dataloader.TorchvisionNormalize()
    with torch.no_grad():
        for img_name in os.listdir(img_dir):
            curimg_path = os.path.join(img_dir, img_name)
            img = imageio.imread(curimg_path)
            size = (img.shape[0], img.shape[1])

            ms_img_list = []
            for s in args.cam_scales:
                if s == 1:
                    s_img = img
                else:
                    s_img = imutils.pil_rescale(img, s, order=3)
                s_img = img_normal(s_img)
                s_img = imutils.HWC_to_CHW(s_img)
                ms_img_list.append(
                    np.stack([s_img, np.flip(s_img, -1)], axis=0))
            if len(args.cam_scales) == 1:
                ms_img_list = ms_img_list[0]

            strided_size = imutils.get_strided_size(size, 4)
            strided_up_size = imutils.get_strided_up_size(size, 16)

            # img_variable = Variable(img.unsqueeze(0))
            outputs = [model(torch.Tensor(img)) for img in ms_img_list]

            strided_cam = torch.sum(
                torch.stack([
                    F.interpolate(torch.unsqueeze(o, 0),
                                  strided_size,
                                  mode='bilinear',
                                  align_corners=False)[0] for o in outputs
                ]), 0)
            highres_cam = [
                F.interpolate(torch.unsqueeze(o, 1),
                              strided_up_size,
                              mode='bilinear',
                              align_corners=False) for o in outputs
            ]
            highres_cam = torch.sum(torch.stack(highres_cam, 0),
                                    0)[:, 0, :size[0], :size[1]]

            valid_cat = torch.zeros(1).type(torch.uint8)

            strided_cam = strided_cam[valid_cat]
            strided_cam /= F.adaptive_max_pool2d(strided_cam, (1, 1)) + 1e-5

            highres_cam = highres_cam[valid_cat]
            highres_cam /= F.adaptive_max_pool2d(highres_cam, (1, 1)) + 1e-5

            # save cams
            np.save(
                os.path.join(args.cam_out_dir, img_name + '.npy'), {
                    "keys": valid_cat,
                    "cam": strided_cam.cpu(),
                    "high_res": highres_cam.cpu().numpy()
                })
Example #12
0
    def __getitem__(self, idx):
        name_str = self.img_name_list[idx]
        #ame_str = decode_int_filename(name)

        #if self.image_folder.split('/')[1] == 'kaggle':
        paths_imgs = glob.glob('{}/{}*.png'.format(self.image_folder,
                                                   name_str))
        img = combine_imgs(paths_imgs)
        #else:
        #   img = np.asarray(imageio.imread(get_img_path_2(name_str,
        #                                                 self.voc12_root,self.image_folder)))
        #img = np.asarray(imageio.imread(get_img_path_2(name_str, self.voc12_root,self.image_folder)))

        if self.resize_long:
            img = imutils.random_resize_long(img, self.resize_long[0],
                                             self.resize_long[1])

        if self.rescale:
            img = imutils.random_scale(img, scale_range=self.rescale, order=3)

        if self.img_normal:
            img = self.img_normal(img)

        if self.hor_flip:
            img = imutils.random_lr_flip(img)

        if self.crop_size:
            if self.crop_method == "random":
                img = imutils.random_crop(img, self.crop_size, 0)
            else:
                img = imutils.top_left_crop(img, self.crop_size, 0)

        if self.to_torch:
            img = imutils.HWC_to_CHW(img)

        return {'name': name_str, 'img': img}
Example #13
0
    def __getitem__(self, idx):
        name = self.img_name_list[idx]
        #得到磁盘存储img文件名
        name_str = decode_int_filename(name)
        bg_img = np.asarray(
            imageio.imread(get_img_path(name_str, self.voc12_root)))
        label_one_hot = self.label_list[idx]

        label_index = np.arange(len(label_one_hot))
        label_index = label_index[label_one_hot == 0]
        fg_label = np.random.choice(label_index)
        fg_name = np.random.choice(self.seg_fg_dir[fg_label])

        fg_pack = np.load(os.path.join('result/sem_seg_fg', str(fg_label),
                                       fg_name),
                          allow_pickle=True).item()
        fg_img = fg_pack['img']
        fg_seg = fg_pack['seg']

        aug_img = imutils.data_aug_rotation(bg_img, fg_img, fg_seg)
        aug_label_one_hot = np.zeros(len(label_one_hot))
        aug_label_one_hot[label_one_hot == 1] = 1
        aug_label_one_hot[fg_label] = 1
        img = bg_img

        if self.resize_long:
            img = imutils.random_resize_long(img, self.resize_long[0],
                                             self.resize_long[1])
            aug_img = imutils.random_resize_long(aug_img, self.resize_long[0],
                                                 self.resize_long[1])
        if self.rescale:
            img = imutils.random_scale(img, scale_range=self.rescale, order=3)
            aug_img = imutils.random_scale(aug_img,
                                           scale_range=self.rescale,
                                           order=3)

        if self.img_normal:
            img = self.img_normal(img)
            aug_img = self.img_normal(aug_img)

        if self.hor_flip:
            img = imutils.random_lr_flip(img)
            aug_img = imutils.random_lr_flip(aug_img)

        if self.crop_size:
            if self.crop_method == "random":
                img = imutils.random_crop(img, self.crop_size, 0)
                aug_img = imutils.random_crop(aug_img, self.crop_size, 0)
            else:
                img = imutils.top_left_crop(img, self.crop_size, 0)
                aug_img = imutils.top_left_crop(aug_img, self.crop_size, 0)
        if self.to_torch:
            img = imutils.HWC_to_CHW(img)
            aug_img = imutils.HWC_to_CHW(aug_img)
        return {
            'name': name_str,
            'img': img,
            'label': label_one_hot,
            'aug_img': aug_img,
            'aug_label': aug_label_one_hot
        }