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:
FindFace Security consists of the following fundamental architectural elements:
- FindFace core, a cutting-edge AI-based face recognition technology that can be used as a separate product FindFace Enterprise Server.
- FindFace Security, which is a turnkey application module for FindFace Enterprise Server.
The FindFace core includes the following components:
|findface-extraction-api||Service that uses neural networks to detect a face in an image and extract a face biometric sample (feature vector). It also performs recognition of face attributes such as gender, age, emotions, beard, glasses, face mask, and others, and silhouette recognition (if configured). CPU- or GPU-acceleration.||NtechLab own deployment|
|findface-sf-api||Service that implements HTTP API for face detection and face recognition.|
|findface-tarantool-server||Service that provides interaction between the
|findface-upload||NginX-based web server used as a storage for original images, thumbnails and normalized face images.|
|findface-facerouter||Service used to define processing directives for detected faces. In FindFace
Security, its functions are performed by
|findface-video-manager||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||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 the camera ID and
detection time) to the
|findface-ntls||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) and face identification events. The system data, dossiers, 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
|NginX||Third-party software which implements the system web interfaces.||nginx|
|memcached||Third-party software which implements a distributed memory caching system.
The FindFace Security application module includes the following components:
|findface-security||Component 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, biometric monitoring, event
notifications, episodes, webhooks, and counters.
Includes the following internal services: NTLS checker, Counter manager, Webhooks
manager, Persons clusterizator, Event episodes manager, and Video archive queue
manager. The last four can be enabled and disabled via the
||NtechLab own deployment|
|findface-security-ui||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, collect real-time statistics, and many more.|
|findface-counter||Service used for face deduplication.|
|PostgreSQL||Third-party software which implements the main system database that stores detailed and categorized dossiers on particular persons, as well as data for internal use such as user accounts and camera settings. The face biometric data and face identification events are stored in Tarantool (part of the FindFace core).||PostgreSQL|
|Pgbouncer||Third-party software, a lightweight connection pooler for PostgreSQL. Optional, used to increase the database performance under high load.||PgBouncer|
|Redis||Third-party software which implements a message broker inside
|Django||Third-party software which implements a web framework for the FindFace Security web interface.||Django|
Besides the embedded functionality provided by
findface-video-worker, face liveness detection can also be harnessed as a standalone service
findface-liveness-api. The service takes a specific number of frames from a video fragment and returns the best quality face, and decimal liveness result averaged across the taken frames. If configured, the service can also return full-frame and normalized face images and save the detection result in the
findface-sf-api cache, returning
detection_id. See Liveness Detection as Standalone Service.
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-workercomponents across multiple hosts.
- Distribute the FindFace Security components across multiple hosts. If necessary, set up load balancing.
See Guide to Typical Cluster Installation for details.
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-video-worker-cpu packages on a CPU-based server, and the
findface-video-worker-gpu packages on a GPU-based server.
Refer to System Requirements when choosing hardware configuration.
If the resolution of a camera(s) in use is more than 1280x720px, it is strongly recommended to use the GPU-accelerated package
The liveness detector is much slower on CPU than on GPU.