def compute_cord_warp_batch(self, pair_df, validation=False): batch = [np.empty([self._batch_size] + [self.num_mask, 8]), np.empty([self._batch_size, self.num_mask] + list(self._image_size)), np.empty([self._batch_size] + [self.num_mask, 8]), np.empty([self._batch_size, self.num_mask] + list(self._image_size)), np.empty([self._batch_size] + [self.num_mask, 8]), np.empty([self._batch_size, self.num_mask] + list(self._image_size))] i = 0 for _, p in pair_df.iterrows(): fr = self._annotations_file.loc[p['from']] to = self._annotations_file.loc[p['to']] kp_array1 = pose_utils.load_pose_cords_from_strings(fr['keypoints_y'], fr['keypoints_x']) kp_array2 = pose_utils.load_pose_cords_from_strings(to['keypoints_y'], to['keypoints_x']) if validation: npy_path_from = os.path.join(self._images_dir_test, p['from']) npy_path_from = npy_path_from[:-3]+'npy' npy_path_to = os.path.join(self._images_dir_test, p['to']) npy_path_to = npy_path_to[:-3] + 'npy' else: npy_path_from = os.path.join(self._images_dir_train, p['from']) npy_path_from = npy_path_from[:-3]+'npy' npy_path_to = os.path.join(self._images_dir_train, p['to']) npy_path_to = npy_path_to[:-3] + 'npy' batch[0][i] = pose_transform.affine_transforms(kp_array1, kp_array2, self._image_size, self.use_body_mask) batch[1][i] = pose_transform.pose_masks(kp_array2, self._image_size, self.use_body_mask, self.use_mask, npy_path_to, self.fat) batch[2][i] = np.c_[np.ones([10,1]),np.zeros([10,3]),np.ones([10,1]),np.zeros([10,3])] batch[3][i] = batch[1][i] batch[4][i] = pose_transform.affine_transforms(kp_array2, kp_array1, self._image_size, self.use_body_mask) batch[5][i] = pose_transform.pose_masks(kp_array1, self._image_size, self.use_body_mask, self.use_mask, npy_path_from, self.fat) i += 1 return batch
def compute_cord_warp_batch(self, pair_df): if self._warp_skip == 'full': batch = [np.empty([self._batch_size] + [1, 8])] elif self._warp_skip == 'mask': batch = [np.empty([self._batch_size] + [10, 8]), np.empty([self._batch_size, 10] + list(self._image_size))] else: batch = [np.empty([self._batch_size] + [72])] i = 0 for _, p in pair_df.iterrows(): fr = self._annotations_file.loc[p['from']] to = self._annotations_file.loc[p['to']] kp_array1 = pose_utils.load_pose_cords_from_strings(fr['keypoints_y'], fr['keypoints_x']) kp_array2 = pose_utils.load_pose_cords_from_strings(to['keypoints_y'], to['keypoints_x']) if self._warp_skip == 'mask': batch[0][i] = pose_transform.affine_transforms(kp_array1, kp_array2) batch[1][i] = pose_transform.pose_masks(kp_array2, self._image_size) elif self._warp_skip == 'full': batch[0][i] = pose_transform.estimate_uniform_transform(kp_array1, kp_array2) else: #sel._warp_skip == 'stn' batch[0][i][:36] = kp_array1.reshape((-1, )) batch[0][i][36:] = kp_array2.reshape((-1, )) i += 1 return batch
m = re.match(r'([A-Za-z0-9_]*.jpg)_([A-Za-z0-9_]*.jpg)', img_pair) fr = m.groups()[0] to = m.groups()[1] gen_img = imread(os.path.join(in_folder, img_pair)) gen_img = gen_img[:, (2 * args.image_size[1]):] df = pd.read_csv(args.annotations_file_test, sep=':') ano_fr = df[df['name'] == fr].iloc[0] ano_to = df[df['name'] == to].iloc[0] kp_fr = pose_utils.load_pose_cords_from_strings(ano_fr['keypoints_y'], ano_fr['keypoints_x']) kp_to = pose_utils.load_pose_cords_from_strings(ano_to['keypoints_y'], ano_to['keypoints_x']) mask = pose_transform.pose_masks(kp_to, img_size=args.image_size).astype(bool) mask = np.array(reduce(np.logical_or, list(mask))) mask = mask.astype('float') pose_fr, _ = pose_utils.draw_pose_from_cords(kp_fr, args.image_size) pose_to, _ = pose_utils.draw_pose_from_cords(kp_to, args.image_size) cur_folder = os.path.join(out_folder, str(n)) if not os.path.exists(cur_folder): os.makedirs(cur_folder) imsave(os.path.join(cur_folder, 'from.jpg'), imread(os.path.join(args.images_dir_test, fr))) imsave(os.path.join(cur_folder, 'to.jpg'), imread(os.path.join(args.images_dir_test, to)))