Standard SDK - Android

Face Recognition with Face Liveness Detection

Features

License

We offer lifetime license(perpetual license) based on application ID for Android SDKs. The license is available for one-time payment. In other words, once you purchase license from me, you can use our SDK permanently.

To request a license, please contact us:

Email: contact@kby-ai.com

Telegram: @kbyai

WhatsApp: +19092802609

Skype: live:.cid.66e2522354b1049b

System Requirements

  • CPU: 2 cores or more

  • RAM: 100MB or more

  • OS: Android 4.4 or later

  • Architecture: arm64-v8a, armeabi-v7a

Setup

  1. Copy the SDK (libfacesdk folder) to the root folder in your project.

  2. Add SDK to the project in settings.gradle

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

implementation project(path: ':libfacesdk')

Initializing SDK

  1. 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.

  1. 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.

Enums and Classes

1. SDK_ERROR

This enumeration represents the return value of the init and setActivation functions.

2. FaceBox

This class represents the output of the face detection function that contains the detected face rectangle, liveness score, and facial angles such as yaw, roll, and pitch.

APIs

1. setActivation

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

var ret = FaceSDK.setActivation("...") 

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

2. init

After activation, call the SDK's initialization function.

ret = FaceSDK.init(assets)

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

3. faceDetection

The SDK offers a single function for detecting face and liveness detection, which can be used as follows:

FaceSDK.faceDetection(bitmap)

This function takes a single parameter, which is a bitmap object.

The return value of the function is a list of FaceBox objects.

4. templateExtraction

The SDK 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.

5. similarityCalucation

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 degree of similarity between the two individuals.

6. yuv2Bitmap

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 bitmap.

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

Default Thresholds

val livenessThreshold = 0.7
val identifyThreshold = 0.8
  • If the liveness score exceeds 0.7, the face is a real face.

  • If the similarity between two faces is higher than 0.8, the face matching is successful.

Last updated