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