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:

  • Getting Started Tutorial: Learn the fundamentals. Your first steps with FACEIO...
  • Integration Guide: Learn how to implement fio.js, our facial recognition library on your website before rolling facial authentication to your audience...
  • Developer Center: Code samples, documentation, support channels, and all the resources you 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.
  • Implement Facial Authentication on your Vue.js App: In this article we’ll walk through how to set up a vue typescript webpack that uses FACEIO as an authenticator.

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 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 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:

Modern Passport Structure & Bulk Scan APIs

A Passport is a document that almost everyone has at some point in their lives. It is issued by the country’s government to its citizens and mainly being used for traveling purposes. It also serves as proof of nationality, name, and more importantly an Universally Unique ID for its owner.

Modern Passport Structure

Passport Specimen

Many services have been long-time accepting passports as identification documents from their customers to complete their KYC (Know Your Customer) form as required by the legislation in force. This is especially true and enforced for the Finance, HR or Travel sectors. In most cases, a human operator will verify the authenticity of the submitted document and grant validation or reject it.

Things can get really complicated if you have hundreds of KYC forms to checks, but also if your clients differ in nationality. Quickly, you will find yourself drowning in physical copies of passports in different languages that you can not even understand. Let alone the potential legal problems you can face with passport copies laying around the office. This is why, an automated & safe solution for Passports processing is required!

Modern Passport Structure

From the 1980s on wards, most countries started issuing passports containing an MRZ. MRZ stands for the Machine Readable Zone and is usually located at the bottom of the Passport as shown below:

Modern Passport Specimen

Passports MRZ Sample

Passports that contain an MRZ are referred to as MRPs, machine-readable passports (Almost all modern issued Passports have one). The structure of the MRZ is standardized by the ICAO Document 9303 and the International Electro-technical Commission as ISO/IEC 7501-1.

The MRZ is an area on the document that can easily be read by a machine using an OCR Reader Application or API. It’s not important for you to understand how it works, but if you look at it carefully, you will see that it contains most of the relevant information on the document, combined with additional characters and a checksum that can be extracted programmatically and automatically via API as we will see in the next section.

Once parsed, the following information are automatically extracted from the target MRZ and made immediately available to your app, thanks to the /docscan API endpoint:

  • issuingCountry: The issuing country or organization, encoded in three characters.
  • fullName: Passport holder full name. The name is entirely upper case.
  • documentNumber: This is the passport number, as assigned by the issuing country. Each country is free to assign numbers using any system it likes.
  • checkDigit: Check digits are calculated based on the previous field. Thus, the first check digit is based on the passport number, the next is based on the date of birth, the next on the expiration date, and the next on the personal number. The check digit is calculated using this algorithm.
  • nationality: The issuing country or organization, encoded in three characters.
  • dateOfBirth: The date of the passport holder's birth in YYMMDD form. Year is truncated to the least significant two digits. Single digit months or days are perpended with 0.
  • sex: Sex of the passport holder, M for males, F for females, and < for non-specified.
  • dateOfExpiry: The date the passport expires in YYMMDD form. Year is truncated to the least significant two digits. Single digit months or days are perpended with 0.
  • personalNumber: This field is optional and can be used for any purpose that the issuing country desires.
  • finalcheckDigit: This is a check digit for positions 1 to 10, 14 to 20, and 22 to 43 on the second line of the MRZ. Thus, the nationality and sex are not included in the check. The check digit is calculated using this algorithm.

Automatic Passport Processing

PixLab Logo

Fortunately for the developer wishing to automate Passports scanning, PixLab can automatically scan & extract passport MRZ but also help to detect possible fraudulent documents. This is made possible thanks to the /docscan API endpoint which let you in a single call scan government issued documents such as Passports, Visas or ID Cards from various countries.

Besides extracting MRZ, the /docscan API endpoint shall automatically crop any detected face and transform binary Machine Readable Zone into stream of text content (i.e. full name, issuing country, document number, date of expiry, etc.) ready to be consumed by your app in the JSON format.

Below, a typical output result of the /docscan endpoint for a passport input image:

Input Passport Specimen (JPEG/PNG/BMP Image)

Input Image URL

Extracted MRZ Fields

MRZ Fields

What follow is the gist used to achieve such result:

Other document scanning code samples are available to consult via the following Github links:

Face extraction is automatically performed using the /facedetect API endpoint. For a general purpose Optical Character Recognition engine, you should rely on the /OCR API endpoint instead. If you are dealing with PDF documents, you can convert them at first to raw images via the /pdftoimg endpoint.

Conclusion

The era we are in is more digitized than ever. Tasks that are repetitive are slowly being replaced by computers and robots. In many cases, they can perform these tasks faster, with a smaller amount of mistakes and in a more cost-effective manner. At PixLab we focus on building software to replace manual repetitive labor in administrative business processes. The processing and checking of passports can be very time-consuming. Using /docscan to automate your passport processing will enable you to save cost, on-board customers faster and reduce errors in administrative processes.

Detect & Blur Faces Programmatically using PixLab

Our colleague Vincent just published an interesting blog post on how to automatically detect and blur faces at real-time using the PixLab API with a nice introduction on how modern face detection algorithms works under the hood and the privacy concerns related to such use of technology!

Blurred Faces

Talkie OCR - Image to Speech Now on the App Store

Developed by our colleague Mrad Chams from Symisc Systems and entirely powered by the PixLab OCR API endpoint.

Talkie OCR - Image to Speech

Talkie OCR - A state-of-the-art OCR scanner that practically turn almost any images with human readable characters into text content which is in turn transformed into human voice in your native language & accent. Built in features includes:

  • Automatically Recognize the Input Language & Speaks your Accent: Once the scanned image (Book page, magazine, journal, scientific paper, etc.) recognized & transformed into text content, you'll be able to playback that text in your local accent & over 45 languages of your choice!
  • State of the art OCR processing algorithm powered by PixLab.
  • Speaks over 45 languages with their accents.
  • Built-in translation service to over 30 foreign languages of your choice.
  • Built-in Vision Impaired Mode with the ability to recognize the input language automatically.
  • Playback Pause & Resume at Request.
  • Offline Save for Later Read & Playback.

Download on the App Store Get it on Google Play