DEV Community

Jackson for HMS Core

Posted on

3 1

Practice on Developing a Face Verification Function

Background

Oh how great it is to be able to reset bank details from the comfort of home and avoid all the hassle of going to the bank, queuing up, and proving you are who you say you are.
All these have become true with the help of some tech magic known as face verification, which is perfect for verifying a user's identity remotely. I have been curious about how the tech works, so here it is: I decided to integrate the face verification service from HMS Core ML Kit into a demo app. Below is how I did it.

Development Process

Preparations

1) Make necessary configurations as detailed here.
2) Configure the Maven repository address for the face verification service.
i. Open the project-level build.gradle file of the Android Studio project.
ii. Add the Maven repository address and AppGallery Connect plugin.
Go to allprojects > repositories and configure the Maven repository address for the face verification service.

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
 }
Enter fullscreen mode Exit fullscreen mode

Go to buildscript > repositories to configure the Maven repository address.

buildscript {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
 }
Enter fullscreen mode Exit fullscreen mode

Go to buildscript > dependencies to add the plugin configuration.

buildscript{
    dependencies {
         classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }
 }
Enter fullscreen mode Exit fullscreen mode

Function Building

1) Create an instance of the face verification analyzer.

MLFaceVerificationAnalyzer analyzer = MLFaceVerificationAnalyzerFactory.getInstance().getFaceVerificationAnalyzer();
Enter fullscreen mode Exit fullscreen mode

2) Create an MLFrame object via android.graphics.Bitmap. This object is used to set the face verification template image whose format can be JPG, JPEG, PNG, or BMP.

// Create an **MLFrame** object.
MLFrame templateFrame = MLFrame.fromBitmap(bitmap);
Enter fullscreen mode Exit fullscreen mode

3) Set the template image. The setting will fail if the template does not contain a face, and the face verification service will use the template set last time.

List<MLFaceTemplateResult> results = analyzer.setTemplateFace(templateFrame);
for (int i = 0; i < results.size(); i++) {
    // Process the result of face detection in the template.
}
Enter fullscreen mode Exit fullscreen mode

4) Use android.graphics.Bitmap to create an MLFrame object that is used to set the image for comparison. The image format can be JPG, JPEG, PNG, or BMP.

// Create an **MLFrame** object.
MLFrame compareFrame = MLFrame.fromBitmap(bitmap);
Enter fullscreen mode Exit fullscreen mode

5) Perform face verification by calling the asynchronous or synchronous method. The returned verification result (MLFaceVerificationResult) contains the facial information obtained from the comparison image and the confidence indicating the faces in the comparison image and template image being of the same person.
Asynchronous method:

Task<List<MLFaceVerificationResult>> task = analyzer.asyncAnalyseFrame(compareFrame);
task.addOnSuccessListener(new OnSuccessListener<List<MLFaceVerificationResult>>() {
    @Override
    public void onSuccess(List<MLFaceVerificationResult> results) {
        // Callback when the verification is successful.
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        // Callback when the verification fails.
    }
});
Enter fullscreen mode Exit fullscreen mode

Synchronous method:

SparseArray<MLFaceVerificationResult> results = analyzer.analyseFrame(compareFrame);
for (int i = 0; i < results.size(); i++) {
    // Process the verification result.
}
Enter fullscreen mode Exit fullscreen mode

6) Stop the analyzer and release the resources that it occupies, when verification is complete.

if (analyzer != null) {
    analyzer.stop();
}
Enter fullscreen mode Exit fullscreen mode

This is how the face verification function is built. This kind of tech not only saves hassle, but is great for honing my developer skills.

References

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay