Fixing gaze visualization, making sure the tests still run correctly. Adding other AU datasets for testing.
This commit is contained in:
parent
6499412259
commit
d0cf22969c
8 changed files with 13 additions and 13 deletions
|
@ -559,9 +559,10 @@ namespace OpenFaceOffline
|
||||||
nonRigidGraph.Update(non_rigid_params);
|
nonRigidGraph.Update(non_rigid_params);
|
||||||
|
|
||||||
// Update eye gaze
|
// Update eye gaze
|
||||||
GazeXLabel.Content = gaze_angle.Item1 * (180.0 / Math.PI);
|
String x_angle = String.Format("{0:F0}°", gaze_angle.Item1 * (180.0 / Math.PI));
|
||||||
GazeYLabel.Content = gaze_angle.Item2 * (180.0 / Math.PI);
|
String y_angle = String.Format("{0:F0}°", gaze_angle.Item2 * (180.0 / Math.PI));
|
||||||
|
GazeXLabel.Content = x_angle;
|
||||||
|
GazeYLabel.Content = y_angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (show_tracked_video)
|
if (show_tracked_video)
|
||||||
|
@ -695,7 +696,7 @@ namespace OpenFaceOffline
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------
|
// ----------------------------------------------------------
|
||||||
// Recording helpers (TODO simplify)
|
// Recording helpers
|
||||||
|
|
||||||
private void SetupRecording(String root, String filename, int width, int height, bool output_2D_landmarks, bool output_3D_landmarks,
|
private void SetupRecording(String root, String filename, int width, int height, bool output_2D_landmarks, bool output_3D_landmarks,
|
||||||
bool output_model_params, bool output_pose, bool output_AUs, bool output_gaze)
|
bool output_model_params, bool output_pose, bool output_AUs, bool output_gaze)
|
||||||
|
|
|
@ -302,7 +302,7 @@ public:
|
||||||
clnf->GetPose(pose_list, fx, fy, cx, cy);
|
clnf->GetPose(pose_list, fx, fy, cx, cy);
|
||||||
cv::Vec6d pose(pose_list[0], pose_list[1], pose_list[2], pose_list[3], pose_list[4], pose_list[5]);
|
cv::Vec6d pose(pose_list[0], pose_list[1], pose_list[2], pose_list[3], pose_list[4], pose_list[5]);
|
||||||
|
|
||||||
cv::Vec2d gaze_angle = FaceAnalysis::GetGazeAngle(*gazeDirection0, *gazeDirection1, pose);
|
*gazeAngle = FaceAnalysis::GetGazeAngle(*gazeDirection0, *gazeDirection1, pose);
|
||||||
|
|
||||||
// Grab pupil locations
|
// Grab pupil locations
|
||||||
int part_left = -1;
|
int part_left = -1;
|
||||||
|
|
|
@ -163,7 +163,6 @@ cv::Vec2d FaceAnalysis::GetGazeAngle(cv::Point3f& gaze_vector_1, cv::Point3f& ga
|
||||||
cv::Vec3d eulerAngles(head_pose(3), head_pose(4), head_pose(5));
|
cv::Vec3d eulerAngles(head_pose(3), head_pose(4), head_pose(5));
|
||||||
cv::Matx33d rotMat = LandmarkDetector::Euler2RotationMatrix(eulerAngles);
|
cv::Matx33d rotMat = LandmarkDetector::Euler2RotationMatrix(eulerAngles);
|
||||||
cv::Point3f gaze_point = (gaze_vector_1 + gaze_vector_2) / 2;
|
cv::Point3f gaze_point = (gaze_vector_1 + gaze_vector_2) / 2;
|
||||||
double gaze_diff = acos(gaze_vector_1.dot(gaze_vector_2));
|
|
||||||
cv::Vec3d gaze(gaze_point.x, gaze_point.y, gaze_point.z);
|
cv::Vec3d gaze(gaze_point.x, gaze_point.y, gaze_point.z);
|
||||||
|
|
||||||
gaze = rotMat * gaze;
|
gaze = rotMat * gaze;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
AU1 class, Precision - 0.501, Recall - 0.521, F1 - 0.511
|
AU1 class, Precision - 0.500, Recall - 0.522, F1 - 0.511
|
||||||
AU2 class, Precision - 0.379, Recall - 0.451, F1 - 0.412
|
AU2 class, Precision - 0.380, Recall - 0.450, F1 - 0.412
|
||||||
AU4 class, Precision - 0.459, Recall - 0.503, F1 - 0.480
|
AU4 class, Precision - 0.459, Recall - 0.503, F1 - 0.480
|
||||||
AU6 class, Precision - 0.738, Recall - 0.774, F1 - 0.755
|
AU6 class, Precision - 0.738, Recall - 0.774, F1 - 0.755
|
||||||
AU7 class, Precision - 0.762, Recall - 0.732, F1 - 0.747
|
AU7 class, Precision - 0.762, Recall - 0.732, F1 - 0.747
|
||||||
AU10 class, Precision - 0.847, Recall - 0.842, F1 - 0.844
|
AU10 class, Precision - 0.847, Recall - 0.842, F1 - 0.844
|
||||||
AU12 class, Precision - 0.888, Recall - 0.816, F1 - 0.850
|
AU12 class, Precision - 0.888, Recall - 0.816, F1 - 0.850
|
||||||
AU14 class, Precision - 0.547, Recall - 0.807, F1 - 0.652
|
AU14 class, Precision - 0.547, Recall - 0.807, F1 - 0.652
|
||||||
AU15 class, Precision - 0.402, Recall - 0.416, F1 - 0.409
|
AU15 class, Precision - 0.396, Recall - 0.419, F1 - 0.407
|
||||||
AU17 class, Precision - 0.632, Recall - 0.592, F1 - 0.611
|
AU17 class, Precision - 0.630, Recall - 0.593, F1 - 0.611
|
||||||
AU23 class, Precision - 0.338, Recall - 0.597, F1 - 0.431
|
AU23 class, Precision - 0.338, Recall - 0.597, F1 - 0.431
|
||||||
|
|
|
@ -2,4 +2,4 @@ AU6 results - rms 0.863, corr 0.780, ccc - 0.735
|
||||||
AU10 results - rms 1.035, corr 0.738, ccc - 0.684
|
AU10 results - rms 1.035, corr 0.738, ccc - 0.684
|
||||||
AU12 results - rms 0.814, corr 0.867, ccc - 0.834
|
AU12 results - rms 0.814, corr 0.867, ccc - 0.834
|
||||||
AU14 results - rms 1.107, corr 0.531, ccc - 0.486
|
AU14 results - rms 1.107, corr 0.531, ccc - 0.486
|
||||||
AU17 results - rms 0.834, corr 0.592, ccc - 0.487
|
AU17 results - rms 0.834, corr 0.592, ccc - 0.488
|
||||||
|
|
|
@ -98,7 +98,7 @@ end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
f = fopen('results/UNBC_valid_res_int.txt', 'w');
|
f = fopen('results/UNBC_valid_res_int.txt', 'w');
|
||||||
ints_cccs = zeros(1, numel(aus_UNBC);
|
ints_cccs = zeros(1, numel(aus_UNBC));
|
||||||
for au = 1:numel(aus_UNBC)
|
for au = 1:numel(aus_UNBC)
|
||||||
|
|
||||||
[ accuracies, F1s, corrs, ccc, rms, classes ] = evaluate_au_prediction_results( preds_all_int(:, inds_au_int(au)), labels_gt(:,au));
|
[ accuracies, F1s, corrs, ccc, rms, classes ] = evaluate_au_prediction_results( preds_all_int(:, inds_au_int(au)), labels_gt(:,au));
|
||||||
|
|
Binary file not shown.
|
@ -1,2 +1,2 @@
|
||||||
Mean error, median error
|
Mean error, median error
|
||||||
9.431, 8.733
|
9.428, 8.730
|
||||||
|
|
Loading…
Reference in a new issue