Skip to main content

Stream Processor

The Embedded Stream Processor is the face-recognition pipeline that runs directly on a smart camera or an AI box. Instead of streaming video to the server, the device processes its own camera input and publishes only the results — face metadata, crops and templates — as FrameData messages over MQTT (Message Queuing Telemetry Transport). Face Matcher receives these messages as an edge stream and treats them like any other camera: matching against watchlists, events, notifications and history all work the same way. See On-edge processing for when to choose this over server-side RTSP.

Embedded Stream Processor pipeline: camera input, tracking, face detection, landmarks, template extraction, identification and MQTT messaging

What runs on the device​

The pipeline reads frames from the camera sensor (or from a GStreamer source on AI boxes), then runs these stages on the device's neural-network accelerator. Every stage after tracking can be switched on or off in the device's settings.yaml, so you decide how much work happens on the edge and how much stays on the server.

StageWhat it doesSetting
Face detectionFinds faces in each frame, returns bounding boxes and a confidence scoreface_detection
TrackingAssigns a tracking ID to each face across frames so one person produces one tracklettracking
Face landmarksLocates 23 facial keypoints used for alignment, head pose and mask detectionalways on
Template extractionProduces a compact face template for matchingface_extraction
Face identificationMatches the template against a watchlist stored on the deviceface_identification
Passive livenessScores whether the face is a real person or a presented photo, screen or mask (Distant or Nearby mode)face_liveness_passive

What it sends​

The device publishes a FrameData message to the MQTT broker whenever a new face appears and at least every messaging.interval milliseconds. Depending on configuration, a message carries bounding boxes, landmarks, face crops, face templates, identification candidates, liveness scores and the active, new and lost tracking IDs; full frames can be included for debugging. Messages are serialized as Protobuf by default, or as JSON or YAML. A retained health message reports whether the device is online. The full topic layout and message schema are on the MQTT API page.

How it relates to Face Matcher​

Face Matcher's broker is RabbitMQ with the MQTT plugin enabled (host port 1883). Two engine services handle edge devices:

  • edge-stream-processor subscribes to edge-stream/<client_id>/frame_data for every registered edge stream and feeds the results into the same processing chain as server-side cameras — watchlist matching, save strategies, notifications and event history. If the device sends no templates, the server extracts them from the crops.
  • edge-streams-state-synchronizer keeps the watchlists you select in Station synchronized to the device's local database, so identification can run on the edge and the device reports a match, not just a face.

You register each device in Station as an edge stream with a client ID, and Station then pushes processing settings and the device license to it and shows its health. See Connect to Face Matcher.

Two integration paths​

PathBrokerWho consumes FrameDataWatchlistsUse when
With Face Matcher (recommended)Face Matcher's RabbitMQ, port 1883The edge-stream-processor serviceSynchronized from Face MatcherYou want events, history, notifications and Station management
StandaloneYour own MQTT broker (or the mqtt_broker binary shipped with AI-box packages)Your application, subscribed to the device topicsManaged through the device's own user and db topicsYou are building a local application and do not need the server

Both paths use the same device software and the same settings.yaml; only the connection section differs.

Where to go next​

The on-device algorithms come from the Innovatrics Embedded Toolkit, which is a separate product; this section documents only what you need to run it as an edge stream. For issues with the device software, contact sfembedded-integration@innovatrics.com.