Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing documentation regarding the anatomical definitions of the 468 face landmarks #3799

Open
fangq opened this issue Oct 26, 2022 · 13 comments
Assignees
Labels
legacy:face mesh Issues related to Face Mesh stat:awaiting googler Waiting for Google Engineer's Response type:feature Enhancement in the New Functionality or Request for a New Solution

Comments

@fangq
Copy link

fangq commented Oct 26, 2022

my student and I are working on a robust registration between face-mesh with other head/brain-landmarks used for neuroimaging, specifically, the 10-20 system for EEG.

the comments in a previous issue (#1615) seem to give a good picture how these face landmarks are numbered, but I still don't see a rigorous definition on where these key points are supposed to be from a face-feature perspective, for example, where is landmark 10 is supposed to be located? middle of the forehead? is there a standard or document where I can find face landmark's "actual" geometric anatomical definitions?

thanks

@kuaashish kuaashish added type:support General questions legacy:face detection Issues related to Face Detection labels Oct 27, 2022
@kuaashish
Copy link
Collaborator

Hi @fangq,
Is it implemented through Python, Javascript or other solutions available in MediaPipe? Could you please provide the complete details to understand the issue better from our end. Thank you!

@kuaashish kuaashish added the stat:awaiting response Waiting for user response label Oct 27, 2022
@fangq
Copy link
Author

fangq commented Oct 27, 2022

Currently, our initial implementation is based on python, but the question is more generic and independent of implementation.

on a related note - among the 468 face mesh points, are there "dependent" points that are computed/interpolated based on other independently estimated points? if so, what are those and how they are interpolated?

@google-ml-butler google-ml-butler bot removed the stat:awaiting response Waiting for user response label Oct 27, 2022
@rajkundu
Copy link

I'm not sure if this helps at all, but there is a .obj file located here in the MediaPipe repository. You can open this file in external software to visualize and analyze the face mesh model. For example, using MeshLab, you can get the index of a vertex in a mesh as shown below:

image

To do so:

  1. Open MeshLab, which will create a new, empty project.
  2. Drag & drop canoncal_face_model.obj onto the window, which will import the mesh into this new project.
  3. Click the "Get Info" button (yellow circle with an "i" in the icon bar).
  4. Press "t" to switch from face-selection mode (default) to vertex-selection mode.
  5. Click any vertex to get its index.

I am very much a beginner when it comes to MeshLab, but if you have any questions, I would be happy to try and answer them. I recommend playing around with the vertex display size as shown in my screenshot above, on the right, in the sidebar.

@fangq
Copy link
Author

fangq commented Oct 31, 2022

@rajkundu thanks for your reply, but I don't think it answers the question I was asking - this still only gives the numbering of points, but not what face feature they are supposed to be pointing to.

just an example - what location on the face that point 10 is supposed to be?

@rajkundu
Copy link

Sorry; I'm not entirely sure what you mean. To me, it seems like that question is answerable by looking at the canonical face model UV map, then seeing where Point 10 is. Or, if you're interested in Point 10's 3D definition, I would look at the .obj file.

Perhaps you're looking for an anatomical definition instead?

@fangq
Copy link
Author

fangq commented Oct 31, 2022

Perhaps you're looking for an anatomical definition instead?

yes, that is correct. I previously referred it to as "geometric definition", but I think "anatomical definition" is more appropriate.

@rajkundu
Copy link

Ah, I see. To be honest, I'm not quite sure how these types of things tend to work. I think the question now is whether Google's engineers attached anatomical definitions to any of the the MP face model's points. I mean, to some extent, strict anatomical correspondences may not even be necessary for the model to function as intended.

My guess is as good as yours, but I would imagine the MP face model does not have many, if any, anatomical correspondences. Some of the only easy/robust ones that I can think of are: the corners of the eyes, the tip of the nose, and maybe even the nasion (vertex 168?). In general, I imagine that finding these correspondences is our job; I don't think there is an official document on them, though I could certainly be wrong.

@fangq
Copy link
Author

fangq commented Oct 31, 2022

yes, the only anatomically-clear landmark relevant to my project is nasion (pt168), other than that, I have been computing other 10-20 anchor points empirically by extrapolating 10, 234, 227, 457 and 447, which worked reasonably well, but I was hoping if all landmarks were anatomically defined, then I would get more assets to improve the mapping.

@andrechen
Copy link

It always puzzle me to find out the the landmark id. So I injected .obj file with material section. And use a simple material file to bind the uv visualization map. It makes the obj could be opened in Mesh viewer with vertex id...
canonical_face_model_3D_viewer

or you can import canonical face model to blender, then find interpolation weights to define your customized landmarks...
canonical_face_model_blender

@kuaashish kuaashish added legacy:face mesh Issues related to Face Mesh and removed legacy:face detection Issues related to Face Detection labels Nov 2, 2022
@kuaashish kuaashish assigned gkarpiak and unassigned kuaashish Nov 2, 2022
@kuaashish kuaashish added the stat:awaiting googler Waiting for Google Engineer's Response label Nov 2, 2022
@fangq fangq changed the title Looking for a document where the face landmark locations are defined Missing documentation regarding the anatomical definitions of the 468 face landmarks Nov 11, 2022
@kuaashish kuaashish removed the stat:awaiting googler Waiting for Google Engineer's Response label Jun 21, 2023
@kuaashish
Copy link
Collaborator

Hello @fangq,

Are you still looking for resolution on this Or the issue has been resolved? Thank you!!

@kuaashish kuaashish added the stat:awaiting response Waiting for user response label Jun 21, 2023
@fangq
Copy link
Author

fangq commented Jun 21, 2023

@kuaashish, thanks for following up. We are still looking for official documentation on these landmarks. My student had spent the past two semesters trying to fit these facial landmarks to anatomically defined head landmarks using a large library, but if knowing more on their definitions, even a subset, will still help for refining our registration.

@google-ml-butler google-ml-butler bot removed the stat:awaiting response Waiting for user response label Jun 21, 2023
@kuaashish
Copy link
Collaborator

@fangq,

Thanks for the confirmation, For now, We do not have any anatomical naming scheme for each of the 468 landmark. However, We can mark this as feature request and share internally based on discussion, We will prioritise the request.

@kuaashish kuaashish assigned lu-wang-g and unassigned kuaashish Jun 26, 2023
@kuaashish kuaashish added stat:awaiting googler Waiting for Google Engineer's Response type:feature Enhancement in the New Functionality or Request for a New Solution and removed type:support General questions labels Jun 26, 2023
@rezinghost
Copy link

i'm searching for definitions too, and i just found this keypoints the orders of landmark indexes are mirrored e.g. in rightEyeUpper0 and leftEyeUpper0. But still lack of that on other facial parts like check or forehead.

@kuaashish kuaashish assigned yichunk and unassigned lu-wang-g Jan 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
legacy:face mesh Issues related to Face Mesh stat:awaiting googler Waiting for Google Engineer's Response type:feature Enhancement in the New Functionality or Request for a New Solution
Projects
None yet
Development

No branches or pull requests

10 participants