Exemple #1
0
    def _load_pairs(self, vid_info):
        length = vid_info["length"]
        ft_ids = vid_info["ft_ids"]
        ns = self._opt.num_source

        replace = ns >= len(ft_ids)
        src_ids = list(np.random.choice(ft_ids, ns, replace=replace))
        src_ids[0] = ft_ids[0]

        tsf_ids = list(
            np.random.choice(length, self._opt.time_step, replace=False))
        tsf_ids.sort()

        pair_ids = src_ids + tsf_ids

        smpls = vid_info["smpls"][pair_ids]

        images = []
        masks = []
        images_paths = vid_info['images']
        alphas_paths = vid_info["alphas"]
        for t in pair_ids:
            image = cv_utils.read_cv2_img(images_paths[t])
            images.append(image)

            mask = cv_utils.read_mask(alphas_paths[t], self._opt.image_size)

            # front is 0, and background is 1
            mask = 1.0 - mask
            masks.append(mask)

        return images, smpls, masks, vid_info["offsets"]
Exemple #2
0
    def _load_pairs(self, vid_info):
        length = vid_info['length']

        start = np.random.randint(0, 15)
        end = np.random.randint(0, length)
        pair_ids = np.array([start, end], dtype=np.int32)

        smpls = vid_info["smpls"][pair_ids]

        images = []
        masks = []
        images_paths = vid_info['images']
        alphas_paths = vid_info["alphas"]
        for t in pair_ids:
            image_path = images_paths[t]
            image = cv_utils.read_cv2_img(image_path)

            images.append(image)

            mask = cv_utils.read_mask(alphas_paths[t], self._opt.image_size)

            # front is 0, and background is 1
            mask = 1.0 - mask
            masks.append(mask)

        return images, smpls, masks, vid_info["offsets"]
Exemple #3
0
    def _load_pairs(self, vid_info):
        ns = self._opt.num_source

        length = vid_info["length"]
        ft_ids = vid_info["ft_ids"]

        replace = ns >= len(ft_ids)
        src_ids = list(np.random.choice(ft_ids, ns, replace=replace))
        src_ids[0] = ft_ids[0]

        tsf_ids = list(
            np.random.choice(length, self._opt.time_step, replace=False))
        tsf_ids.sort()

        # take the source and target ids
        pair_ids = src_ids + tsf_ids
        smpls = vid_info["smpls"][pair_ids]

        images = []
        masks = []
        image_dir = vid_info["img_dir"]
        images_names = vid_info["images"]
        alphas_paths = vid_info["alpha_paths"]

        for t in pair_ids:
            image_path = os.path.join(image_dir, images_names[t])
            image = cv_utils.read_cv2_img(image_path)

            images.append(image)

            mask = cv_utils.read_mask(alphas_paths[t], self._opt.image_size)

            # front is 0, and background is 1
            mask = 1.0 - mask
            masks.append(mask)

        return images, smpls, masks
Exemple #4
0
    def _load_pairs(self, index):
        vid_info = self._vids_info[index % self._num_videos]
        length = vid_info["length"]
        img_dir = vid_info["img_dir"]
        src_ids = vid_info["src_ids"]
        offsets = vid_info["offsets"]
        alpha_paths = vid_info["alpha_paths"]
        replaced_paths = vid_info["replaced_paths"]
        actual_bg_path = vid_info["actual_bg_path"]
        bg_dir = vid_info["bg_dir"]

        if length < self._opt.time_step:
            replace = True
        else:
            replace = False

        tsf_ids = list(np.random.choice(length, self._opt.time_step, replace=replace))
        pair_ids = src_ids + tsf_ids

        # print(pair_ids, vid_info["probs"])

        # print(len(pair_ids), src_ids, pair_ids)
        # print(pair_ids, np.random.random())

        # if length > 1:
        #     tsf_ids = [src_ids[0]] + [index]
        #     pair_ids = src_ids + tsf_ids
        # else:
        #     pair_ids = [0, 0]

        smpls = vid_info["smpls"][pair_ids]

        images_name = vid_info["images"]
        images = []
        masks = []
        pseudo_bgs = []

        for t in pair_ids:
            name = images_name[t]
            image_path = os.path.join(img_dir, name)
            image = cv_utils.read_cv2_img(image_path)
            images.append(image)

            mask = cv_utils.read_mask(alpha_paths[t], self._opt.image_size)

            # attention! Here, the front is 0, and the background is 1
            mask = 1.0 - mask
            masks.append(mask)

        if self._share_bg:
            if actual_bg_path is not None:
                bg_path = actual_bg_path
            else:
                bg_path = np.random.choice(replaced_paths)
            bg_img = cv_utils.read_cv2_img(bg_path)
            bg_img = cv_utils.normalize_img(bg_img, image_size=self._opt.image_size, transpose=True)
            pseudo_bgs = bg_img
        else:
            if actual_bg_path is not None:
                bg_img_paths = [actual_bg_path] * len(src_ids)
            else:
                bg_img_paths = []
                for s_id in src_ids:
                    name = images_name[s_id]
                    bg_name = name.split(".")[0] + "_replaced.png"
                    bg_path = os.path.join(bg_dir, bg_name)
                    bg_img_paths.append(bg_path)

            for bg_path in bg_img_paths:
                bg_img = cv_utils.read_cv2_img(bg_path)
                bg_img = cv_utils.normalize_img(bg_img, image_size=self._opt.image_size, transpose=True)
                pseudo_bgs.append(bg_img)
            pseudo_bgs = np.stack(pseudo_bgs)

        links_ids = vid_info["links"]

        return images, smpls, masks, offsets, pseudo_bgs, links_ids