Skip to content
πŸ‘¦ Fast-Face : Android App for Real-time Face Landmark Detection. You can check your landmarks in 60ms
Java Other
  1. Java 99.3%
  2. Other 0.7%
Branch: master
Clone or download
Latest commit 5cef248 Jul 31, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea gradle version, landmark blinking resolved May 26, 2017
app resolution tuning done May 26, 2017
demo Add files via upload May 10, 2017
dlib gradle version, landmark blinking resolved May 26, 2017
gradle/wrapper ver 1.0 May 7, 2017
tests ver 1.0 May 7, 2017
.gitignore ver 1.0 May 7, 2017
.gitmodules ver 1.0 May 7, 2017
.travis.yml ver 1.0 May 7, 2017
LICENSE.md ver 1.0 May 7, 2017
Makefile ver 1.0 May 7, 2017
README.md Update README.md Jul 31, 2019
build.gradle gradle version, landmark blinking resolved May 26, 2017
gradle.properties ver 1.0 May 7, 2017
gradlew ver 1.0 May 7, 2017
gradlew.bat ver 1.0 May 7, 2017
settings.gradle ver 1.0 May 7, 2017

README.md

Android App for Real-time Face Landmark Detection

Fast Face is an android application which detects facial landmark . It detects 68 landmarks of human face
chin to eyebrow in real-time. Also, it can detect people up to 3 if you guys show your frontal faces.

It is an upgraded version of dlib-android, Not only revising the code but additional task for optimizing dlib library was needed. As a result, Fast Face speeds up 2x or more from the original. Higher resoluton and higher detection speed.

I think it is not the best one, there are some issues that can be more speedy one.
So, if you guys already improved or want to improve this code, feel free to contact me. Test and Enjoy it :)

Screenshot


Environments

  • DEVICE : SAMSUNG-A8 2015(@cortex-a53 core)
  • API : 23 (Android 6.0.1)
  • TIME : 50ms ~ 70ms

Features

  • Support HOG detector
  • HOG Face detection
  • Facial Landmark/Expression

Sample code

Facial landmark detection

// detecs every 3 frames
if(mframeNum % 3 == 0){
    synchronized (OnGetImageListener.this) {
        results = mFaceDet.detect(mResizedBitmap);
    }
}

// Draw on bitmap
if (results.size() != 0) {
    for (final VisionDetRet ret : results) {
        float resizeRatio = 4.5f;
        Canvas canvas = new Canvas(mInversedBipmap);

        // Draw landmark
        ArrayList<Point> landmarks = ret.getFaceLandmarks();
        for (Point point : landmarks) {
            int pointX = (int) (point.x * resizeRatio);
            int pointY = (int) (point.y * resizeRatio);
            canvas.drawCircle(pointX, pointY, 4, mFaceLandmardkPaint);
        }
     }
}

License

License

You can’t perform that action at this time.