Skip to content

This is a demo project that incorporates 3D passive face liveness detection, face recognition, face capture, and analysis of face attributes including age, gender, face quality, face occlusion, eye closure, and mouth opening.

kby-ai/FaceAttribute-Android

Repository files navigation

📚 Product & Resources - Here

🛟 Help Center - Here

💼 KYC Verification Demo - Here

🙋‍♀️ Docker Hub - Here

FaceAttribute-Android

Overview

This repository integrates several facial recognition technologies, including 3D passive face liveness detection, face recognition, automatic face capture, and analysis of various face attributes such as age, gender, face quality, facial occlusion, eye closure, and mouth opening.

The system utilizes face liveness detection technology to generate a real-time liveness score based on a single image captured by the camera.

Additionally, the demo offers Face Recognition capabilities, enabling enrollment from a gallery and real-time identification of faces captured by the camera.

The repository also features an automatic face capture function that verifies various facial attributes, such as face quality, facial orientation (yaw, roll, pitch), facial occlusion (e.g., mask, sunglass, hand over face), eye closure, mouth opening, and the position of the face within the region of interest (ROI).

Moreover, the repository can compute scores for different face attributes from a gallery image, including liveness, face orientation (yaw, roll, pitch), face quality, luminance of the face, facial occlusion, eye closure, mouth opening, age, and gender.

In this repository, we integrated KBY-AI's Premium Face Mobile SDK into Android native platform.

◾FaceSDK(Mobile) Details

Basic Standard 🔽 Premium
Face Detection Face Detection Face Detection
Face Liveness Detection Face Liveness Detection Face Liveness Detection
Pose Estimation Pose Estimation Pose Estimation
Face Recognition Face Recognition
68 points Face Landmark Detection
Face Quality Calculation
Face Occlusion Detection
Eye Closure Detection
Age, Gender Estimation

◾FaceSDK(Mobile) Product List

No. Repository SDK Details
1 Face Liveness Detection - Android Basic SDK
2 Face Liveness Detection - iOS Basic SDK
3 Face Recognition - Android Standard SDK
4 Face Recognition - iOS Standard SDK
5 Face Recognition - Flutter Standard SDK
6 Face Recognition - React-Native Standard SDK
➡️ Face Attribute - Android Premium SDK
8 Face Attribute - iOS Premium SDK

To get Face SDK(server), please visit products here.

Try the APK

Google Play

Screenshots

SDK License

The face recognition project relies on kby-ai's SDK, which requires a license for each application ID.

About SDK

1. Set up

  • Copy the SDK (libfacesdk folder) to the root folder of your project.

  • Add SDK to the project in settings.gradle

    include ':libfacesdk'
    
  • Add dependency to your build.gradle

    implementation project(path: ':libfacesdk')
    

2. Initializing an SDK

  • Step One

    To begin, you need to activate the SDK using the license that you have received.

      FaceSDK.setActivation("...")
    

    If activation is successful, the return value will be SDK_SUCCESS. Otherwise, an error value will be returned.

  • Step Two

    After activation, call the SDK's initialization function.

    FaceSDK.init(getAssets());
    

    If initialization is successful, the return value will be SDK_SUCCESS. Otherwise, an error value will be returned.

3. SDK Classes

  • FaceBox

    This class represents the output of the face detection function and can be utilized in template creation functions.

    Feature Type Name
    Face rectangle int x1, y1, x2, y2
    Face angles (-45 ~ 45) float yaw, roll, pitch
    Liveness score (0 ~ 1) float liveness
    Face quality (0 ~ 1) float face_quality
    Face luminance (0 ~ 255) float face_luminance
    Face occlusion (0 ~ 1) float face_occlusion
    Eye closure (0 ~ 1) float left_eye_closed, right_eye_closed
    Mouth opening (0 ~ 1) float mouth_opened
    Age, gender int age, gender
    68 points facial landmark float[] landmarks_68

    68 points facial landmark

  • FaceDetectionParam

    This class serves as the input parameter for face detection, enabling various processing functionalities such as face liveness detection, eye closure checking, facial occlusion checking, mouth opening checking, and age and gender estimation.

    Feature Type Name
    Check liveness boolean check_liveness
    Check eye closure boolean check_eye_closeness
    Check face occlusion boolean check_face_occlusion
    Check mouth opening boolean check_mouth_opened
    Estimate age, gender boolean estimate_age_gender

4. SDK APIs

- Face Detection

The Face SDK provides a unified function for detecting faces, enabling multiple functionalities such as liveness detection, face orientation (yaw, roll, pitch), face quality, facial occlusion, eye closure, mouth opening, age, gender, and facial landmarks.

The function can be used as follows:

FaceSDK.faceDetection(bitmap, param)

This function requires two parameters: a Bitmap object and a FaceDetectionParam object that enables various processing functionalities.

The function returns a list of FaceBox objects.

- Create Templates

The FaceSDK provides a function that can generate a template from a bitmap image. This template can then be used to verify the identity of the individual captured in the image.

byte[] templates = FaceSDK.templateExtraction(bitmap, faceBox);

The SDK's template extraction function takes two parameters: a bitmap object and an object of FaceBox.

The function returns a byte array, which contains the template that can be used for person verification.

- Calculation similiarity

The "similarityCalculation" function takes a byte array of two templates as a parameter.

float similarity = FaceSDK.similarityCalucation(templates1, templates1);

It returns the similarity value between the two templates, which can be used to determine the level of likeness between the two individuals.

- Yuv to Bitmap

The SDK provides a function called yuv2Bitmap, which converts a yuv frame to a bitmap. Since camera frames are typically in yuv format, this function is necessary to convert them to bitmaps. The usage of this function is as follows:

Bitmap bitmap = FaceSDK.yuv2Bitmap(nv21, image.getWidth(), image.getHeight(), 7);

The first parameter is an nv21 byte array containing the yuv data.

The second parameter is the width of the yuv frame, and the third parameter is its height.

The fourth parameter is the conversion mode, which is determined by the camera orientation.

To determine the appropriate conversion mode, the following method can be used:

1        2       3      4         5            6           7          8

888888  888888      88  88      8888888888  88                  88  8888888888
88          88      88  88      88  88      88  88          88  88      88  88
8888      8888    8888  8888    88          8888888888  8888888888          88
88          88      88  88
88          88  888888  888888

About

This is a demo project that incorporates 3D passive face liveness detection, face recognition, face capture, and analysis of face attributes including age, gender, face quality, face occlusion, eye closure, and mouth opening.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published