SmartFace Platform

SmartFace Platform v5_4.26

Release date: 10-June-2024

Important Upgrade Recommendations
⚠️ We highly recommend upgrading to SmartFace Platform version 4.26 from versions 4.24 and 4.25. This upgrade addresses a bug in our matcher, ensuring improved stability and performance.

Docker Engine Requirements
ℹ️ The minimum required version of Docker Engine has been updated to 20.10.10. To ensure optimal compatibility and performance, we strongly advise using the latest versions of Docker Engine, Docker CLI and Docker Compose along with this update.

GPU Requirements
ℹ️ If you have GPU processing enabled, please note the minimal version for NVIDIA drivers has been updated to >= 520.61, minimal version of CUDA has been updated to version 11.8.


Improved and more accurate liveness detection
We have integrated IFace 5.14. With this improvement, the default condition string for nearby and distant liveness has been changed to FACE_CONFIDENCE: [1000; 10000]. For more technical information click on “Read more” below.

Body parts detection is no longer supported
This is due to the discontinuation of support for the OpenVINO toolkit, which powered our Body Parts Detector.

Technical Changelog

Added

  • Added ClientId field to MatchNotification and NoMatchNotification notifications

Changed

  • Upgraded IFace to version 5.14

    • Distant liveness algorithm can now be configured via appsettings in RpcLiveness service, section Liveness__DistantAlgorithm, supported values are fast (default) and accurate
  • Optimized matching with SFE Toolkit library when identifying templates in large watchlists

  • Matcher service pre-fetches an additional request from message broker

  • SF platform no longer builds and releases Nvidia Jetson-specific docker images. As a replacement there are images that can be run on any arm64 device but without the support of any GPU acceleration. For the GPU support we can use the SmartFace Stream Processor using the same machine.

    • All images released in SF platform are now multiplatform and docker engine will pull the relevant one based on the platform of the host machine
  • Changed default condition string for nearby and distant liveness to FACE_CONFIDENCE: [1000; 10000]

  • Grouping now filters out faces with low template quality

  • RpcBodyPartsDetector service has been removed, API compatibility is maintained, related ResourceIds are marked deprecated, if still in use, they will fall back to sfe_object_cpu_remote detection for pedestrian detection

    • If body_parts_cpu_remote is selected as liveness check resource id, no liveness check will be performed and Not Performed result will be returned
    • OpenVino installation has been removed from prerequisity installer
  • changed default values for OnnxRuntimeConfiguration__SolverInterThreads and OnnxRuntimeConfiguration__SolverIntraThreads to 1 so SFE Toolkit and IFace default behavior is consistent

  • removed IFaceConfig from Config table, replaced with appsettings section IFaceConfiguration where ThreadNum and ThreadManagementMode can be configured

  • Individuals in GraphQL API now queries directly from the Individual table, instead of the IndividualsWithBestFace view

Fixed

  • Fixed an issue where watchlist matcher database may have become corrupt
  • Matcher no longer loads autolearn faces from database. Only regular faces and averaged templates are used
  • Update of LiveGrouping GroupingStep configuration property now correctly recalculates next update iteration of LiveGrouping according to new value

SmartFace Platform v5_4.25.2

Release date: 12-April-2024

Added

  • Centralized configuration for smart cameras

    • This enhancement allows users to configure the SFE Stream processor using both the SmartFace Platform and SmartFace Station, with added functionality to upload licenses for your smart cameras.
    • Centralized configuration of the SFE Stream processor is achieved via the existing API endpoint /api/v1/EdgeStreams and in Edge stream configuration detail in SmartFace Station.
    • For more technical information click on “Read more” below.
  • Multi-site Watchlists Synchronization

    • Advanced feature based on Leader-Folloer architecture has been added. It enables the automatic distribution of watchlists from a central Leader site to multiple Follower sites deployed across different locations.
    • For more technical information click on “Read more” below.
  • Upgrade from v5_4.24 to v5_4.25

Fixed

  • SmartFace Platform v5_4.25.1

    • Fixed handling of edge case of Camera service face tracking process
  • SmartFace Platform v5_4.25.2

    • Fixed Windows installer issue occuring when re-installing SmartFace on computer with DB synchronization follower already installed
    • Removed Log properties of EdgeStream settings API
Technical Changelog

Added

  • New SFDbSynchronizationLeader and SFDbSynchronizationFollower services which allow Watchlist database synchronization from one leader SmartFace instance to multiple follower SmartFace instances
  • PUT, POST, DELETE methods on Watchlists and WatchlistMembers can be set to readonly via FeatureManagement.ReadOnlyWatchlists config setting for SmartFace.Api service, also configurable via FeatureManagement__ReadOnlyWatchlists environment variable.
  • Windows platform installler now includes additional page for setup of SFDbSynchronizationFollower service. When checkbox is selected it will use provided configuration fields and test whether they are correct by making GRPC call to provided Leader address. If everything is correct then :
    • SFDbSynchronizationFollower service will be registered and started afterwards
    • ReadOnlyWatchlists feature flag will be set for SFApi service
  • Added configuration API for SmartFace Embedded Stream Processors as an extension of pre-existing EdgeStream endpoint /api/v1/EdgeStreams, configuration is forwarded to the MQTT from API
    • Removed OperationMode__MatchingDataStrategy and OperationMode__LivenessDataStrategy from appsetings and env.all, these values are now dependent on the configuration of the Embedded stream processor
  • GraphQL API subscription to listen for SmartFace Embedded Stream Processor health report
  • Added new endpoint LiveGrouping/Streams mirroring functionality of LiveGrouping/Cameras, but with support for both cameras and EdgeStreams
  • Possibility to disable LiveGrouping processing with new property Enabled on LiveGrouping endpoint (The property defaults to true, so LiveGroupings are enabled by default)
  • Added tests for multitenancy to sf-cloud-func-tests image for sf-helm cloud tests
  • Added linear interpolation for bounding boxes in preview to smooth out the tracking preview
  • Added optional parameter --dependencies-availability-timeout to sfadmin to specify the timeout for the attempt to connect to RabbitMq and database. If not specified, retry will be not attempted, behaviour remains unchanged.
  • Added metrics for SFBase DbCleanup Worker

Changed

  • Default value of EdgeStream property SaveFrameImageData was changed from true to false
  • Added property Note that was missing into api/v1/WatchlistMembers/Register body payload
  • Optimized camera preview performance when performance is cpu bound
  • Optimized RPC call handling when dataflow input queue is full
  • Optimized memory usage of Camera process in case of non-functioning template extraction
  • run-migration admin cli command now requires --tenant-id option. For non multitenancy deployments use value default
  • Added support for setting and testing authentication via sf-cloud-func-tests image for sf-helm cloud tests
  • Serialization method of watchlist synchronization messages was changed to protobuf
  • Improved logging in SFBase DbCleanup Worker
  • HTML documentation for REST and LFIS APIs contain customized title and meta description for better SEO

Fixed

  • Fixed edge cases of DbCleanup, Watchlist Autolearn and Session cleanup jobs when scheduled to run around 23:59:59
  • Fixed SetupDbCleanup endpoint not accepting 00:00:00 as a valid cleanupStart value, also added 23:59:59 as upper bound of cleanupStart to validation
  • DbCleanupWorker and Tracklet Recovery are now synchronized so they will not run in parallel
  • Camera worker service is now correctly restarted after live grouping change
  • Fixed issue when empty tracklet was created in database which may occur when match RPC request was canceled
  • Fixed issue when some tracklets may be never finished when using remote face detection
  • Fixed edge case of EdgeStream synchronizer when synchronizing against an empty database
  • Fixed hanging reference during deinitialization of GStreamer pipeline
  • Fixed calculation of face area change
  • Restored previous behavior of matcher logging count of all watchlist members being loaded on startup
  • Fixed a potential issue that could occur when recalculating the averaged template of a member after a autolearn face was deleted via the api/v1/WatchlistMembers/{id}/RemoveFace API endpoint.
  • Added an annotation for possible 408 response status code for api/v1/WatchlistMembers/{id}/RemoveFace endpoint (in case the RPC call for averaging templates fails).
  • Fixed missing OpeAPI Description annotation for 200 OK response of /api/v1/Images/{id} endpoint.
  • Grouping endpoints now correctly validate grouping description maximum length of 500 characters

SmartFace Platform v5_4.24

Release date: 04-January-2024

Changed

  • Fast matching
    • New improved matching is now approximately 2x faster, ensuring quicker and more efficient results.
Technical Changelog

Added

  • Replaced IDKit with SFE Toolkit in RpcWatchlistMatcher.
  • Fixed issue when video record related notifications were sent before database transaction was completed.
  • Added possibility to turn off saving of crop images by already existing configuration option NoSqlDataStorageDisabled which is now applicable in Camera service and EdgeStreamProcessor service.
  • RabbitMQ version was updated in provided dependencies. Check RabbitMQ 3.12 Release Notes for further instructions on upgrading.
  • Fixed default values used in ObjectDetectorConfig in POST /api/v1/Cameras endpoint if they were not specified in request.
  • Releasing/distributing new Cloud Functional tests image used in SmartFace helm chart
  • Windows installer has new page where you can specify whether watchlist stream population should be done by installer.

SmartFace Platform v5_4.23

Release date: 13-December-2023

Added

  • The selective watchlists synchronisation to Edge streams

    • Now, you can effortlessly select specific watchlists and synchronize them to chosen edge streams via REST API endpoint /api/v1/Edgestreams/{id}/WatchlistSynchronization/.
  • Connection between face and body

    • SmartFace is capable of linking detected faces to the corresponding body. The facial and pedestrian data are stored in the database only if the “All” save strategy is chosen for both face and pedestrian detection.

Changed

  • Tracking improvements in SmartFace Platform were implemented.
Technical Changelog

Added
– Added option to synchronize selected watchlists to edge streams. This option can be configured via EdgeStream API endpoint on path {id}/WatchlistSynchronization. Supported values are None, All and Selected. When Selected is used, then you can specify which watchlists should be synchronized.

  • Added index on StreamId column in tables VisualObjects and Frames.

  • Added possibility to specify MaxOldnessDetectionFrames for IFace tracking, which represents number of redection frames after which suspended tracklet will be definitely marked as lost. Default value is 2, which is minimal allowed IFace value. The value can be set as an environment variable TrackingConfiguration__MaxOldnessDetectionFrames in the docker environment, or by using the camera’s SmartFace.Camera.appSettings.json in the Windows environmnent such as in the example below:

  "TrackingConfiguration": {
  "MaxOldnessDetectionFrames": 2
},
  • SmartFace will now try to evaluate whether detected faces and pedestrians from same frame represents same “person” by linking them together by their Ids (Face will contain Id of Pedestrian and vice versa). It is enabled by default in the SmartFace Platform configuration. However this linking behavior is only supported when All save strategy is used for both Face and Pedestrians. If you want to disable this behavior altogether you can set false value to ObjectLinking__Enabled docker environment variable in camera services or in the Windows environment in camera’s SmartFace.Camera.appSettings.json as per example below:
"ObjectLinking": {
  "Enabled": false
},

Changed

  • SmartFace binaries package was removed.

  • Performance of loading RpcFaceMatcher service has been improved

  • Fixed possible EdgeStreamsStateSynchronizer bug when synchronization for EdgeStream could get stuck when exception was thrown during db update.

  • GraphQLApi service now declares CORS policy that allows any origin as other API and OData API services.


SmartFace Platform v5_4.22

Release date: 11-October-2023

Added

  • The SmartFace Platform introduced new functionality - Watchlist synchronization to Edge streams. This is avalable for SmartFace Embedded Stream Processor version 2.5 and higher.

    • Now, it is possible to synchronize watchlist members registered in SmartFace with Edge streams and perform matching on edge devices.
    • To facilitate this functionality, a new REST API endpoint, ‘/api/v1/Edgestreams/{id}/WatchlistSynchronization’, has been added.
    • Please note watchlist synchronization with the Edge streams is disabled by default. To enable it, please take a look at steps in the documentation
  • Database optimization has been successfully implemented.

  • New IFace 5.7 was integrated with improved liveness check.

Technical Changelog

Added

  • Added new service EdgeStreamsStateSynchronizer which seamlessly synchronizes watchlist members to edge streams.

  • Added new endpoint into EdgeStream API endpoints on path {id}/WatchlistSynchronization where you can control whether watchlist synchronization should be enabled or not. By default synchronization is disabled. Supported values are None and All.

  • Added new command populate-wl-update-log-stream to admin-cli which will initialize and populates data for already existing watchlist members in database. This command should be used when synchronization to Edge stream cameras is desired.

  • Added new configuration options SynchronizationConfig__UpdateLogReadBatchCount and SynchronizationConfig__BatchTriggerMs to tweak batching configuration of EdgeStreamsStateSynchronizer

  • Added new configuration options OperationMode__MatchingDataStrategy and OperationMode__LivenessDataStrategy into EdgeStreamProcessor which affects how platform is treating matching and liveness data coming from Edge stream camera. By default platform will use ServerOnly strategy for both matching/liveness data coming from Edge stream. Possible configuration values are:

    • EdgeStreamOnly - Platform will not call any matching or liveness services based on detected faces from Edge stream, but it will only use identifications and liveness results from Edge stream. However configuration of SpoofDetectorResourceIds defined in EdgeStream are still honored. This means that only configured liveness types are used for liveness evaluation.
    • ServerOnly- Platform will ignore identifications and liveness results from Edge stream and will do matching and liveness calls to internal services.
  • Added new Rpc service into RpcWatchlistMatcher which provides watchlist member metadata for requested ExternalId of member

  • AuthenticationType configuration option for S3 connection supporting authentications other than instance profile in AWS

    • InstanceProfile represents previously implemented behavior
    • AssumedRole can be used with AWS IRSA
    • AccessKeyAndSecret can now also be used in conjunction with bucket endpoint
  • UseBucketRegion configuration option for S3 connection making the the configuration more explicit

    • previously this behavior implicitly was controlled by supplying value to BucketRegion property
    • when false then Endpoint configuration property is used
    • when true then BucketRegion configuration property is used

Changed

  • Coordinates and confidences on all VisualObject types have been changed from double to float in postgre and MSSQL databases.
  • Template data in MSSQL databases in VisualObjects.Template, WatchlistMembers.NotMaskedAveragedWildTemplate and WatchlistMembers.MaskedAveragedWildTemplate have been changed from varbinary(max) to varbinary(600).
  • Type of FullName field of WatchlistMember table has been limited to maximum of 200 characters and API validation rules limiting maximum length of FullName and DisplayName of watchlists have been added.
  • IFace upgraded to version 5.7.0
  • Default condition string for distant liveness changed.

Fixed

  • Fixed GraphQL serialization issue for FirstFaceBestFace face save strategy on Camera, EdgeStream and VideoRecord aggregate roots.
  • Fixed issue when multiple object types could be mixed in one tracklet
  • Fixed validation of FaceSaveStrategy field in VideoRecord Create and Update requests.
  • Fixed bug when some frame blob images of VideoRecords were incorrectly removed.
  • template, templateVersion, serializedId properties on GraphQL Face type were removed
  • Optimized cleanup procedures for large databases

SmartFace Platform v5_4.21

Release date: 31-July-2023

Added

  • Database notifications have been enhanced with object notifications. This type of notification is sent when a detected object is saved into the database.

Fixed

  • The issue with saving crop images of objects has been fixed.
Technical Changelog

Added

  • Database cleanup will now be triggered at specified CleanupStart in request after calling [PUT] endpoint /api/v1/Setup/DbCleanup. Previously database cleanup would run only at next day.
  • Face processed notifications now contain WatchlistPreviewColor field of each member that was matched with the face.
  • Response model of endpoint api/v1/Watchlists/Search now contains PreviewColor (preview color of Watchlist) for each returned matchresult.
  • Added objects.insert notification to ZeroMQ and also GraphQL triggered when object is saved into database.

Fixed

  • ZeroMQ faces.insert notification now contains AreaOnFrame, ObjectOrderOnFrameForType, ObjectsOnFrameCountForType which contains same values as FaceArea, FacesOnFrameCount, FaceOrder.
  • All ZeroMQ and GraphQL processed notifications now contains CropCoordinates object with crop coordinates of each detected object.
  • Crop images of detected objects are now properly saved into database
  • Fixed issue when one RPC detection failure would discard other configured detections inside camera process.
  • Quality of generic objects is now based on the object detection confidence rather than the object classification confidence. This means that the object quality will now correspond to the detection threshold that was used during detection.
  • Fixed an issue where processes local PATH environment variable could grow too long with paths that were already present.
  • Fixed an issue where object detected close to edge of frame could result in loss of all object detections on the frame.

SmartFace Platform v5_4.20.1

Release date: 17-July-2023

Fixed

  • Issues with the REST API endpoint for retrieving faces and pedestrians were fixed.

SmartFace Platform v5_4.20

Release date: 07-July-2023

Added

  • The SmartFace Platform has been enhanced with advanced Object Detection, allowing it to detect and recognize various types of objects in real-time.
    • REST API was enhanced with new parameter ObjectDetectorResourceId in endpoint for cameras.
    • The new service dedicated to object detection was added.
  • The health check endpoints were added, which provide a way to assess the status and health of various components within each platform service.
  • The notification capability for Face, Pedestrian, and Object Detection was changed. - this enhancement allows you to receive real-time notifications even when the storage to the database feature is turned off.
  • New Pedestrian Save strategy was implemented. It allows for more efficient storage of pedestrian information. It is possible to configure via REST API endpoint for cameras.
  • The pedestrian attributes extractor has been introduced. It provides more information about the pedestrian´s age and gender, as well as clothing and accessories.
    • Possibility to configure new attribute pedestrianExtractorResourceId in REST API endpoint for camera configuration is provided.
    • A new RPC service for pedestrian attributes extraction was added.
  • The API endpoint POST /api/v1/Watchlists/Search was enhanced with attributes: pitchAngle, yawAngle, rollAngle, faceArea, templateQuality and faceOrder.

Changed

  • The default value for Face Save Strategy was updated to “BestFace.”, which ensures that only the most relevant and high-quality face data is stored, resulting in a more efficient use of storage resources.
  • New IFace 5.4 was integrated with improved liveness check.
  • The API performance has been improved.

Fixed

  • A possible issue when face could not be inserted into FaceMatcher was fixed.
  • The issue where the consistency of the watchlist matcher was compromised when a database transaction crashed.
Technical Changelog

Added

  • Pedestrian attributes

    • New rpc service sf-pedestrian-extractor for getting attributes like (hat, backpack) from an image for a person. Supported is also GPU usage.
  • Some attributes have been added to response of API endpoint POST /api/v1/Watchlists/Search

    • pitchAngle
    • yawAngle
    • rollAngle
    • faceArea
    • templateQuality
    • faceOrder
  • Added support for ImageFormat.Jpeg and ImageFormat.Png for edge stream images.

  • Added new property SaveFrameImageData into EdgeStream API endpoints where you can control whether incoming image frames should be stored or not. By default storage is enabled.

  • Added Onnx threading parameters which can be set for individual processes (Camera, RpcDetector,RpcExtractor,RpcLiveness,RpcPedestrianDetector,RpcPedestrianExtractor, RpcObjectDetector). You can set these environment variables / appsettings.json values.

    • OnnxRuntimeConfiguration__SolverInterThreads
    • OnnxRuntimeConfiguration__SolverIntraThreads
  • Every service now exposes health checks endpoints with JSON response with all health check states. Default HealthCheck server is listening on port is 6060 and accepts request on paths:

    • /healthz/ready for service readiness (HTTP 200 for healthy, HTTPP 503 when unhealthy)
    • /healthz/live for service liveness (HTTP 200 for healthy, HTTPP 503 when unhealthy)
  • Added PedestrianSaveStrategy parameter to Camera endpoint, field is not required, default value is Best, supported values are All and Best, cameras created before this release have been updated to use All strategy to preserve previous behavior

  • Added new supported value (none) for PedestrianExtractorResourceId to Camera endpoint. Default value is none if not specified.

  • Added ObjectDetectorResourceId parameter to Camera endpoint which can be used to enable object detection (possible values are none, sfe_object_cpu_remote, sfe_object_gpu_remote, sfe_object_any_remote). Default value is none

  • Added ObjectSaveStrategy parameter to Camera endpoint, field is not required, default value is Best, supported values are All and Best

  • Added ObjectBoundingBoxColor to /api/v1/Setup/Preview endpoint. You can specify color that should be used for bounding boxes on detect object in preview camera streams. Default value is “#e638d3”

  • Added ObjectDetectorConfig to Camera API entity which contains configuration properties for object tracking

    • MinObjectSize (minimal size of detected objects. Default value is 40)
    • MaxObjectSize (maximal size of detected objects. Default value is 2000)
    • MaxObjects (max number of tracking objects on scene. Default value is 20)
    • ConfidenceThreshold (detection confidence for object detection. . Default value is 5000)
    • ObjectTypesForDetection object which contains boolean properties where you can specify types of objects which you want to detect/track on camera stream
      • DetectCar
      • DetectBus
      • DetectTruck
      • DetectMotorcycle
      • DetectBicycle
      • DetectBoat
      • DetectAirplane
      • DetectTrain
      • DetectBird
      • DetectCat
      • DetectDog
      • DetectHorse
      • DetectSheep
      • DetectCow
      • DetectBear
      • DetectElephant
      • DetectGiraffe
      • DetectZebra
      • DetectSuitcase
      • DetectBackpack
      • DetectHandbag
      • DetectUmbrella
      • DetectKnife
  • Added FaceProcessed, PedestrianProcessed, ObjectProcessed notifications encompassing all available data processed by camera or edge stream. These notifications are sent as soon as data is available, even before the event is saved to database and are being sent regardless of set save strategies.

Changed

  • Stream event processing is now done in separate scalable service (Docker sf-streamdatadbworker, Windows SFStreamDataDbWorker)

  • IFace update to version 5.4

    • New improved liveness models with normalization which stabilize score according to face size.
  • Required fields have been added to License. Required attributes will be checked during database migration. A valid SmartFace license:

    • Must have data at key /contract/smartface_embedded/enable set to boolean value true, indicating that the license is valid for usage by SmartFace Embedded libraries.
    • Must have an integer value at key /contract/smartface_embedded/face_template_count contain information about maximum number of face templates loaded.
    • Must have an integer value at key /contract/smartface/camera_count
    • Must have an integer value at key /contract/smartface/edgestream_count
    • Must have a boolean value at key /contract/smartface/components/api
    • Must have a boolean value at key /contract/smartface/components/stream_processing
    • Must have a boolean value at key /contract/smartface/components/rapid_video_processing
  • Changed serialization of field CropImage to Base64 in MatchResult and NoMatchResult types in GraphQL subscriptions

  • Default value for FaceSaveStrategy has been changed to Best both for cameras and edge streams.

Fixed

  • Fixed possible issue with consistency of watchlist matcher when database transaction crashed
  • Fixed possible issue when face could not be inserted into FaceMatcher
  • Fixed documentation of resource ids in swagger
  • Performance improvements for API endpoints with base64 in request
  • Affinity configuration is from now available only in windows deployments. In docker use cpuset
  • API performance has been improved
    • possibility to set number of threads used for communication with MQ via env variable Rpc__DedicatedThreadCount
    • default value for API is 10
  • Fixed DbCleanup ocasionaly failing to delete old data

SmartFace Platform v5_4.18.3

Release date: 14-May-2023

Release notes

Changed

  • Performance improvements for API endpoints with base64 encoded binary data in request was changed.

Fixed

  • The issue with watchlist matcher when database contained some members which were not linked to any watchlist or had no faces was fizes.

SmartFace Platform v5_4.18.2

Release date: 20-April-2023

Release notes

Added

  • The configurable option for seeding page size was added into RpcWatchlistMatcher service.
  • The configurable option for seeding page size was added into RpcFaceMatcher service.

Changed

  • RpcWatchlistMatcher service was optimized.
Technical Changelog
  • Various RpcWatchlistMatcher service optimalizations

    • Improved quuery by selecting only field that matcher needs
    • Matcher database is initialized while paging is happening
    • Change paging from simple limit and offset (which could result in huge query times when large offset number was used) to paging of ordered WatchlistMembers by CreatedAt column
    • Added explicit transaction with Snapshot IsolationLevel while matcher is loading
    • Matcher live updates are processed only after matcher is initialized
    • RPC server for matching will not start until matcher was initialized
  • RpcWatchlistMatcher service now supports configurable option for seeding page size. You can define it with env variable WatchlistMatcher__SeedPageSize.

  • RpcFaceMatcher service now supports configurable option for seeding page size. Defined by env variable FaceMatcher__SeedPageSize


SmartFace Platform v5_4.18.1

Release date: 12-April-2023

Release notes

Fixed

  • The API compatibility issue for /api/v1/Watchlists/Search endpoint was fixed.

SmartFace Platform v5_4.18

Release date: 15-February-2023

Release notes

Added

  • Sharpness, Brightness, Tinted Glasses, Heavy Frame, Glass Status attributes were added to face match/no-match notifications.

Fixed

  • RabbitMQ’s performance related issues fixes.
  • DB Cleanup service do not remove detected objects from video records created by Rapid Video Processing.
  • Live face grouping fixes.
Technical Changelog

Added

  • New face attributes GlassStatus, TintedGlasses, HeavyFrame, Sharpness and Brightness
  • Possibility to publish selected API usage statistics
  • Admin tool can be used to clear all data belonging to a specified tenant

Changed

  • Event based live grouping triggers replaced by recurring job
  • Live grouping is performed in steps based on tracklet disappearance time
  • Faster recovery of unfinished tracklets after the video stream was closed or interrupted
  • Video record data is now not affected by DB cleanup procedure
  • Fixed API thread starvation issue in highly parallelled usage cases

SmartFace Platform v5_4.17

Release date: 06-December-2022

Release notes

Added

  • In the case that there is template in the edge stream, then extraction is skipped in SmartFace.

  • Subscriptions were implemented into GraphQL for sending notifications.

  • Possibility to configure authentication in REST API, GraphQL and Access Controller through OAuth or JWT.

Changed

  • The API endpoint api/v1/Faces/SpoofCheck returns information when detected face photo did not pass through liveness condition.

  • The new version of IFace 5.0 was integrated.

Fixed

  • Fixed spoof check issue for faces captured by Edge Stream cameras.

  • Fixed video file reading for videos with improper timestamping.

  • Fixed bug when deletion of video record via REST API.

Technical Changelog

Added

  • GraphQL subscription for notifications which are also propagated via ZeroMQ (with filtering support). This is now recommended notification API. List of supported notifications:

    • FaceCreatedNotificationDTO
    • FaceExtractedNotificationDTO
    • MatchResultNotificationDTO
    • NoMatchResultNotificationDTO
    • MatchResultInsertDTO
    • ProgressMessageDTO
    • VideoRecordNotificationStateChangedDTO
    • TrackletCompletedNotificationDTO
    • PedestrianInsertedNotificationDTO
  • New licensing support (newly generated licenses contains limit for maximum number of cameras/edge streams and component flags). SmartFace services now validates this condition and will not start/reject creation of new camera/edge stream if license limit is reached or if license component flag does not match required flag according to type of SmartFace service

  • SmartFace now supports optional templates coming from edge devices. When template was extracted inside edge camera SmartFace skips template extraction which will results in less resource usage

  • API, GraphQL and AccessController services now both supports Authentication (OAuth or JWT). By default authentication is turned off. You can look at configuration possibilities in Authentication section in appsettings files or documentation

Changed

  • API service no longer uses IFace internally. Template averaging and search in individuals are now done via RPC calls

  • API endpoint api/v1/Faces/SpoofCheck now returns information when detected face photo did not pass through liveness condition. See property notPerformedReasons in response schema

  • SmartFace installation now creates new RabbitMQ user (username : mqtt, password : mqtt) for easier example of MQTT integration

  • API service propagates new OTEL compatible metrics about RPC requests and API EndPoints requested

  • Metrics (host/port) configuration changed to use uniform names for configuration properties rather than specific configuration properties for each service type

  • Default HTTP metric port changed to 4318 for Linux deployments

  • IFace update to version 5.0

  • Request model for /api/v1/Setup/DbCleanup endpoint no longer requires deprecated property CleanupAmount to be present JSON

Fixed

  • Fixed bug when deletion/clearing of VideoRecord via REST API could fail if VideoRecord was part of RecordGrouping

  • Fixed video file reading for videos with improper timestamping

  • Fixed possible issue when RabbitMQ connection would terminate and some SmartFace services were unable to recover from it

  • Fixed spoof check issue for faces captured by EdgeStream cameras

  • Fixed memory leak in API and possible few other services.


SmartFace Platform v5_4.16.1

Release date: 03-November-2022

Release notes

Changed

  • Optimization of proper log collection in docker workflows.

Fixed

  • Handling unexpected errors in Camera process were fixed.

  • Fixed issue when faces with null templates in Extracted state could be created when RPC extraction timed out in API.

Technical Changelog

Changed

  • IFace logs are logged to StdOut/StdErr instead of a file in tmp. This enabled proper log rotation/collection in docker workflows.

  • Fixed issue when faces with null templates in Extracted state could be created when RPC extraction timed out in API.

  • Handling unexpected IFace errors in Camera process more defensively, causing Camera process to restart instead of hanging on such errors.


SmartFace Platform v5_4.16

Release date: 06-Octorber-2022

Release notes

Added

  • SmartFace is now integrated with edge devices compatible with SmartFace Embedded. A new edge stream input and processing can be configured via a new API endpoint.

  • New API endpoint added to verify faces on uploaded images.

  • New attributes FullName and DisplayName were added into API endpoint for watchlist member registration.

  • A new attribute video processing duration is available in the VideoRecords API endpoint.

Technical Changelog

Added

  • SmartFace can now process data produced from edge camera streams. Edge cameras are doing heavy lifting (detection and tracking) and sends face data with cropped images via MQTT. For this use case new entity was added into API called EdgeStream. You can explore new CRUD API endpoints for EdgeStream management at /api/v1/EdgeStreams

  • New process EdgeStreamProcessor was created which is responsible for reading and processing all data coming from edge camera streams

  • VideoRecord now exposes 2 new properties ProcessingStartTime and ProcessingDurationMs which provides information about VideoRecord processing duration

  • /api/v1/WatchlistMembers/Register endpoint now also accepts FullName and DisplayName for requested WatchlistMember enrollment New /api/v1/Faces/Verify endpoint for (1:1) face verification


SmartFace Platform v5_4.15

Release date: 12-August-2022

Release notes

Added

  • Option to filter out face notifications with Template Quality below threshold added.

  • New API endpoint for spoof check on submitted image added.

  • The watchlist search API endpoint has been improved with the ability to enable spoof check on the submitted image before the actual search.

Changed

  • ZeroMQ notifications are no longer produced for Faces, Tracklets and MatchResults created from Rapid Video Processing.

  • The property Name and Description of a video record can be changed via the API endpoint (PUT ​/api​/v1​/VideoRecords) regardless of the state the VideoRecord is in. All other properties can only be changed when the video recording is in the Ready state.

  • New IFace 4.19.0 was integrated.

  • Upgraded to .NET 6.

Fixed

  • Fixed database migration error when upgrading from version 4.10 (or lower) to version 4.13 (or higher).
Technical Changelog

Added

  • New configuration was added to RpcExtractor Extraction__TemplateQualityErrorThreshold which can be used to set faces to Error state if template quality is lower than the configured threshold. This configuration can be used to eliminate false detections from Camera processing. By default this behavior is disabled (null threshold value).

  • Added new API endpoint POST /api/v1/Faces/SpoofCheck to perform spoof check on a face detected in image sent in the API request

  • Added Spoof check configuration in the Watchlist search API endpoint POST /api/v1/Watchlists/Search. When used, a spoof check will be performed alongside the matching on the detected faces

Changed

  • ZeroMQ notifications are no longer produced for entities (Faces, Tracklets, MatchResults) created from OfflineVideoProcessing. New configuration Aggregation__EntityNotificationsEnabled for VideoDataAggregator was added to reenable this behavior.

  • Fixed calculation of TimeAppeared and TimeDisappeared times on Tracklets created in OfflineVideoProcessing. If VideoRecord.RecordedAt is provided then the times on a Tracklet are calculated as absolute times starting from RecordedAt.

  • Changed error behavior of OfflineVideoProcessing when the video file does not contain crucial metadata such as Video Duration or FPS

  • VideoRecord Name and Description properties can be changed via PUT ​/api​/v1​/VideoRecords endpoint regardless of the state the VideoRecord is in. Every other property can still be only changed when the VideoRecord is in Ready state.

  • IFace upgraded to version 4.19.0

  • Upgraded codebase to .NET 6


SmartFace Platform v5_4.14.2

Release date: 25-July-2022

Release notes

Changed

  • Fixed possible database migration error when upgrading from versions <= 4.10.X to version >= 4.13.X

SmartFace Platform v5_4.14.1

Release date: 12-July-2022

Release notes

Fixed

  • Grouping ‘start time’ issue is fixed

  • DbCleanup timeout issue on PostgreSQL is fixed

  • FaceMatcher in memory state not updating after DbCleanup fix

  • SFBase service problem when NoSQL database is disabled is fixed

  • Ability to configure a static port for each host in a containerized environment for camera preview

Technical Changelog

Added

  • Ability to configure usage of static ports for MPEG1 camera preview on API with CameraDefaults__PreviewPort

Changed

  • FaceMatcher properly updates internal state based on DB cleanup

  • Database migration correctly purges internal RMQ queues to prevent deserialization issues with newer SF

  • Fixed issue with SFBase service not working with disabled NoSQL data

  • Fixed issue with DB cleanup failing to remove large quantities of data


SmartFace Platform v5_4.14.0

Release date: 10-June-2022

Release notes

Added

  • A new “Description” text field has been added into the Videorecord API entity.

  • Possibility to configure custom labels for watchlist members, which are set of unique key value pairs. You can query these labels also via GraphQL/OData.

Technical Changelog

Added

  • You can specify labels to WatchlistMember which are set of unique key value pairs. You can query these labels also via GraphQL/OData.

  • Description text field into VideoRecord API entity.

  • WatchlistApi has been extended with POST endpoints from full API

    • /api/v1/WatchlistMembers

    • /api/v1/WatchlistMembers/LinkToWatchlist

    • /api/v1/WatchlistMembers/UnlinkFromWatchlist

    • /api/v1/WatchlistMembers/{id}/AddNewFace

    • /api/v1/WatchlistMembers/{id}/RemoveFace

Changed

  • POST/PUT /api/v1/WatchlistMembers endpoints accepts/returns Labels property.

  • POST /api/v1/WatchlistMembers/Register accepts/returns Labels property.

  • POST /api/v1/Watchlists/Search contains Labels property.

  • Fixed timeout during deletion of cameras with many detected objects

  • Performance has been optimized in case when remote detector is used in camera


SmartFace platform v5_4.13.0

Release date: 27-May-2022

Release notes

Added

  • The new camera attributes have been added to GraphQL API to improve camera services.

  • A new API endpoint for video records has been added to clear processed results of rapid video processing.

  • A new “RecordedAt” attribute has been added to the video record, which allows setting the absolute time for detected objects during rapid video processing.

  • New attributes Age, Gender and FaceSize have been added to no-match/match notifications.

Changed

  • The background color of detected objects where the object is partially cropped or incomplete was changed from white to grey.

  • An improved distant passive liveness algorithm for spoof detection has been integrated.

  • The value returned by passive liveliness was normalized. The range is from 0 to 100 now (before ~ from -10,000 to 10,000).

  • Behavior of no-match notifications have changed. The system sends notifications of non-match for the tracklet at all times, even a notification of match has been sent.

Fixed

  • Many small bug fixes.
Technical Changelog

Added

  • Properties Age and Gender have been added to matchresult entity and also to notifications matchResults.match.insert, matchResults.match, matchResults.nomatch.

  • New property Size for Face and Pedestrian entity has been added. On matchresults is property named FaceSize.

  • New property ProcessedAtfor notifications pedestrians.insert, matchResults.match.insert, matchResults.match, matchResults.nomatch and for API object MatchResult.

  • New VideoRecord property RecordedAt. You can specify event time of video footage, related Frames and Faces time properties will now have value according to this new value (see changed section).

  • New VideoRecord property VideoDurationMs. This property will now contain duration of processed video in milliseconds (after video is fully processed).

  • VideoRecord Source property now accepts new format to video file that was uploaded into s3 blob storage. New format is: sfvideo://{key_to_video_file_in_blob_storage}. Currently file is expected to be only in same bucket as SmartFace platform is configured with.

  • Possibility to reprocess VideoRecord by using endpoint /api/v1/VideoRecords/{id}/Clear to clear the data produced by the video record (faces, tracklet, matches…) and set the state back to Ready

  • Possibility to PUT new VideoRecord via REST API with custom GUID as Id.

  • New HostedService added to SFBase service which is responsible for cleanup of blob records.

  • GraphQL camera schema now more alligns with API camera entity.

  • Configuration to enable JSON-based logging to console (stdout) - this facilitates easier parsing of the logs in docker-based deployments with tools such as Promtail

  • Configuration to enable bearer token authentication in WatchlistAPI with OAuth2 flows in SwaggerUI

  • Configuration to enable SSL communication with RabbitMQ

  • Experimental: support for re-using faces detected on smart embedded camera

  • Added possibility to set BackgroundColor for part of crop images that are outside of source image. To set it globally you need to update configuration of SmartFace.RpcDetector, SmartFace.RpcPedestrianDetector and SmartFace.Camera binaries.

Changed

  • IFace upgraded to version 4.15.0

  • Camera spoof configuration properties (DistantLivenessConditions/NearbyLivenessConditions) were changed to newer format. If you set up custom condition strings you will need to update them manually to newer format, otherwise liveness can not be performed.

  • Camera spoof configuration properties (DistantLivenessScoreThreshold/NearbyLivenessScoreThreshold) are now within range of <0, 100> instead of <-10000, 10000>. Both of these thresholds are now migrated to 90.

  • Frame property ReceivedAt is now calculated relative to RecordedAt time of VideoRecord.

  • Face property ProcessedAt is now calculated relative to RecordedAt time of VideoRecord.

  • Serialized Face is no longer persisted in database.

  • migrate-faces admin cli command now uses redetections of faces instead of recreating of face from serialized one.

  • migrate-faces admin cli command no longer accepts -g flag. Command will now route RPC detections/extraction to any available service (CPU/GPU).

  • set-state-error-non-migrated-faces admin cli command now supports –dry-run flag which will print out watchlist members which would be affected when running this command.

  • run-migration admin cli command now requires RabbitMQ options if there are some faces from previous installation that need to be migrated.

  • Removed behavior when notifications matchResults.nomatch were suspendend for tracklets which had positive match. Notificatons matchResults.nomatch will be sent everytime.

  • Default BackgroundColor for part of crop images that are outside of source image is now #424B59.


SmartFace platform v5_4.12.0

Release date: 23-February-2022

Release notes

Added

  • Support for deleting match results in DB cleanup process.

  • Possibility to configure a new ResourceID type for each camera for better HW resources utilization.

  • Tag support for video records in Rapid Video Processing.

Changed

  • Db cleanup process performance improvements.

  • Face detection optimization for higher resolutions inputs.

Fixed

  • Wrong start time of individual in grouping fixed.

  • Many small bug fixes.

Technical Changelog

Added

  • New TemplateGeneratorResourceId any added for all API endpoints that accepted template generation resource id. Template generation will be forwarded to any available rpc extract service.

  • New FaceDetectorResourceId any and accurate_any added for all API endpoints that accepted face detection resource id. Face detection will be forwarded to any available rpc detect service.

  • New GET/PUT API endpoints for video record tag management (/api/v1/VideoRecords/{id}/Tags).

  • New GraphQL API endpoint for querying video record tags.

  • New DeleteMatchResults bool property was added to DbCleanupConfig which can be set via /api/v1/Setup/DbCleanup endpoint. This property now controls whether deletion of historical MatchResults (MatchResults of faces that are no longer present in database) are deleted when cleanup is triggered. Default value is false.

Changed

  • Db cleanup performance improvement.

  • Camera process memory consumption was reduced when external spoof resource id was used.

  • Configured FaceSize on higher resolution images now behaves correctly.

  • Live grouping synchronization issues fixed.

  • Individual ExitTime property is now always properly calculated.

  • Fixed camera process crash when remote detection was used with combination with lower templateGenerationTime than redetectionTime.

  • Slightly improved saving throughput of stream data.


SmartFace Platform v5_4.11.0

Release date: 06-December-2021

ℹ️ The SmartFace versioning system has changed. The SmartFace Platform version is prefixed by the marketing version v5.
Release notes

Added

  • Extend the overlay graphics of the encoded output stream for each camera with preferred information for detected face and identified person.

  • Ability to set default color of the bounding box for the detected face, identified person and detected pedestrian in the encoded output streams.

  • Ability to set color for each watchlist to override the default bounding box color in the encoded output streams when a person is identified.

Changed

  • Camera service was extracted from base process to a separate process. The name of a docker image for camera service was changed to ‘sf-cam’.

  • The SmartFace versioning system has changed. The SmartFace Platform version is prefixed by the marketing version v5.

Fix

  • Issue with many connections on PostgreSQL solved.
Technical Changelog

Added

  • Marketing versioning has been introduced as prefix to semver v5_major.minor.hotfix

  • Stream previews are now enriched with additional rendered object attributes. Which attributes should be displayed can be controlled via new configuration object “previewAttributesConfig” on Camera API entity.

  • New “previewColor” property added to Watchlist API entity where you can specify hex color that should be used as bounding box in stream preview when face was matched against member in this watchlist.

  • New /api/v1/Setup/Preview endpoint where you can specify default hex color for faces/pedestrians that will be used when rendering bounding boxes in stream previews.

  • Swagger default values

Changed

  • SmartFace camera processing extracted to separate service (sf-cam docker images / SFCam windows service name prefix)

  • SQL database connection pooling enabled by default

  • Internal RabbitMQ rpc requests uses own RPC topic exchange

  • Possibility to use remote accurate detector in camera


SmartFace Platform 4.10.0

Release date: 27-October-2021

Release notes

Added

  • Face search in all detected faces stored by SmartFace

  • GraphQL API for complex data querying

  • Faster NN models for detection, extraction and liveness integrated for CPU an GPU processing

  • Support for NVIDIA TensorRT

  • Support for NVIDIA CUDA 11

  • USB camera support in docker deployments (Windows, Linux, Mac)

Changed

  • Processing pipeline performance improvements

  • Possibility to retrieve TOP N match results for detected faces in Rapid Video Processing

Fixed

  • Many small bug fixes

  • Issues with installing SF on a Windows OS with non-English (specifically Chinese) localization

Technical Changelog

Added

  • New GraphQL service that can be leveraged to query SmartFace data (backward compatibility is not guaranteed). Default port is 8097.

  • New FaceSearch feature that allow searching in whole Face database by image with face

  • Support for using license with HWID on Linux

  • Possibility to return Top N match results in Rapid video processing (Offline video processing)

Changed

  • IFace of version 4.10.3 with ONNX for improved performance and with possibility to use tensor cores.

  • Performance optimizations in live video processing

  • Possibility to change trackSpeedAccuracyMode on camera via API

  • Fixed memory leak in API caused by RMQ client

  • Fixed loading of WatchlistMatcher when database contains more than 500k members

  • Fixed memory allocation in camera process when remote detector was used

  • Fixed Windows installer checkbox for registering GPU services to reflect status of current SmartFace installation

  • Fixed Windows installer on systems with character set different than english

  • Fixed issue when RabbitMq message was not acknowledged for long time which leads to unusable reader component in Rapid video processing


SmartFace Platform 4.9.1

Release date: 24-September-2021

Release notes

Fixed

  • Matching in the live processing pipeline when a member was registered in multiple watchlists

  • Exporting data in the rapid processing pipeline when using RabbitMQ export and when video record is not created in the SmartFace database

Technical Changelog

Changed

  • Fixed matching in the live processing pipeline when a member was registered in multiple watchlists.

  • Fixed exporting data in the rapid processing pipeline when using RabbitMQ export and when video record is not created in the SmartFace database.


SmartFace Platform 4.9.0

Release date: 28-July-2021

Release notes

Added

  • Support for RabbitMQ messaging in the Rapid Video Processing

Changed

  • More detail to the JAEGER tracing added

  • Various performance optimizations done

  • Small changes and bug fixes

Technical Changelog

Added

  • Possibility to provide data from Rapid Video Processing via RabbitMQ messages

  • There is possibility to turn on/off some processing features of SmartFace platform to increase performance. See /api/v1/Setup/Features.

  • Improvements in tracing

  • VideoRecord processing now properly handles unexpected error in detection/extraction.

  • VideoFile processed by camera is now processed with same fps as source video file fps.

Changed

  • First frame from camera stream is no longer being dropped.

  • Fixed serialization issue of extraction metadata when age/gender extraction was disabled.

  • VideoRecord create request is now properly validated.

  • Various performance improvements, mainly regarding

    • Passive and external liveness

    • Remote face detection in camera


SmartFace Platform 4.8.1

Release date: 26-May-2021

Release notes

Added

  • Support for GPU acceleration for detection/extraction and HW decoding on x64 Linux platform

  • Possibility to install body parts detector and liveness detector via Service_Installer.bat has been added

Changed

  • Windows services descriptions have been changed

  • Fixed USB camera reading on Windows OS

Technical Changelog

Added

  • Support for GPU acceleration for detection/extraction and HW decoding on x64 Linux platform.

  • Possibility to install body parts detector and liveness detector via Service_Installer.bat has been added.

Changed

  • Fixed USB camera reading on Windows OS.

SmartFace Platform 4.8.0

Release date: 13-May-2021

Release notes

Added

  • SmartFace Platform is now distributed also in form of docker images available on container registry

  • From now on you can install SmartFace Platform on Linux operating system

  • We provide also a SmartFace Platform build for embedded device NVidia Jetson Xavier NX and NVidia Jetson AGX Xavier

  • SmartFace Platform for embedded device support HW decoding

  • Deployment on Linux OS now supports PostgreSQL database

  • We have replaced NoSQL LevelDB by MinIO database

  • Latest version of IFace included with lot of new features:

  • Now you can detect presentation attacks with our liveness check

  • Pedestrian tracking introduced

Changed

  • Detection and matching algorithms were improved

  • Accuracy for masked faces significantly increased

  • Code base migrated to .NET 5

Technical Changelog

Added

  • Spoof detector analysing liveness based on 2 internal neural networks (liveness_distant, liveness_nearby).

  • SmartFace Platform docker images available on container registry which are compatible with Linux on x64 platform. Scripts and docker-compose definitions are included for basic deployment (currently detection, extraction and liveness are with no GPU support).

  • SQL data can be stored also into PostgreSQL database when SmartFace Platform is deployed on Linux.

  • SmartFace Platform docker images available on container registry which are compatible with NVidia Jetson Xavier NX / NVidia Jetson AGX Xavier devices (https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/). Scripts and docker-compose definitions are included for basic deployment (only PostgreSQL is supported for storing SQL data).

  • HW decoding of video streams on NVidia Jetson.

  • GRPC camera streams now also accept encoded images.

  • Pedestrian tracking.

Changed

  • IFace of version 4.9.1 with improved detection and matching algorithms for masked faces is now used.

  • MinIO is now used for storing blob data. Migration of blob data from LevelDB to MinIO is possible with administration tool.

  • Only standard .NET Framework MSSQL/PostgreSQL connection string format is supported. ADO.NET format (starting with ‘metadata’) is unsupported.

  • Migration from .NET Core 3.1 to .NET 5.

  • Fix - “Passed” fields in notifications are now always set to “false” when relevant spoof check was not performed.


SmartFace Platform 4.7.0

Release date: 22- Mar-2021

Release notes

The delay on planned release date in mid January was caused by:

  • several major bugs in offline video processing

  • implementation of an autolearn clustering for improved accuracy for the client HB Reavis (extra release 4.6)

  • access controller 1.4 for the client HB Reavis

  • working on stories for NVidia Jetson for Precise Biometrics

  • implementation of several front-end stories because of senior UI developer was leaving INNO and we wanted to use his knowledge of the complex issues before he has left

Added

  • body parts detection using OpenVINO Human Pose Estimation model (https://docs.openvinotoolkit.org/2019_R1/_human_pose_estimation_0001_description_human_pose_estimation_0001.html).

  • COCO keypoints and human pose description in the pedestrian API models and notifications

  • spoof detection (presentation attack detection) powered by body parts analysis or external liveness detector

  • frame timestamp and eye coordinates to match notifications

  • spoof detection result to Nx Witness Integration plugin

  • possibility to specify FaceId in /Register and /AddNewFace endpoints requests

Changed

  • match notifications contain information about spoof detection

  • API for using external liveness


SmartFace Platform 4.6.0

Release date: 5-Jan-2021

Release notes
  • Improvements of accuracy of watchlist autolearn for faces covered by masks:

    • Watchlist autolearn clusters images based on whether the face is covered by a face mask or not

    • Possibility to configure extraction algorithm

Technical Changelog

Added

  • Added possibility to set different extraction algorithm used by Extractor service.

  • Added field to Face entity (AutolearnClusterType) which specifies whether autolearn face is contained in masked or unmasked cluster.

Changed

  • Autolearn now creates two averaged templates. Each averaged template is created from from cluster of either masked/unmasked autolearn faces. This should help decrease number of false positive matches.

  • Added new fields to WatchlistAutoLearnConfig which controls behavior of new autolearn behavior (NoFaceMaskConfidenceThreshold/FaceMaskConfidenceThreshold/MaskedSelectionThreshold).


SmartFace Platform 4.5.0

Release date: 30-November-2020

Release notes
  • Faster than real time offline video processing
Technical Changelog

Added

  • New pipeline for faster than real time video processing.

  • Installer now supports possibility to skip installation of GPU services.

  • Added additional checks to installer to check whether it is safe to upgrade SmartFace to newer version.

Changed

  • API for Video records is adapted for faster than real time pipeline while ensuring backward compatibility with previous 4.x versions.

  • SFStaticExtract and SFStaticDetect services were removed and their functionallity was moved to SFDetect/SFExtract services.

  • Fixed possible transaction issue when /Register endpoint was called in parallel.

  • SF services are now using official .NET core hosting packages for windows services instead of TopShelf.


SmartFace Platform 4.4.0

Release date: 02-October-2020

Release notes

Added

  • Following ICAO attributes available for detected face. Attributes are propagated in “faces.insert”, “faces.extracted”, “matchResults.nomatch” and “matchResults.match” notification:

    • Template Quality

    • Yaw Angle

    • Pitch Angle

    • Roll Angle

  • New argument “KeepAutolearnPhotos” added into Register method for Watchlist Member, where you can specify whether Register call should keep faces gathered by Watchlist Autolearn

  • Smooth preview for live streaming added. Preview now streams all frames not only processed ones

Technical Changelog

Added

  • Added new argument into Register method “KeepAutolearnPhotos” where it is possible to specify whether Register call should keep faces gathered by WatchlistAutolearn.

  • Face now contains YawAngle, PitchAngle, RollAngle and TemplateQuality. These fields are also propagated in “faces.insert” “faces.extracted” “matchResults.nomatch” “matchResults.match” notifications.

Changed

  • Live preview should be always smooth because we no longer stream only processed frames.

  • Fixed small memory leak in Gstreamer.


SmartFace Platform 4.3.0

Release date: 24-September-2020

Release notes
  • Pedestrian detection added

  • Information about detected pedestrians is provided in new notification and is also available via new API endpoint

  • Tracking is currently not supported for pedestrian detection

Technical Changelog

Added

  • Added .net implementation of pedestrian functions provided by the IFace

  • Support of pedestrians detection with notifications, list of detected pedestrians at new Pedestrian endpoint and detection configuration via new .json properties at camera endpoint

Changed

  • Changed dataflow and database insertion

SmartFace Platform 4.2.1

Release date: 23-September-2020

Release notes

Added

  • Added set-state-error-non-migrated-faces command into Admin CLI. This command will update all faces that have incompatible template versions to error state so SmartFace services will ignore them when starting up. This command should be executed only after some faces could not be migrated into newer version.

Changed

  • SFWatchlistMatcher service will now ignore loading faces of watchlist members in error state.

SmartFace Platform 4.2.0

Release date: 27-August-2020

Release notes
  • SmartFace Platform detects whether a person wears a face mask or not. This information is stored in the database and is provided to you in notifications

  • Possibility to enable Watchlist autolearn feature and disable data storage (store only matched faces)

  • Improved algorithms for extraction. This update requires migration of your data

  • Affinity configuration for camera processing available. This feature improves scaling possibilities

  • Default matching threshold changed from 24 to 40

Technical Changelog

Added

  • Affinity configuration from appsettings.json

  • Extracting face mask information from face

    • Face mask confidence - from range (-10 000, 10 000) lower value means lower confidence that the mask is present.

    • Nose tip confidence - from range (0, 10 000) lower value means lower confidence that the nose tip is visible. Can be used to determine if the face mask is worn properly.

    • Face mask status - Enum denoting if face mask is worn. Calculated from face mask confidence using the Face Mask Confidence threshold config

  • Added FaceMaskConfidenceConfig used for calculating Face mask status. Default value is 1000.

  • Added face template migration command to Admin CLI

Changed

  • IFace 3.11.1 - face mask support

SmartFace Platform 4.1.0

Release date: 28-July-2020

Release notes
  • Integration with Network Optix’s Nx Witness VMS added

  • Remote detection for the camera service added

  • Changed default max eye distance for the camera from 2000px -> 600px

Technical Changelog

Added

  • Integration with Nx Witness VMS

  • Create camera response returns service name of the assigned camera service

  • Remote detection for camera service. To use remote detection use cpu_remote and gpu_remote resource ids for cameras.

  • Changed default max eye distance for camera from 2000 -> 600


SmartFace Platform 4.0.2

Release date: 21-July-2020

Release notes

Added

  • AWS S3 client used at WatchlistApi for storing images

Changed

  • IFace 3.10.4 - performance improvements

  • Changed default max face size from 2000 -> 600

  • Service dependencies between all SmartFace services have been removed

  • Fixed registering of GPU services


SmartFace Platform 4.0.1

Release date: 02-July-2020

Release notes

Changed

  • Fixed issue where LivenessRequest for external liveness wrongly mapped RightEyeY from RightEyeX

SmartFace Platform 4.0.0

Release date: 09-June-2020

Release notes

Added

  • New REST API for easier integration with SmartFace. The new API is by default hosted on port 8098

  • Lazy loading of neural networks in face handler

  • ZeroMQ notification with subscription topic matchResults.nomatch. This notification is provided when face from stream is not matched against any registered watchlists member

  • Concept of resource id’s by which is possible to select GPU or CPU processing for processing/API calls, ie. configure CPU/GPU processing per camera

  • Possibility to set Id for Watchlist and WatchlistMember via PUT

  • Possibility to configure DBCleanup in SmartFace installer

  • Codebase change to .NET Core as one of the main prerequisites for running SmartFace Platform on Linux

Changed

  • Renamed entities InputFile -> VideoRecord

  • Renamed entities Identity -> Individual. This includes database, endpoints, notifications…

  • Renamed entities WlItem -> WatchlistMember. This includes database, endpoints, notifications…

  • Renamed entities WlHits -> MatchResults. This includes database, endpoints, notifications…

  • Added type column to MatchResults (WlHits)

  • Renamed entities Persons -> Tracklets. This includes database, endpoints, notifications…

  • Renamed entities Photos -> Frames. This includes database, endpoints, notifications…

  • Renamed table Faces -> VisualObjects. This was only done on database level.

  • Renamed table and OData entity Grouping -> GroupingMetadata

  • Following entities have had their Id changed from integer to Guid type:

    • Frames

    • VisualObjects

    • Trackelts

    • Scopes

    • Streams

    • Watchlists

    • WatchlistMembers

    • Individuals

    • MatchResults

  • ZeroMQ subscription topic wlHits.match -> matchResults.match

  • ZeroMQ subscription topic wlHits.insert -> matchResults.match.insert

  • WebApi renamed to ODataApi

  • Most of ODataApi POST, PATCH, DELETE methods have been moved to new new API on default port 8098

  • Renamed all services

  • Cameras / VideoRecords are created in default video scope on which grouping is not performed

Removed

  • Removed the concept of “ExternalId” from Watchlists and WatchlistMembers. Only one string Id is present on the entities which will be generated by SmartFace when not specified, or it can be specified by the user

  • Automatic grouping trigger for records (formerly Scopes with type Event) was removed. Grouping is triggered manually from API

  • Removed Hls and MJPEG streaming

  • Removed FaceAttributes entity

  • MatchStrategy cannot be set anymore, default state is ALL

Technical Changelog

Added

  • New REST API for easier integration with SmartFace. The new API is by default hosted on port 8098

  • ZeroMQ notification with subscription topic matchResults.nomatch. This notification is fired when face from stream is not matched against any registered watchlists member.

  • Concept of resource id’s by which is possible to select GPU or CPU processing for processing/API calls

  • Possibility to set Id for Watchlist and WatchlistMember via PUT

  • IFace 3.10.1 and IDKit 7.6.6 were integrated

Changed

  • Renamed entities InputFile -> VideoRecord

  • Renamed entities Identity -> Individual. This includes database, endpoints, notifications…

  • Renamed entities WlItem -> WatchlistMember. This includes database, endpoints, notifications…

  • Renamed entities WlHits -> MatchResults. This includes database, endpoints, notifications…

  • Added type column to MatchResults (WlHits)

  • Renamed entities Persons -> Tracklets. This includes database, endpoints, notifications…

  • Renamed entities Photos -> Frames. This includes database, endpoints, notifications…

  • Renamed table Faces -> VisualObjects. This was only done on database level.

  • Renamed table and odata entity Grouping -> GroupingMetadata

  • Following entities have had their Id changed from integer to Guid type:

    • Frames

    • VisualObjects

    • Trackelts

    • Scopes

    • Streams

    • Watchlists

    • WatchlistMembers

    • Individuals

    • MatchResults

  • ZeroMQ subscription topic wlHits.match -> matchResults.match

  • ZeroMQ subscription topic wlHits.insert -> matchResults.match.insert

  • WebApi renamed to ODataApi

  • Most of ODataApi POST, PATCH, DELETE methods have been moved to new new API on default port 8098

  • Renamed all services

  • Cameras / VideoRecords are created in default video scope on which grouping is not performed

Removed

  • Removed the concept of “ExternalId” from Watchlists and WatchlistMembers. Only one string Id is present on the entities which will be generated by SmartFace when not specified, or it can be specified by the user

  • Automatic grouping trigger for records (formerly Scopes with type Event) was removed. Grouping is triggered manually from API

  • Removed Hls and MJPEG streaming

  • Removed FaceAttributes entity

  • MatchStrategy cannot be set anymore, default state is ALL


SmartFace Platform 3.7.0

Release date: 30-April-2020

Release notes

Added

  • Support for External Liveness. By default this feature is off, you can enable it via LivenessConfig. When enabled, SmartFace will send RPC request with raw image data and face coordinates to External Liveness RPC server and if successfull liveness result is returned, Smartface will emit LivenessResult notification.

SmartFace Platform 3.6.2

Release date: 16-July-2020

Release notes

Changed

  • Fixed deleting of Autolearn face over the buffer size.

  • improved performance of WatchlistItemRpcController by not allocating face handler for every request. Face handler is now allocated only once on the first RemoveFace call.


SmartFace Platform 3.6.1

Release date: 02-July-2020

Release notes

Changed

  • Fixed internal error when multiple same external IDs of non-existing watchlist are sent to the rpc/WatchlistItems/Register API method

  • No transactions are now coordinated by MSDTC


SmartFace Platform 3.6.0

Release date: 16-March-2020

This release support migration from previous versions only if previous face data were deleted! Smartface camera/system configuration will not be affected.

Release notes

Added

  • IFace 3.8.3 and IDKit 7.6.0 were integrated

  • Watchlist Autolearn. Every day, SmartFace will select additional face for watchlist memeber from previous watchlist hits. This will increase true matches from wild stream faces and also decrease number of false matches to improve support AccessControl vertical. By default this feature is disabled (see WatchlistAutoLearnWorkerConfig).

  • DataStorageConfig through which you can control whether data from stream processing are saved or not (GDPR friendliness). Two options are currently available None/All. Default value is All.

Changed

  • Template extraction algorithm changed from accurate_server_wild to balanced.

  • Removed support for accurate_server detection algorithm, supported algorithms are (fast, balanced, accurate)

  • balanced and acccurate detection algorithms are both neural detectors and were retrained (fast mode still uses AdaBoost)

  • face confidenece thresholds were normalized for all detection algorithms to <0,10000>. However every detection algorithm have different “recommended” face confidence thresholds.


SmartFace Platform 3.5.1

Release date: 18-February-2020

Release notes

Changed

  • fixed memory leak in process of extraction

  • data storing speed further optimized

  • installer now correctly changes count of video slots in the database

  • installation migration process has been fixed


SmartFace Platform 3.5.0 - 2019-01-24

Release date: 24-January-2019

Release notes

Added

  • possibility to trigger event scope grouping /rpc/Groupings/Trigger

  • relative timestamp has been added to entity Photo

Changed

  • face crop method changed to IFACE_FACE_CROP_METHOD_TOKEN_NOT_FRONTAL

  • fixed grouping of event scopes with input files on slow machines where not all faces could be extracted


SmartFace Platform 3.4.1

Release date: 17-December-2019

Release notes

Changed

  • fixed memory leak in process of tracking

SmartFace Platform 3.4.0

Release date: 04-December-2019

Release notes

Added

  • new fields FaceArea, FaceOrder, FacesOnFrameCount, FaceAreaChange, PhotoId have been added to WlHit entity

  • new fields FaceArea, FaceOrder, FacesOnFrameCount, FaceAreaChange have been added to Face entity

  • document more error response code for API endpoints

  • new API function for configuration constants /odata/Configs/Function.GetConstants() has been added

  • added min/max validations for MaxResultCount input parameter of API method Watchlist/Search

  • new parameter FaceExtractionFrequence was added to SreamWorkerConfig to be able to get faces more often then FaceDiscoveryFrequence

  • added additional config ImageSizeConfig, which affects size of processing images in SmartFace

Changed

  • integrated newest iface 3.7.0 with smaller memmory footprint and faster NN detector

SmartFace Platform 3.3.2

Release date: 27-November-2019

Release notes

Changed

  • fixed memory leak of accurate_server detector running on CPU

SmartFace Platform 3.3.1

Release date: 19-November-2019

Release notes

Changed

  • fixed milestone integration plugin when more than one faces are registered as watchlistitem

  • fixed milestone integration plugin rendering issue

  • document all known API response codes to swagger


SmartFace Platform 3.3.0

Release date: 19-September-2019

Release notes

Added

  • Integration with Milestone VMS

  • REST API - Rpc/Watchlists - new RPC: /rpc/Watchlists/Search - Search by image in watchlist

  • REST API - Stream - new property: Name

  • Possibility to set processor affinity via config

Changed

  • integrated newest iface 3.6.2 with fix in tracking

SmartFace Platform 3.2.0

Release date: 30-July-2019

Release notes

Added

  • performance/reliability improvement - each camera runs in separate process

  • live extractor and matcher are now decoupled from camera service

  • setting config values and enabling/disabling workers request are now asynchronous

  • new field FaceId has been added to WlHit entity

  • validation of all Config values in methods on endpoint /odata/Configs

  • jaeger tracing for live mode pipeline

  • experimental support for USB cameras

  • new endpoint /rpc/License/Check to check license of IDKit and IFace

  • zeroMQ heartbeat messages on topic “heartbeat”

Changed

  • integrated newest iface 3.6.0 with support for RTX nvidia GPU’s

  • logging has been changed to structured logging via Serilog


SmartFace Platform 3.1.0

Release date: 21-May-2019

Release notes

Added

  • support for MPEG1 streaming via TCP. Behavior can be configured with new StreamWorkerConfig properties (MPEG1PreviewEnabled, MPEG1VideoBitrate, MPEG1PreviewPort).

  • first version of CLI application (sfcli) - source code is open sourced at (https://github.com/innovatrics/smartface)

  • added new ZeroMQ notification when face attributes were extracted and saved to database (topic: “faces.extracted”)

  • installer now shows location to installer logs in case of any error during installation

  • Age and Gender properties were flatten and migrated to Face entity (FaceAttributes table still exists, but will be deprecated and removed in next major release).

  • GenderFormatted property was added to API Face entity (possible values: Male/Female).

Changed

  • integrated newest iface 3.5.3 and idkit 7.2.7.

Removed

  • Id property was removed from API of Config entity.

SmartFace Platform 3.0.2

Release date: 13-May-2019

Release notes

Changed

  • Fix - WebApi memory leak.

SmartFace Platform 3.0.1

Release date: 26-March-2019

Release notes

Changed

  • Fix - Possible memory leak during HLS streaming has been fixed

  • Fix - Limitation for maximum count of HLS segments has been removed


SmartFace Platform 3.0.0

Release date: 20-Fabruary-2019

IMPORTANT - Previous versions of SmartFace are incompatible.

Release notes

Added

  • EasyInstaller - separate installer which install all SF prerequisities (.net framework, erlang, RabbitMQ, MsSql server with default database)

  • New notification - persons.completed - is fired after all faces which belongs to this current person are extracted and saved

  • Wachlist RPC methods are available on endpoint: http://hostname:8099/rpc

  • REST API - Rpc/WatchlistItems - new RPC: /rpc/WatchlistItems/Register

  • REST API - Rpc/WatchlistItems - new RPC: /rpc/WatchlistItems/AddExistingFace

  • REST API - Rpc/WatchlistItems - new RPC: /rpc/WatchlistItems/RemoveFace

  • REST API - WlHit - new property: WatchlistDisplayName

  • REST API - WlHit - new property: WatchlistExternalId

  • REST API - WlHit - new property: WatchlistFullName

  • REST API - WlHit - new property: WlItemExternalId

  • REST API - Watchlist - new property: ExternalId

  • REST API - WlItem - new property: PersonId

  • REST API - Configs - New Action.SetConfgiValues

Changed

  • IFace 3.5, IDKit 7.2 - threshold 0 - 100

  • Watchlist API reworked

  • SaveBehavior - values could be combined e.g. “FistFace, BestFace”

  • SaveBehavior - All - save all detected faces to database

  • SaveBehavior - FirstFace - save first detected face to database

  • SaveBehavior - BestFace - when person is lost save face with highest quality

  • Video pipeline use MQ to deliver tracking events to database worker

  • Age and Gender are calculated in extraction process for each face

  • WebApi is now available on default port 8099

  • OData endpoint: http://hostname:8099/odata

  • swagger: http://hostname:8099/swagger

  • image handler: http://hostname:8099/image/{image_guid}

  • hls preview stream: http://hostname:8099/Preview/{streamId}/playlist.m3u8

  • REST API - ScopeData - Description is not required

  • REST API - FaceAttributes - property renamed: ValueFormatted => ValueFormatted

  • REST API - WlItem - property renamed: ExternalReference => ExternalId

  • REST API - Type renamed: BulkReponseData => BulkResponseData

  • REST API - Configs - StreamWorkerConfig - property DeletePhotoData has been renamed to SavePhotoData and logic was reversed

  • REST API - Configs - DetectFaceWorkerConfig - property DeletePhotoData has been renamed to SavePhotoData and logic was reversed

  • REST API - Configs - ContinuousGroupingWorkerConfig - property GroupingInterval has been renamed to GroupingStep

Removed

  • API query attribute @calculate has been removed

  • Dependency on IIS has been removed

  • Link from Identity to WlItemId has been removed

  • REST API - WlHit - property removed: ExternalReference

  • REST API - WatchlistItem - method removed: Action.LinkToItentities

  • REST API - WatchlistItem - method removed: Action.UnLinkFromItentities

  • REST API - Worker - property removed: Key

  • REST API - Configs - GroupName prefix in config context has been removed. Configuration of workers uses only worker id as context

  • REST API - Configs - FaceHandlerConfig - context “web” was removed. Single config with context “.” is used in both backend and webapi