Beispiel #1
0
def preprocess_image(img_path, img_size):
    img = io.imread(img_path)
    if np.max(img.shape[:2]) != img_size:
        # print('Resizing so the max image size is %d..' % img_size)
        scale = (float(img_size) / np.max(img.shape[:2]))
    else:
        scale = 1.0  #scaling_factor
    center = np.round(np.array(img.shape[:2]) / 2).astype(int)
    # image center in (x,y)
    center = center[::-1]
    crop, proc_param = img_util.scale_and_crop(img, scale, center, img_size)
    # import ipdb; ipdb.set_trace()
    # Normalize image to [-1, 1]
    # plt.imshow(crop/255.0)
    # plt.show()
    crop = 2 * ((crop / 255.) - 0.5)

    return crop, proc_param, img
Beispiel #2
0
    def __call__(self, sample):
        imgs_to_be_processed = sample['images']

        imgs_to_be_returned = []
        faceposes_to_be_returned = []
        img_shapes = []
        scales = []  # the 224 / the actual size of img, 2 x 1
        centers = []  # the center of the picture
        for img_facepos in imgs_to_be_processed:
            img = img_facepos['image']
            if np.max(img.shape[:2]) != self.config_img_size:
                # print('Resizing so the max image size is %d..' % self.config_img_size)
                scale = (float(self.config_img_size) / np.max(img.shape[:2]))
            else:
                scale = 1.0  #scaling_factor
            center = np.round(np.array(img.shape[:2]) / 2).astype(int)
            # image center in (x,y)
            center = center[::-1]
            crop, proc_param = img_util.scale_and_crop(img, scale, center,
                                                       self.config_img_size)
            # import ipdb; ipdb.set_trace()
            # Normalize image to [-1, 1]
            # plt.imshow(crop/255.0)
            # plt.show()
            crop = 2 * ((crop / 255.) - 0.5)
            single_facepos = img_facepos['openpose']
            # single_facepos *= scale
            faceposes_to_be_returned.append(single_facepos)
            imgs_to_be_returned.append(crop)
            img_shapes.append(
                np.array([[float(img.shape[0]), 0.], [0.,
                                                      float(img.shape[1])]]))
            scales.append(scale)
            centers.append(center)

        return {
            'images': imgs_to_be_returned,
            'faceposes': faceposes_to_be_returned,
            'shape': img_shapes,
            'scale': scales,
            'centers': centers
        }
Beispiel #3
0
    # read images and scale
    #input_img_path = "./training_set/NoW_Dataset/final_release_version/iphone_pictures/FaMoS_180424_03335_TA/multiview_neutral/IMG_0101.jpg"
    #input_img_path = "./training_set/NoW_Dataset/final_release_version/iphone_pictures/FaMoS_180704_03355_TA/multiview_expressions/IMG_1948.jpg"
    input_img_path = "./training_set/NoW_Dataset/final_release_version/iphone_pictures/FaMoS_180427_03338_TA/multiview_expressions/IMG_0230.jpg"
    #input_img_path = "./training_set/NoW_Dataset/final_release_version/iphone_pictures/FaMoS_180502_00145_TA/multiview_expressions/IMG_0407.jpg"
    openpose = np.load(input_img_path.replace("iphone_pictures", "openpose").replace("jpg", "npy"), allow_pickle=True, encoding='latin1')
    img = io.imread(input_img_path)
    if np.max(img.shape[:2]) != config_img_size:
        # print('Resizing so the max image size is %d..' % self.config_img_size)
        scale = (float(config_img_size) / np.max(img.shape[:2]))
    else:
        scale = 1.0#scaling_factor
    center = np.round(np.array(img.shape[:2]) / 2).astype(int)
    # image center in (x,y)
    center = center[::-1]
    crop, proc_param = img_util.scale_and_crop(
        img, scale, center, config_img_size)

    print(proc_param)
    #exit(0)

    crop = torch.tensor(crop)
    crop = crop.permute(2, 0, 1)
    crop = crop[None, :, :, :].float().cuda()
    # print(crop)
    # build model
    resnet50 = torch.load("./good_resnet50.pkl")
    resnet50.cuda()
    resnet50.fc = Identity()
    # print(resnet50)
    regression = torch.load("./good_model.pkl")
    regression.cuda()