Webhooks Enhancements & Performance Improvements

FACEIO Landing Page

Starting with the major release of fio.js 1.9, FACEIO Webhooks have been rebuilt from the ground up to improve latency and provide new functionality like payload field inclusion which is available starting from the Business Plan, and up.

Webhooks allows you to receive data and get notified at real-time about the ongoing events during the interaction of the FACEIO Widget with your users (eg. New user enrollment or authentication) in-order to keep your application backend up-to-date & synchronized. FACEIO uses Webhooks to let your system know when such events happen. Events includes New User Enrollment, Facial Authentication Success, Facial ID Deletion, and many other events.

When an event occurs, FACEIO makes an HTTP POST request to the URL you configured for the Webhook. FACEIO’s request includes details of the ongoing event such as the Unique Facial ID of the user being enrolled or authenticated, its gender & age in case of new enrollment, timestamps, event type, IP information, linked payload, and many others details.

Enabling Webhooks

Registering your Webhook endpoint URL for receiving events for your FACEIO application is straightforward as shown in the detailed steps below:

  1. Connect to your account via the FACEIO Console first.
  2. From the console main view, visit the Application Manager.
  3. Select the target application for which you want to setup webhooks for.
  4. Navigate to the WEBHOOKS tab from the manager main view.
  5. Once the target application selected. Enter your Webhook Endpoint URL for receiving events and save your modification.
  6. You're all set. Upon an event is triggered, FACEIO shall make an HTTP POST request to the URL you configured for the Webhook with the appropriate fields.

Major Enhancements

Starting with the 1.9 release, here are the quick highlights, with more details in the Webhooks page dedicated documentation:

  • Faster notifications.
  • JSON Based POST Requests.
  • IPv6 Support.
  • Payload Field Inclusion.
  • HTTP1.1/2 Protocol Support.
  • Full Support for TLS 1.3 Requests.

fio.js V1.9 Released with Face Duplication Prevention

FACEIO Logo

The PixLab development team is pleased to announce the immediate availability of FACEIO's fio.js V 1.9. A major release which implements highly requested features from our customers including but not limited to:

  • Face Duplication (same user enrolling twice or more) Prevention.
  • Dynamic Session Reloading without Page Refreshing.
  • Faster facial features collection during enrollment.
  • Upto 1.3x faster facial authentication operation.
  • French, Japanese, Vietnamese & Dutch new language packs.

As usual, this update is transparent to our end users & fio.js implementers, and no action is required on your side if you link directly the library from the FACEIO CDN.

Face Duplication Prevention:

Face Duplication Prevention

When enabled, this option shall prevent the same user from enrolling twice or more on your application. That is, if the facial features of the user being enrolled are already recorded, the enroll operation is aborted, and the fioErrCode.FACE_DUPLICATION error code is raised to your host application instead. This option is immediately available to trigger from the FACEIO Console. Please refer to the updated boilerplate code to see this feature in action.

When this option is disabled (default case), it is considered, a no-error operation for the same user to enroll twice or more on your application. This will trigger a collision, and ask the user to confirm his PIN code whenever an authentication operation occurs with the user in question.

Session Reloading without Page Refreshing:

The introduced restartSession() method let you purge the current user session and request a new one. By default, sessions in FACEIO starts following the first call to the enroll() or authenticate() method whichever comes first, and are immutable. After successful call to this method, the old session is discarded, a new one is created, and you can perform another round of calls to enroll() or authenticate() for the same user without reloading (refreshing) the entire HTML page or relying on an external JavaScript function such as location.reload() to do so.

Please note that dynamic session generation via this method are available to the Premium Plans only. Think of upgrading your Freemium application from the FACEIO Console first before calling this method on your frontend

Finally, for additional information & to learn more about implementing FACEIO on your website or web application, please refer to the following documents:

  • Getting Started Tutorial: Learn the fundamentals about implementing facial authentication on a typical web application.
  • Integration Guide: Learn how to implement fio.js, our facial recognition library on your website.
  • Developer Center: Code samples, documentation, support channels, and all the resources yo need to implement FACEIO on your website.
  • Frequently Asked Questions: Get instant answers to the most common questions.
  • Trust Center: Learn how we handle your data securely and in compliance with privacy and legal requirements.

Press Release & New Languages Pack for FaceIO

We are pleased to share our Press Release launch document, as well as, new enhancement introduced to FaceIO, our Web based facial Recognition framework for Websites & Web applications with a set of new languages pack for a more than friendly user experience (UX).

New FaceIO language pack

Since its launch two months ago, FaceIO have been proven to be a rock solid product, with a slick & easy integration regardless of the underlying JavaScript framework whether it is React.js, Next.js, Vue.js, Angular or even Vanilla JavaScript. As of this announcement, Over 10K FaceIO Applications has been deployed, easing users authentication thanks to a passwordless experience powered by face recognition.

Available Language Pack

  • English (en Default, fallback language)
  • German (de)
  • Portuguese (pt)
  • Spanish (es)
  • Dutch (nl)
  • Japanese (ja)
  • French (fr)
  • Vietnamese (vi)

Upcoming Language Pack

  • Korean (kr)
  • Arabic (ar)
  • Italian (it)
  • Simplified Chinese (cz)
  • Polish (pl)
  • Russian (ru)
  • Czech (cs)
  • Indonesian (id)
  • Malay (ms)
  • Turkish (tr)

FaceIO Launch Press Release

Symisc Sytems Logo

Community Articles & Tutorials

FaceIO Logo

It’s super quick to implement FaceIO, and get it up & running on your website or web application. The following tutorials, and guides should help you roll facial recognition to your web users in a straightforward manner:

FACEIO - Facial Authentication Framework Officially Launched

PixLab is delighted to announce the immediate availability of FACEIO, our web-based, facial authentication framework developed from scratch here at PixLab in the past few years.

Introducing FACEIO - Facial Authentication for the Web

The TLDR;

FACEIO is a cross-browser, facial authentication framework that can be implemented on any website via simple JavaScript snippet to easily authenticate users via Face Recognition instead of the traditional login/password pair or OTP code.

You can start implementing FACEIO on your website or web-based application immediately by following our getting started guide here.

The Developer Intro

FACEIO is a cross-browser, Cloud & On-Premise deployable, facial authentication framework, with a client-side JavaScript library (fio.js) that integrates seamlessly with any website or web application desiring to offer secure facial recognition experience to their users.

Put it simply, FACEIO is the easiest way to add passwordless authentication to web based applications. Simply implement fio.js on your website, and you will be able to instantly authenticate your existing users, and enroll new ones via Face Recognition using their computer Webcam or smartphone frontal camera on their favorite browser.

Once fio.js implemented on your website, you'll be able to instantly recognize your existing users, on-board new members securely with maximum convenience, and at real-time thanks to passwordless experience powered by face recognition.

FACEIO works with regular Webcams or smartphones frontal camera on all modern browsers, does not require biometric sensors to be available on the client side, and works seemingly with all websites and web-based applications regardless of the underlying front-end JavaScript framework or server-side language or technology.

Features

  • Authenticates and confirms identity of users instantly without FIDO keys, OTP codes, or security questions.
  • Full cross-browser compatibility (Chrome, Firefox, Safari, Edge & Chromium derivatives).
  • Zero external dependency. Only standard technology implemented in plain JavaScript & CSS.
  • Defense grade accuracy with less than 100 milliseconds recognition speed powered by state-of-the-art facial recognition engines.
  • Highest security standards. Privacy by design with maximum user convenience. No requirements for biometric sensor.

Adding FACEIO to your website

Enroll New User

Implementing FACEIO on your website or webapp is straightforward. Before so, you need to create a new application first on the FACEIO Console, and link this resource to your website or web application. The checklist below highlights the steps to follow for a smooth integration of fio.js on your site:

  1. Create a new FACEIO application first: Follow the Application Wizard on the FACEIO Console to create your first application and link it to your website or web application.
  2. The Application Wizard should automate the creation process for you. Usually, this involve inputting an application name, selecting a facial recognition engine, cloud storage region, reviewing security options, customizing the Widget layout, and so forth... FACEIO Application Wizard
  3. Once your first FACEIO application created, simply implement fio.js, our facial recognition JavaScript library on your website, and initialize the library with your application Public ID.
  4. Congratulations 👏. You have FACEIO up & running! Now, it's time to enroll() and authenticate() your first user via face recognition. Refer to the HTML Integration Boilerplate on how to do so...

Some Links to Get Started

It’s super quick to implement FACEIO, and get it up & running on your website or web application. The following tutorials, and guides should help you get started with FACEIO:

PixLab’s Document Scanner now able to scan Driving License issued by any U.S. state

The PixLab Optical Character Recognition team is thrilled to announce that its document scanning API endpoint /DOCSCAN, is now able to scan U.S. Driver’s licenses and driving permits issued by jurisdictions from all the 50 U.S. states.

DOCSCAN API endpoint now supports scanning US driver’s license from all 5O states

The /DOCSCAN API endpoint now allows any Website that is presented with a U.S Driver’s License, International Passport or ID Card to verify that the inputted information by the end user matches those present on the submitted or uploaded ID document image.

Usage & Code Samples

Given an input U.S driver’s license image issued by any of the 50 U.S. states, crop the license holder face, and extract fields of interest as follow:

Input U.S driver’s license image Courtesy of Victor Metelskiy Input U.S driver’s license image

Extracted Fields Showcase extracted fields from the submitted driver's image

The extracted fields after successful call to the /DOCSCAN API endpoint are:

  • License holder cropped face. This image will be stored on an AWS S3 bucket of your choice if you connect your target bucket from the PixLab Console.
  • Issuing Country (USA obviously).
  • Issuing State Name.
  • Issuing State Two-Letter Code.
  • License Number.
  • License Holder’s Full Name.
  • License Holder’s Address.
  • License Holder’s Date of Birth (yyyy-mm-dd).
  • License Issuing Date (yyyy-mm-dd).
  • License Expiry Date (yyyy-mm-dd).
  • License Holder’s Gender.

The code samples that is used to achieve such results are available via the following Gists:

Algorithms Under the hood

  • Face extraction is automatically performed using the /FACEDETECT API endpoint.
  • /DOCSCAN already supports GET & POST HTTP methods so you can upload your document images directly from your application without relying on a foreign server. Refer to this Gist on how to do so.
  • Upon the image processed on our server, it is automatically deleted. We do not keep trace or any log of your input images.
  • Internally, we mainly rely on PP-OCR which is a practical ultra-lightweight OCR system that is mainly composed of three parts: Text Detection, Bounding Box Isolation, & Text Recognition. This combination produces highly accurate results in less than 5 seconds of processing.

Further Reading

  • The official endpoint documentation is available to consult here, and the reader is more than encouraged to take a look at our production ready, code samples, available in various programming languages on the PixLab Code Samples Page.

Announcing PixLab On-Premises

Symisc Systems is pleased to announce the immediate availability of PixLab On-Premises for the general public.

PixLab Logo

PixLab On-Premises allows organizations with restrictive IT policies or requirements for tighter integration to deploy portion or the entire PixLab stack on their own infrastructure, giving them complete control over their media assets. The on-premise version of PixLab contains exactly the same features as the cloud solution, and it will require minimal IT intervention to deploy and maintain.

Notable Features Of PixLab On-Premises

  • Complete control over your media assets. No assets leaves the deployment server.
  • Passports & ID Cards scanning capabilities similar to the DOCSCAN API endpoint.
  • Not Safe for Work (NSFW) content moderation similar to the cloud NSFW API endpoint.
  • Image & Video tagging similar to the cloud TAGIMG API endpoint.
  • Straightforward & Automated Installation.
  • Continuous Updates, Bugs & Security Fixes.
  • TLS Encrypted Transaction.
  • Completely Removed Telemetry.

Eligibility, Package Order & Delivery

PixLab On-Premises is designed to address critical privacy and security needs of Enterprise customers without sacrificing performance or the user experience. Find out more information about system requirements, eligibility, how to place an order, supported environments, etc. on the dedicated page at pixlab.io/on-premise.

Full Scan Support for United Arab Emirates (UAE) ID/Residence Cards

The PixLab Document Scanner, development team is pleased to announce that is now fully support scanning Emirates (UAE) ID & Residence Cards via the /DOCSCAN API endpoint at real-time using your favorite programming language.

When invoked, the /DOCSCAN HTTP API endpoint shall Extract (crop) any detected face and transform the raw UAE ID/Residence Card content such as holder name, nationality, ID number, etc. into a JSON object ready to be consumed by your app.

Below, a typical output result of the /DOCSCAN API endpoint for an Emiratis (UAE) ID card input sample:

Input Emirates (UAE) ID Card

UAE ID card specimen

Extracted UAE ID Card Fields

UAE extracted fields

The code samples used to achieve such result are available to consult via the following gists:

The same logic applies to scanning official travel documents like Visas, Passports, and ID Cards from many others countries in an unified manner, regardless of the underlying programming language used on your backend (Python, PHP, Ruby, JS, etc.) thanks to the DOCSCAN API endpoint as shown in previous blog posts:

Algorithm Details

Internally, PixLab's document scanner engine is based on PP-OCR which is a practical ultra-lightweight OCR system, mainly composed of three parts: DB text detection, detection frame correction, and CRNN text recognition. DB stands for Real-time Scene Text Detection.

PP-OCR: A Practical Ultra Lightweight OCR System - Algorithm Overview

PP-OCR Algorithm Overview

The system adopts 19 effective strategies from 8 aspects including backbone network selection and adjustment, prediction head design, data augmentation, learning rate transformation strategy, regularization parameter selection, pre-training model use, and automatic model tailoring and quantization to optimize and slim down the models of each module.

In PP-OCR, Differentiable Binarization (DB) is used as text detector which is based on a simple segmentation network. It integrates feature extraction and sequence modeling. It adopts the Connectionist Temporal Classification (CTC) loss to avoid the inconsistency between prediction and label.

The algorithm is further optimized in five aspect where the detection model adopts the CML (Collaborative Mutual Learning) knowledge distillation strategy and CopyPaste data expansion strategy. The recognition model adopts the LCNet lightweight backbone network, U-DML knowledge distillation strategy and enhanced CTC loss function improvement, which further improves the inference speed and prediction effect.

New Gender/Age Classification Model Deployed

Here at PixLab, we recently deployed on production, a brand new gender/age classification model available to our customers via the FACEMOTION API endpoint.

gender age detection

  • The new model implementation is based on the ResNet-50 convolutional neural network (CNN) that is 50 layers deep. The network can easily classify images into 1000 object categories, such as keyboard, mouse, pencil, and many animals.

  • The reference, implementation paper is from: Jiankang Deng, Jia Guo, Niannan Xue, Stefanos Zafeiriou: Additive angular margin loss for deep face recognition. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2019 (https://arxiv.org/abs/1801.07698).

  • The Python/PHP code samples listed below should be able to easily output the age estimation, gender, and emotion pattern by just looking at the facial shape of any present human face in a given picture or video frame using our new classifcation model.

Python Code


  • FACEMOTION is the sole endpoint needed to perform such a task. It should output the rectangle coordinates for each detected human face that you can pass verbatim if desired to other processing endpoints like CROP or MOGRIFY plus the age estimation, gender and emotion pattern of the target face based on its facial shape.
  • Finally, all of our production ready, code samples are available to consult at our samples page or the PixLab Gihtub repository.

Announcing PixLab Annotate - An Online Image Annotation Tool

The PixLab Computer Vision team is pleased to announce the immediate availability of PixLab Annotate. A web based image annotation, labeling & segmentation tool for Machine Learning model training tasks and beyond...

Annotate Features Set:

  • Rectangle, Polygon, Zoom & Drag labeling tool.
  • Consistent JSON output accepted by most Machine Learning frameworks.
  • Optimized for instance segmentation (Mask R-CNN, etc).
  • Client-side persistent storage - No data transfer involved.
  • Persistent & easy label management (Create, Modify & Delete).
  • Full screen display & Snapshot capture.

Straightforward image segmentation and labeling thanks to the Rectangle & Polygon built-in tool!

At PixLab, we really believe that annotate is a great fit for data scientists, developers or students looking for a straightforward, online image segmentation and labeling tool for their daily machine learning model training tasks and beyond...

Annotate Homepage

Feature & Support Requests

Introducing the Pixel Generate API Endpoint

PixLab Logo

The PixLab Computer Vision Team is pleased to introduce the Pixel Generate API endpoint (/pixelgenerate) which let you in a single call, generate on the fly, images filled with random pixels of desired width & height using a mix of standard Image Processing and soon Machine Learning algorithms.

This endpoint is similar to /newimage except that the image contents is filled with random pixels. This is very useful for generating background (negative) samples for feeding Machine Learning training algorithms for example.

By default, this endpoint return a JSON object holding a link to the generated image output. But, you can set it via the Blob parameters to return the image binary contents instead.

Below, a Python snippet which generate on the fly a new image of height & width of 300x300 filled with random pixels using a single call to /pixelgenerate:

The code sample used to achieve such result is available to consult via the following Github link: