def get_metrics()

in empose/eval/metrics.py [0:0]


    def get_metrics(self, eucl_idxs_select=True, angle_idxs_select=True):
        """
        Compute the aggregated metrics that we want to report.
        :return: The computed metrics in a dictionary.
        """
        # Mean and median euclidean distance over all batches and joints.
        if len(self.eucl_dists) > 0:
            eucl_dists = np.concatenate(self.eucl_dists, axis=0)
            eucl_dists_pa = np.concatenate(self.eucl_dists_pa, axis=0)
            eucl_idxs = self.eucl_idxs if eucl_idxs_select else list(range(eucl_dists.shape[1]))

            eucl_mean_per_joint = np.mean(eucl_dists, axis=0)[eucl_idxs]
            eucl_mean_all = np.mean(eucl_mean_per_joint)
            eucl_std_all = np.std(eucl_dists[:, eucl_idxs])
            eucl_mean_pa_per_joint = np.mean(eucl_dists_pa, axis=0)[eucl_idxs]
            eucl_mean_pa_all = np.mean(eucl_mean_pa_per_joint)
            eucl_std_pa_all = np.std(eucl_dists_pa[:, eucl_idxs])
        else:
            eucl_mean_all = 0.0
            eucl_std_all = 0.0
            eucl_mean_pa_all = 0.0
            eucl_std_pa_all = 0.0

        # Mean and median angular difference.
        if len(self.angle_diffs) > 0:
            angle_diffs = np.concatenate(self.angle_diffs, axis=0)
            angle_idxs = self.angle_idxs if angle_idxs_select else list(range(angle_diffs.shape[1]))

            angle_mean_per_joint = np.mean(angle_diffs, axis=0)[angle_idxs]
            angle_mean_all = np.mean(angle_mean_per_joint)
            angle_std_all = np.std(angle_diffs[:, angle_idxs])
        else:
            angle_mean_all = 0.0
            angle_std_all = 0.0

        metrics = {'MPJPE [mm]': eucl_mean_all * 1000.0,
                   'MPJPE STD': eucl_std_all * 1000.0,
                   'PA-MPJPE [mm]': eucl_mean_pa_all * 1000.0,
                   'PA-MPJPE STD': eucl_std_pa_all * 1000.0,
                   'MPJAE [deg]': angle_mean_all,
                   'MPJAE STD': angle_std_all}
        return metrics