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

Off centre face pose accuracy and consistency (Augmented Faces) #1658

Open
dylanmenzies opened this issue Jun 20, 2024 · 2 comments
Open

Off centre face pose accuracy and consistency (Augmented Faces) #1658

dylanmenzies opened this issue Jun 20, 2024 · 2 comments
Labels

Comments

@dylanmenzies
Copy link

dylanmenzies commented Jun 20, 2024

Face center and region pose error increases significantly with distance from the camera field centre. For regions this is immediately obvious, for example the nose in the augmented face demo is pushed out to the sides in landscape mode (see images attached). Objects based on the face mesh and center pose register well across the field however (see images). The region and center pose orientations remain fixed relative to each other, however the mesh is changing in local coordinates (See the remaining images - the mesh is rendered with a fixed pose so the rotation of the mesh can be clearly seen for the off centre images. Also shown is a view from above showing the distortion and rotation of the mesh). The mesh change in combination with the center pose produces the global registration, not the centre pose alone.

VERSIONS USED

  • Android Studio: 2020.3.1
  • ARCore SDK for Android: 1.43
  • Device manufacturer, model, and O/S: Motorola G6 (same results for arcore on IPhone 8)
  • Google Play Services for AR (ARCore): versionName=1.43.240930403
  • Output of adb shell getprop ro.build.fingerprint: motorola/ali_n/ali_n:8.0.0/OPS27.82-87/108:user/release-keys

STEPS TO REPRODUCE THE ISSUE

The errors are always present, and do not require special conditions.

The images are produced from the augmented faces demo, modified to render the canonical_face_texture.png from the sdk, or the nose object. The fixed orientation pose is generated using float[] modelMatrix = { 1f,0,0,0, 0,1f,0,0, 0,0,1f,0, 0,0,-0.5f,1f };

WORKAROUNDS (IF ANY)

I've had good results correcting the pose by:- calculating a local pose based on face mesh vertices, forehead, nosetip, and lip, then apply current face pose to get more accurate face pose for region poses and tracking. A shift is also applied to the local pose to shift the fixed point of the mesh to 0 (See the last images with mesh and nose combined)

ADDITIONAL COMMENTS

The error is frustrating for accurate render of region objects, and also for accurate head tracking with translation, which has good uses besides graphic rendering.

It appears that since face registration is achieved very well, the gross change in the face mesh coordinates could be shifted to the center pose (and to correct the region poses), so that a more accurate physical head pose is given for non central positions.

Screenshot_20240620-165837
Screenshot_20240620-165927
Screenshot_20240620-170006
Screenshot_20240620-171424
Screenshot_20240620-171449
Screenshot_20240620-171511
Screenshot_20240621-105335
Screenshot_20240621-105352
Screenshot_20240626-145335
Screenshot_20240701-190323
Screenshot_20240701-190330

@15kingben
Copy link

Hi Dylan, I don't think I am able to reproduce this issue, although the effect is fairly subtle. Are you able to reproduce this with a different device?

@dylanmenzies
Copy link
Author

dylanmenzies commented Jul 17, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants