From dd62d6fa4a85f18a29de009a972f5599b19ec946 Mon Sep 17 00:00:00 2001 From: natanielruiz <nataniel777@hotmail.com> Date: 星期四, 14 九月 2017 00:51:53 +0800 Subject: [PATCH] Fixing hopenet --- code/datasets.py | 110 ++++++++++++------------------------------------------- 1 files changed, 24 insertions(+), 86 deletions(-) diff --git a/code/datasets.py b/code/datasets.py index 9a4aeb5..6ed209b 100644 --- a/code/datasets.py +++ b/code/datasets.py @@ -60,14 +60,14 @@ img = img.transpose(Image.FLIP_LEFT_RIGHT) # Rotate? - rnd = np.random.random_sample() - if rnd < 0.5: - if roll >= 0: - img = img.rotate(60) - roll -= 60 - else: - img = img.rotate(-60) - roll += 60 + # rnd = np.random.random_sample() + # if rnd < 0.5: + # if roll >= 0: + # img = img.rotate(30) + # roll -= 30 + # else: + # img = img.rotate(-30) + # roll += 30 # Bin values bins = np.array(range(-99, 102, 3)) @@ -113,19 +113,19 @@ x_max = max(pt2d[0,:]) y_max = max(pt2d[1,:]) - # k = 0.35 - # x_min -= 0.6 * k * abs(x_max - x_min) - # y_min -= 2 * k * abs(y_max - y_min) - # x_max += 0.6 * k * abs(x_max - x_min) - # y_max += 0.6 * k * abs(y_max - y_min) - # img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max))) - k = 0.15 - x_min -= k * abs(x_max - x_min) - y_min -= 4 * k * abs(y_max - y_min) - x_max += k * abs(x_max - x_min) - y_max += 0.4 * k * abs(y_max - y_min) + x_min -= 0.6 * k * abs(x_max - x_min) + y_min -= 2 * k * abs(y_max - y_min) + x_max += 0.6 * k * abs(x_max - x_min) + y_max += 0.6 * k * abs(y_max - y_min) img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max))) + + # k = 0.15 + # x_min -= k * abs(x_max - x_min) + # y_min -= 4 * k * abs(y_max - y_min) + # x_max += k * abs(x_max - x_min) + # y_max += 0.4 * k * abs(y_max - y_min) + # img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max))) # We get the pose in radians pose = utils.get_ypr_from_mat(mat_path) @@ -218,11 +218,11 @@ yaw, pitch, roll = [float(line[1]), float(line[2]), float(line[3])] # Crop the face - margin = 40 - x_min = float(line[4]) - margin - y_min = float(line[5]) - margin - x_max = float(line[6]) + margin - y_max = float(line[7]) + margin + k = 0.25 + x1 -= 0.6 * k * abs(x2 - x1) + y1 -= 3 * k * abs(y2 - y1) + x2 += 0.6 * k * abs(x2 - x1) + y2 += 0.6 * k * abs(y2 - y1) img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max))) @@ -237,68 +237,6 @@ def __len__(self): # Around 200 - return self.length - -class LP_300W_LP(Dataset): - def __init__(self, data_dir, filename_path, transform, img_ext='.jpg', annot_ext='.mat', image_mode='RGB'): - self.data_dir = data_dir - self.transform = transform - self.img_ext = img_ext - self.annot_ext = annot_ext - - filename_list = get_list_from_filenames(filename_path) - - self.X_train = filename_list - self.y_train = filename_list - self.image_mode = image_mode - self.length = len(filename_list) - - def __getitem__(self, index): - img = Image.open(os.path.join(self.data_dir, self.X_train[index] + self.img_ext)) - img = img.convert(self.image_mode) - mat_path = os.path.join(self.data_dir, self.y_train[index] + self.annot_ext) - shape_path = os.path.join(self.data_dir, self.y_train[index] + '_shape.npy') - - # Crop the face - # TODO: Change bounding box. - pt2d = utils.get_pt2d_from_mat(mat_path) - x_min = min(pt2d[0,:]) - y_min = min(pt2d[1,:]) - x_max = max(pt2d[0,:]) - y_max = max(pt2d[1,:]) - - k = 0.35 - x_min -= 0.6 * k * abs(x_max - x_min) - y_min -= 2 * k * abs(y_max - y_min) - x_max += 0.6 * k * abs(x_max - x_min) - y_max += 0.6 * k * abs(y_max - y_min) - img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max))) - - # We get the pose in radians - pose = utils.get_ypr_from_mat(mat_path) - # And convert to degrees. - pitch = pose[0] * 180 / np.pi - yaw = pose[1] * 180 / np.pi - roll = pose[2] * 180 / np.pi - # Bin values - bins = np.array(range(-99, 102, 3)) - binned_pose = np.digitize([yaw, pitch, roll], bins) - 1 - - # Get shape binned shape - shape = np.load(shape_path) - - # Convert pt2d to maps of image size - # that have - - labels = torch.LongTensor(np.concatenate((binned_pose, shape), axis = 0)) - - if self.transform is not None: - img = self.transform(img) - - return img, labels, self.X_train[index] - - def __len__(self): - # 122,450 return self.length class BIWI(Dataset): -- Gitblit v1.8.0