Architecture

Though you mostly interact with FindFace CIBR through its web interface, be sure to take a minute to learn the FindFace CIBR architecture. This knowledge is essential for the FindFace CIBR deployment, integration, maintenance, and troubleshooting.

In this chapter:

Recognition Process

FindFace CIBR detects a human face in the photo or video and prepares its image through normalization. The normalized image is then used for extracting the face’s feature vector (an n-dimensional vector of numerical features that represent the face). Face feature vectors are stored in the database and further used for verification and identification purposes.

Docker Platform

FindFace CIBR is deployed in Docker, a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. Each FindFace CIBR service runs in a Docker container.

Architectural Elements

FindFace CIBR consists of the following fundamental architectural elements:

  • FindFace core, a cutting-edge AI-based recognition technology that can be used as a separate product FindFace Enterprise Server.

  • Application Module (FindFace CIBR), implementing a set of tools for criminal investigations based on video footage and photo files.

Architecture scheme

architecture_en

FindFace core

There is a separate product FindFace Enterprise Server inside the FindFace core. It includes the following components:

Component

Ports in use

Description

Vendor

findface-extraction-api

18666

Service that uses neural networks to detect a face in an image and extract its feature vector. It also recognizes face attributes, for example, gender, age, emotions, beard, glasses, etc. CPU- or GPU-acceleration.

NtechLab own deployment

findface-sf-api

18411

Service that implements the internal HTTP API for face detection and recognition.

findface-tarantool-server

32001, shard ports (default 330xx, 81xx)

Service that provides interaction between the findface-sf-api service and the feature vector database (the Tarantool-powered database that stores face feature vectors).

findface-upload

3333

NginX-based web server used as a storage for original images, thumbnails, and normalized face images.

findface-facerouter

18820

Service used to define processing directives for detected faces. In FindFace CIBR, its functions are performed by findface-multi-legacy (see Application Module (FindFace CIBR)).

findface-video-manager

18810, 18811

Service, part of the video face detection module, that is used for managing the video face detection functionality, configuring the video face detector settings and specifying the list of to-be-processed video files.

findface-video-worker

18999

Service, part of the video face detection module, that recognizes a face in the video and posts its normalized image, full frame and metadata (such as detection time) to the findface-facerouter service for further processing according to given directives. CPU- or GPU-acceleration.

findface-ntls

443 (TCP), 3133, 3185

License server that interfaces with the NtechLab Global License Server, a USB dongle, or hardware fingerprint to verify the license of your FindFace CIBR instance.

findface-counter

18300

Service used for event deduplication.

Tarantool

Shard ports (default 330xx, 81xx)

Third-party software that implements the feature vector database that stores extracted face feature vectors and identification events. The system data, records, user accounts are stored in PostgreSQL (part of the FindFace CIBR application module).

Tarantool

etcd

2379

Third-party software that implements a distributed key-value store for findface-video-manager. Used as a coordination service in the distributed system, providing the video face detector with fault tolerance.

etcd

NginX

80; SSL: 8002, 8003, 443, 80

Third-party software that implements the system web interfaces.

nginx

memcached

11211

Third-party software that implements a distributed memory caching system. Used by findface-sf-api as a temporary storage for extracted face feature vectors before they are written to the feature vector database powered by Tarantool.

memcached

Application Module (FindFace CIBR)

The FindFace CIBR application module includes the following components:

Component

Ports in use

Description

Vendor

findface-multi-legacy

Configurable

Service that serves as a gateway to the FindFace core. Provides interaction between the FindFace core and the web interface, the system functioning as a whole, HTTP and web socket, face monitoring, event notifications, etc.

NtechLab own deployment

findface-multi-pause

n/a

Internal services that assist findface-multi-legacy. The findface-multi-audit service is created for the future. It will become full-fledged in the upcoming versions. As for now, it partly duplicates the findface-multi-legacy functionality. Use findface-multi-legacy to work with it. The findface-multi-identity-provider is the service for authentication, user management, and management of role-based model of accesses.

findface-multi-audit

8012, 8013, 8014

findface-multi-identity-provider

8022, 8023, 8024

cleaner

n/a

The service is responsible for the data cleanup.

findface-multi-ui

Configurable

Main web interface used to interact with FindFace CIBR. Based on the Django framework. Allows you to work with face recognition events, search for faces, manage cases, users, record index, watch lists, and many more.

NATS

4222

Third-party software that implements a message broker in findface-multi-legacy.

NATS

etcd

2379

Third-party software that implements locks in the findface-multi-legacy service, such as locks in NTLS checker, reports, video processing, etc.

etcd

Pgbouncer

5439

Third-party software, a lightweight connection pooler for PostgreSQL. Optional, used to increase the database performance under high load.

PgBouncer

PostgreSQL

5432

Third-party software that implements the main system database. This database stores records of individuals and data for internal use. The face feature vectors and face identification events are stored in Tarantool (part of the FindFace core).

PostgreSQL

CPU- and GPU-acceleration

The findface-extraction-api and findface-video-worker services can be either CPU- or GPU-based. You will have an opportunity to choose the acceleration type you need during the installation.

Important

Refer to Requirements when choosing hardware configuration.

Important

If video resolution is more than 1280x720px, it is strongly recommended to use the GPU-accelerated package findface-video-worker.