def load_data_provider(self, data, patch_size=20, num_patches=50, num_params=20): self.data = data patcher = Patcher(patch_size) self.patches = np.array([]) self.offsets = np.array([]) self.indexes = np.array([]) # Extract patches and offsets from data provided. # TODO: Restrict patch extraction to face bounding box for i, (image, eyes, keypoints, face, face_bbox, rkeypoints) in enumerate(self.data): patches = patcher.generate_patches(face, num_patches) offsets = patcher.calculate_offsets_from_patches(patches, rkeypoints) indexes = np.ones(patches.shape[0],dtype="int")*i if not self.patches.size: self.patches = patches self.offsets = offsets self.indexes = indexes else: self.patches = np.concatenate((self.patches, patches),axis=0) self.offsets = np.concatenate((self.offsets, offsets),axis=0) self.indexes = np.concatenate((self.indexes, indexes),axis=0) self.params_list = patcher.generate_parameters(num_params)