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

Face aligment via Regressing Local Binary Features (LBF) #144

Merged

Conversation

tomersimis-zz
Copy link
Contributor

Face alignment is a computer vision technology for identifying the geometric structure of human faces in digital images. Given the location and size of a face, it automatically determines the shape of the face components such as eyes and nose. A face alignment program typically operates by iteratively adjusting a deformable models, which encodes the prior knowledge of face shape or appearance, to take into account the low-level image evidences and find the face that is present in the image.
Taken from Springer.

This pull request implements the face alignment method described in the "Face Alignment at 3000 FPS via Regressing Local Binary Features" [1] paper.

This approach has two components: a set of local binary features and a locality principle for learning those features. The locality principle is used to guide the learning of a set of highly discriminative local binary features for each landmark independently. The obtained local binary features are used to learn a linear regression that later will be used to guide the landmarks in the alignment phase.

This is the work of various members of the VoxarLabs [2] team.

Known issues

  • The current training files are very large.
  • At this moment, the method depends entirely on the face detection (i.e. the algorithm only works when a face is detected by the ViolaJones). Because of this, a lot of jitter is present when working with videos.

Future improvements

  • To lower the amount of jitter, the algorithm could use some form of recursion by working based on previous alignments when a face is not detected in the current frame.
  • Improve the training data by using the same face detection method that is used in the tracking phase.

[1] http://research.microsoft.com/pubs/192097/cvpr12_facealignment.pdf
[2] http://cin.ufpe.br/~voxarlabs/Home.html

@eduardolundgren
Copy link
Owner

Face alignment is a good addition to tracking.js. We did run it locally and it's impressive, runs very smooth. Myself and @thiago-rocha are reviewing it, it will be merged as soon as we finishes it.

We have several open questions that will let you know at some point in the process. Overall, it's very good code and follows most of the tracking.js patterns already.

Good job guys.

@eduardolundgren
Copy link
Owner

@tomersimis Could you add tests to this pull request?

@jeromeetienne
Copy link
Collaborator

Thanks @tomersimis, we are actively looking at merging this pool request.

This is very valuable work. thanks again

Sorry for the delay, Late is better than never i guess:)

@jeromeetienne jeromeetienne merged commit 08d5004 into eduardolundgren:master Jul 9, 2017
@eduardolundgren
Copy link
Owner

@tomersimis really good work here, good job and thank you for the contribution! Looking fwd to see what ppl will build using this.

@meefik
Copy link

meefik commented Sep 1, 2018

@tomersimis thank you for your work! I have a question. How can I train my own model?

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

Successfully merging this pull request may close these issues.

None yet

5 participants