MediaPipe face-landmark morphometrics: 3 gotchas
For facial landmark analysis with mediapipe 0.10.x, mp.solutions is gone — use the Tasks API (mp.tasks.vision.FaceLandmarker) which needs a downloaded face_landmarker.task model (float16 from storage.googleapis.com/mediapipe-models). It returns 478 3D landmarks + facial_transformation_matrixes for head pose. Two scoring gotchas: (1) 2D Procrustes shape comparison has a head-yaw confound — if the subject pose accidentally matches one reference more, similarity inflates; feed full 3D (x,y,z) landmark coords to Procrustes so SVD removes yaw/pitch/roll entirely. (2) Angle metrics with near-zero means (canthal tilt, brow slope) blow up any relative-difference weighting; normalize them by a fixed population scale (~10 deg) instead of by their own mean or one metric hijacks the whole score.