Skip to main content

Components

A Face Matcher installation has three components, each with its own manual: the Face Matcher Server, the Station web UI and the Stream Processor for smart cameras and AI boxes. This page is the short tour; the manuals have every detail.

A Face Matcher installation has three kinds of parts: the server (a set of engine services), Station (the web UI) and, optionally, the Embedded Stream Processor running on smart cameras. All of them rely on three third-party dependencies that ship in the package. Everything runs as Docker containers on one Linux host by default; see Deployment topologies for spreading it over several.

Server​

The server processes RTSP streams and edge streams in parallel, detects and tracks faces, extracts templates, matches them against watchlists, evaluates passive liveness and stores the results with their images. It is accessed through the REST API, the GraphQL API with subscriptions and RabbitMQ notifications. Each responsibility is its own service, which is what makes the server scalable: services that carry the load can run in several instances.

ServiceScalableRole
baseNoHousekeeping: database cleanup, tracklet recovery and other shared functions.
apiYesREST API.
graphql-apiYesGraphQL API and subscriptions.
cam-1 to cam-5, cam-nxYesOne service per RTSP camera slot: decoding, in-process detection and tracking.
detectorYesFace detection on submitted images (CPU or GPU).
extractorYesFace template extraction plus age, gender and mask attributes (CPU or GPU).
livenessYesPassive liveness check (CPU or GPU).
matcherYesMatching of templates against watchlist members.
face-matcherYesThe face search service: matches a template against stored detections across the history.
pedestrian-detector, pedestrian-extractorYesPedestrian detection and attribute extraction (CPU or GPU).
object-detectorYesObject detection (CPU or GPU).
streamdatadbworkerYesWrites face, pedestrian and object tracklets from the streams into the database.
edge-stream-processorNoReceives results from Embedded Stream Processors; one service covers all edge cameras.
edge-streams-state-synchronizerNoSynchronizes watchlists to Embedded Stream Processors.
db-synchronization-leader, db-synchronization-followerNoLeader and Follower watchlist synchronization between sites.

See Architecture for how the services communicate and Scaling for how many instances to run.

Station​

Station is the web application for operators. It shows live camera previews and recent events, manages watchlists and their members, identifies a face from an uploaded image, browses the event history, and configures cameras, edge streams and the server's matching and retention settings. Station reads and writes through the REST and GraphQL APIs only, so anything it does can also be done by your own application. Logo, favicon and product naming are replaced by editing files in branding/; see Station.

Embedded Stream Processor​

The Embedded Stream Processor is an application for smart cameras and AI boxes. Its pipeline takes the camera input, tracks and detects faces, finds landmarks, extracts templates and optionally identifies them against a watchlist synchronized from the server, then publishes the metadata, crops and templates as MQTT messages. The server's edge-stream-processor consumes them as an edge stream. Supported devices, installation and settings are covered in Edge; the underlying SDK is a separate product documented under Embedded Biometrics.

Dependencies​

DependencyRoleDefault address
PostgreSQL 14Watchlists, cameras, detections, matches, configuration and face templates.pgsql:5432
RabbitMQ 4.3Messaging between services, notifications to integrators, MQTT broker for edge streams, streams for synchronization.rmq:5672 (AMQP), rmq:1883 (MQTT), rmq:5552 (streams)
SeaweedFSS3-compatible storage for enrollment images, face crops and full frames. Can be replaced by AWS S3.seaweedfs:8333, bucket face-matcher

pgAdmin is included for convenience on port 7070. Ports and credentials are listed in Network and ports.