Architecture

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

In this chapter:

Architectural Elements

FindFace Security consists of the following basic architectural elements:

  • FindFace core,
  • FindFace Security application module.

FindFace Core

The FindFace core includes the following components:

_images/architecture.png
Component Description Vendor
findface-extraction-api A service which uses neural networks to detect a face in an image and extract a face biometric sample (feature vector). CPU- or GPU-acceleration. Ntech Lab own deployment
findface-sf-api A service that implements HTTP API for face detection and face recognition.
findface-tarantool-server A service that provides interaction between the findface-sf-api service and the biometric database (database that stores face biometric samples) powered by Tarantool.
findface-upload An NginX-based web server used as a storage for original images, thumbnails and normalized face images.
findface-facerouter A service used to define processing directives for detected faces. In FindFace Security, findface-facerouter functions are performed by findface-security (see FindFace Security Application Module).
findface-video-manager A 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 streams.
findface-video-worker A service, part of the video face detection module, which recognizes a face in video and posts its normalized image, full frame and metadata (such as the camera ID and detection time) to the findface-facerouter service for further processing according to given directives. CPU- or GPU-acceleration.
findface-ntls A license server which interfaces with the NtechLab Global License Server or a USB dongle to verify the license of your FindFace Security instance.
Tarantool Third-party software which implements the biometric database that stores extracted biometric samples (feature vectors). The system data, dossiers, face identification events, user accounts and camera settings are stored in PostgreSQL (part of the FindFace Security application module). Tarantool
etcd 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 Third-party software which implements the system web interfaces. nginx
memcached Third-party software which implements a distributed memory caching system. Used by findface-extraction-api as a temporary storage for extracted face biometric samples before they are written to the biometric database powered by Tarantool. memcached

FindFace Security Application Module

The FindFace Security application module includes the following components:

Component Description Vendor
ffsecurity A component which serves as a gateway to the FindFace core. Provides interaction between the FindFace Core and the web interface, and the system functioning as a whole. The ffsecurity component includes 4 services: findface-security-proto (provides HTTP and web socket), findface-security-worker (provides interaction with the other system components), findface-security-monitoring-updater (updates the monitoring gallery in the biometric database), and findface-security-webhook-updater (pulls webhooks). Ntech Lab own deployment
ffsecurity-ui A main web interface that is used to interact with FindFace Security. Allows you to work with face identification events, search for faces, manage cameras, users, dossiers, and watch lists.
PostgreSQL Third party software which implements the main system database that stores detailed and categorized dossiers on particular persons, face identification events, as well as data for internal use such as user accounts and camera settings. The face biometric data are stored in Tarantool (part of the FindFace core). PostgreSQL
Redis Third-party software which implements a message broker between the findface-security-proto and findface-security-worker services (parts of ffsecurity). Redis
Django Third-party software which implements a web framework for the FindFace Security web interface. Django

Single- and Multi-Host Deployment

You can deploy FindFace Security on a single host or in a cluster environment. If you opt for the latter, we offer you one of the following deployment schemes:

  • Deploy FindFace Security standalone and distribute additional findface-video-worker components across multiple hosts.
  • Distribute the FindFace Security components across multiple hosts. If necessary, set up load balancing.

CPU- and GPU-acceleration

The findface-extraction-api and findface-video-worker services can be either CPU- or GPU-based. During installation from the developer-friendly installer, you will have an opportunity to choose the acceleration type you need.

If you opt to install FindFace Security from the repository package, deploy the findface-extraction-api and findface-video-worker packages on a CPU-based server, and the findface-extraction-api-gpu and/or findface-video-worker-gpu packages on a GPU-based server.

Important

Refer to System Requirements when choosing hardware configuration.

Important

If the resolution of a camera(s) in use is more than 1280x720p, it is strongly recommended to use the GPU-accelerated findface-video-worker-gpu package.