FACE RECOGNITION

Brief Introduction

This solution provides the following:

  • Face recognition accuracy 99.38%

  • Ability to identify multiple people at once in real time based on one or more reference images. 

  • Ability to track and assign a unique identifier to each person in the camera image or video. 

  • Ability to return a similarity measured between detected faces and reference faces.

 

Business case

Can be used in access control systems or Online Proctoring systems for student authentication etc. 

Technical detailes

Input 1 (video or image to process, capable of processing): ​

  • mjpeg stream

  • rtsp stream

  • USB camera devices

  • video files (avi, mp4, mkv formats supported)

  • standalone image files (.png, .jpg formats supported)

 

Input 2

  • Reference images to which the system compares the faces in the image. (.png, .jpg formats supported)


Outputs: 

  • Processed video frame

  • The faces in the frame (boinding boxes)

  • For each face:

    • Unique Tracking ID (when processing a video file, the same ID on each frame belongs to the same person)

    • The most similar reference face ID

    • Degree of similarity to the reference face

    • 5 facial landmark points

  • The system is able to to write the processed video to a video file. 

The demo video was recorded on a HP Laptop 15-DA0042NH (Processor: Intel(R) Core(TM) i7-8550U CPU, RAM: 8 Gb). 

It used 500 Mb RAM and the CPU usage was 65% during the recording. 

The input video was captured using a Xiaomi CMSXJ22A web camera. The input resolution was 1080p.

During recording, the system processing speed was stable above 50 FPS. When processing a single face, the system can maintain this speed on this hardware. When processing multiple faces, the system may be slower. The visualization was added to the video afterwards. The visualization in the video can be done live, but may slow down processing. 

The system is written entirely in C++ and uses the following libraries/technologies: