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
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}
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
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}
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()}
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
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}
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
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
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
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() })
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}
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 }