Build a Facial Recognition Access Control Solution

The application detects faces and registers the images into a database. It recognizes known users entering a designated area and grants access if a person’s face matches an image in the database.

Target Operating System Ubuntu* 16.04 LTS
Time to Complete 40 minutes

GitHub* (C++)

What You Will Learn

Learn how to create a smart video IoT solution that uses facial recognition to authorize access to secured entrances or restricted areas.

Gain insight into the following solutions:

  • Computer vision applications for IoT
  • Inference to analyze datasets
  • Retail or industrial market IoT

Use the skills learned in this reference implementation to develop similar IoT solutions.

Learn to build and run an application with these capabilities:

Detect and register the image of a person’s face into a database.
Recognize known users entering a designated area.
Grant access if a person’s face matches an image in the database.

How It Works

This solution consists of two main services that provide analytics and a user interface for data interpretation.

  1. Computer vision analytics: This C++ application uses the Intel® Distribution of OpenVINO™ toolkit and connects to a USB camera to detect faces.
    • The application performs facial recognition based on a training data file of authorized users to determine if a detected person is a known user.
    • Messages are published to an MQTT broker when users are recognized, and the processed output frames are written to stdout in raw format (to be piped to ffmpeg for compression and streaming). Here, the Intel photography vision library is used for facial detection and recognition.
  2. Application user interface: This application uses the MQTT broker to interact with the computer vision analytics service and is based on Node.js* to provide visual feedback at the user access station.
    • Users are greeted, when recognized, as authorized users or are given the option to register as new users.
    • The user interface displays a high-quality, low-latency motion JPEG stream along with data analytics.

The user interface also provides information on:

  • Live streaming video
  • User registration
  • Analytics of access history