SmartFace Embedded Stream Processor

[3.1.0] - 2024-05-10

Changed

  • Storage is now entirely memory-mapped.
    • Metadata keys are limited to 31B and values are unlimited in size
  • Moved storage path from ‘settings.face_identification.storage’ to ‘settings.storage.path’
  • Resetting settings update will restore startup settings
  • Removing the settings update message will now correctly restore the initial license
  • Database synchronization ID (DSID) string is now limited to 255B

[3.0.0] - 2023-04-17

Added

  • Retained MQTT settings message can now override settings from settings.yaml.
  • The health message now contains license status and HWID.

Changed

  • Settings file changes no longer cause Stream Processor to restart. Instead, the settings are reloaded and applied on startup.
  • The supported Solver API version is now v0.9.x, old solvers (< 0.9) are not compatible

Removed

  • THE SFE settings server is removed from the Stream Processor. Settings are now read from the settings.yaml on startup and can be updated via the MQTT topic
  • The user register topic has been removed.

[2.6.6] - 2024-03-15

Added

  • AMBARELLA_BUFFER_ID env variable is replaced by settings for camera_input.ambarella.solver as ambarella_buffer_id. (Ambarella solver 0.8.8)

Removed

  • Removed AMBARELLA_BUFFER_ID env variable

[2.6.5] - 2024-03-11

Changed

  • Input and output solvers loading is cached.

Fixed

  • Fixed freezing when sfe_stream_processor restarted

[2.6.4] - 2024-02-28

Changed

  • MQTT topic user/register is deprecated and will be removed in the next major release.

Fixed

  • Fixed duplicated User and Metadata in storage when user-centric MQTT topic is used

[2.6.3] - 2024-02-16

Added

  • Added filtering of faces by minimal and maximal face size.

[2.6.2] - 2024-02-09

Fixed

  • Fix in licensing

[2.6.1] - 2024-02-02

Added

  • Added support for Ambarella cv28 architecture.

Changed

  • Ambarella solvers unified for cv2, cv22, cv25 and cv28 to provide same accuracy on all platforms
  • New feature-based licensing for solvers - old licenses won’t work
  • IMPORTANT: From SFE Stream Processor version 2.6.1 you should use the new license type for license generation (prefixed with NEW)

[2.6.0] - 2023-12-20

Added

  • Internal changes

Removed

  • Removed settings for landmark threshold and face mask threshold

[2.5.6] - 2023-12-12

Added

  • Added support for Jetson with Jetpack 4.4 and 4.6

Changed

  • db::update message now uses a more efficient delete operation allowing it to scale better when deleting a large number of records
  • Identification errors will now be reported in logs

[2.5.5] - 2023-11-30

Fixed

  • Health status ONLINE is now sent after the Client is subscribed to topics

[2.5.4] - 2023-11-28

Fixed

  • Fix in identification

[2.5.3] - 2023-11-21

Changed

  • Health status ONLINE is now sent after a client has been connected to a broker.
  • The Client subscribes to topics after it is successfully connected to a broker.

Fixed

  • Fixed MQTT client with no subscriptions after a restarted broker.

[2.5.2] - 2023-11-13

Fixed

  • Addressed the issue of reconnecting to a broker when it was previously offline.

[2.5.1] - 2023-11-06

Added

  • Added user/+/metadata MQTT topic to support custom user data for user-centric MQTT API
  • Added db/clear MQTT topic to support direct DB reset, for example, using SFE Client GUI app
  • Special handling of zero-copy solvers was extended to support Hailo and ONNX Runtime.

Changed

  • Misc solvers updated to v0.8.5.
  • ONNX Runtime solver updated to v0.8.5.
  • StreamProcessor with onnxrt/onnxrt_gpu solvers requires zero-copy frame input solvers.

[2.5.0] - 2023-10-10

Added

  • New, passive liveness detection strategy
    • face_liveness_passive.liveness_strategy setting set liveness evaluation to be performed on every extracted face or only on matched faces
    • liveness conditions evaluation for passive liveness distant in Stream Processor and FrameData messages
  • face_detection.order_by setting can set the ordering of the detected faces by the detection confidence or the size of the face.
  • sfe_stream_processor health report messages are now published via MQTT topic :topic/:client_id/health (SE-204)
  • Learned to handle storage update messages on topic :topic/:client_id/db/update
  • Added Storage status messages on topic :topic/:client_id/db/status
  • Added Custom user data support in records storage and FrameData message

Changed

  • Changes in FrameData message
    • Added DSID (database version) to IdentificationData
    • Added MetaData to IdentificationData
    • Added identification (true/false) flag in FaceData
    • IdentificationData.id is deprecated and will be replaced by uuid
    • Added liveness_conditions and conditions_met to LivenessData
    • Some structures are moved to common.proto
  • Records storage is now a single binary file
  • Integrated new passive liveness DISTANT model with significantly improved accuracy

Fixed

  • face_detection.max_detection setting now represents the maximal number of detected faces that will be evaluated in later enabled processes

[2.4.0] - 2023-07-21

Added

  • new sfe_settings_server
    • new UI schema
    • logging
  • solver parameters can be set via settings.yaml -> solvers.<solver_name>.parameters, sfe_settings_server or environment variables
  • License data can be set via settings.yaml -license.data which overrides system-provided licensing data.
    • The format of the data string is Base64 (RFC 4648) encoded license file.
  • Log level and log file path can be configured via settings.yaml
  • full_frame.image_quality setting can set frame image compression quality for formats that support it (Jpeg). The range is <0.0, 1.0>.
  • crop.image_quality setting can set crop image compression quality for formats that support it (Jpeg). The range is <0.0, 1.0>.
  • Added support for TensorflowLite solver enabling NN acceleration on NXP iMX8M Plus chip with VX delegate support

Changed

  • RawBGR image format changed to Raw
  • path to the solver is set using solvers.<solver_name>.solver parameter
  • MQTT topic for publishing the messages is a combination of topic and client_id string

Fixed

  • full_frame.image_width and full_frame.image_height settings are now respected.
    • Setting both will result in a full-frame image being resized to fit the requested resolution while keeping the original aspect ratio. The resulting image may contain black borders.
    • By setting image_width or image_height only the missing dimension will be calculated to fit the image precisely by using the original frame aspect ratio.
    • By not setting any of the parameters the frame will not be resized.

[2.3.0] - 2023-06-02

Added

  • Stream processor now supports passive liveness evaluation
  • Added ACCURATE_MASK template extraction solver for Ambarella

Changed

  • Tracking improvements
    • face_detection.detection_threshold setting now acts as filter for a low-confidence detections.
    • tracking.high_threshold is now renamed to tracking.threshold and controls the minimal detection confidence required to track.
    • tracking.match_threshold was renamed to tracing.stability and its value range is now inverse of the former.
    • tracking.max_time_lost was renamed to tracking.max_frames_lost as it operates on frame ticks rather than time.
  • Performance improvements (fast image resize, parallel warp) in all solvers

[2.2.1] - 2023-03-16

Added

  • Register user supports any size if input image - it is resized to the required resolution
  • FrameData messages now support the serialization of images in multiple formats - Jpeg, Png and RawBGR. It is configurable via settings.yaml
  • Stream Processor now supports messaging in multiple formats - JSON, YAML, Protobuf. It is configurable via settings.yaml

[2.2.0] - 2023-03-06

Added

  • Bidirectional MQTT communication for management of user storage
    • register user with image/template
    • delete user
    • get user
    • reset storage

[2.1.0] - 2022-11-30

Added

  • Face template extraction
  • Face template matching with persistent storage support
  • Possibility to send “empty” (no detection/tracking) FrameData message for debugging purposes
  • TLS support for encryption of MQTT communication

Changed

  • The Edge detector is renamed to SmartFace Embedded Stream Processor (sfe_stream_processor)
  • The Settings server is renamed to SmartFace Embedded Setting Server (sfe_settings_server)

[2.0.0] - 2022-09-06

Added

  • Using asynchronous API for detection tasks
  • Tracking of detected faces
  • New HTTP server for easier configuration of settings in YAML format
  • Crop of a face considering its face size and face size extension parameter
    • Crops of the detected faces added to the FrameData message
  • Added information about lost tracking in the FrameData message
  • Licensing

Changed

  • The Standalone detector was replaced by a new Edge detector

[1.0.0] - 2022-05-01

Added

  • Standalone detector with stream annotation for face bounding boxes and key points