def evaluate(self, batch_size): if self.train_generator.n_validation > 0: keypoint_generator = self.train_generator(n_outputs=1, batch_size=batch_size, validation=True, confidence=False) elif self.train_generator.n_validation == 0: warnings.warn( "`n_validation` is 0, so the training set will be used for model evaluation" ) keypoint_generator = self.train_generator(n_outputs=1, batch_size=batch_size, validation=False, confidence=False) y_pred_list = [] confidence_list = [] y_error_list = [] euclidean_list = [] for idx in range(len(keypoint_generator)): X, y_true = keypoint_generator[idx] y_pred = self.predict_model.predict_on_batch(X) confidence_list.append(y_pred[..., -1]) y_pred_coords = y_pred[..., :2] y_pred_list.append(y_pred_coords) errors = keypoint_errors(y_true, y_pred_coords) y_error, euclidean, mae, mse, rmse = errors y_error_list.append(y_error) euclidean_list.append(euclidean) y_pred = np.concatenate(y_pred_list) confidence = np.concatenate(confidence_list) y_error = np.concatenate(y_error_list) euclidean = np.concatenate(euclidean_list) evaluation_dict = { "y_pred": y_pred, "y_error": y_error, "euclidean": euclidean, "confidence": confidence, } return evaluation_dict
def evaluate(self, batch_size): if self.data_generator.n_validation > 0: keypoint_generator = self.data_generator(n_outputs=1, batch_size=batch_size, validation=True, confidence=False) elif self.data_generator.n_validation == 0: warnings.warn( "`n_validation` is 0, so the training set will be used for model evaluation" ) keypoint_generator = self.data_generator(n_outputs=1, batch_size=batch_size, validation=False, confidence=False) metrics = [] keypoints = [] for idx in range(len(keypoint_generator)): X, y_true = keypoint_generator[idx] y_pred = self.predict_model.predict_on_batch(X) y_pred = y_pred[..., :2] errors = keypoint_errors(y_true, y_pred) y_error, euclidean, mae, mse, rmse = errors confidence = y_pred[..., -1] metrics.append([euclidean, mae, mse, rmse, confidence]) keypoints.append([y_pred, y_error]) metrics = np.hstack(metrics) keypoints = np.hstack(keypoints) euclidean, mae, mse, rmse, confidence = metrics y_pred, y_error = keypoints evaluation_dict = { "y_pred": y_pred, "y_error": y_error, "euclidean": euclidean, "mae": mae, "mse": mse, "rmse": rmse, "confidence": confidence, } return evaluation_dict