SmartFace Platform
SmartFace Platform v5_4.30.1
Release date: 26-February-2025
Important Information
To use new palm related features, a correct license needs to be used. If in doubt, please contact your sales representative
Changed
- Toolkit was updated to 1.13.3. to fix speed regression introduced in previous version when license was verified for each identify call
- Fix possible race condition when multiple edge stream were created simultaneously
- Add more 409 possible response code descriptions to Palm search related API endpoints
SmartFace Platform v5_4.30.0
Release date: 02-February-2025
Important Information
To use new palm related features, a correct license needs to be used. If in doubt, please contact your sales representative
Added
SFCam
service now supports palm processingEdgeStreamProcessor
service now supports processing of palm data- API configuration for palm processing was added via
POST
/PUT
Camera endpoints viaPalmDetectorResourceId
was added. Supported values arecpu
ornone
PalmTemplateGeneratorResourceId
was added. Supported value iscpu
PalmDetectorConfig
object on PUT/POST Camera API endpoints
- Added support for AssumedRole authentication in the migrate faces command, allowing S3 access
- Added support for palm synchronization from leader to follower
Changed
- API endpoints of
Camera
andEdgeStream
now accept configuration properties for PalmDetection, namelyPalmDetection_Enable
PalmDetection_MaxDetections
PalmDetection_BoundingBoxExtension
PalmDetection_Tracking_InputThreshold
PalmDetection_Tracking_OutputThreshold
PalmDetection_Tracking_Stability
PalmDetection_Tracking_MaxFramesLost
IdentificationEventNotificationDTO
was extended withPalmModalityInfo
which will be set when detected palm was identified/not identified- Edge stream POST/PUT endpoints now support setting of
PalmDetection
related settings - GRPC NX Integration may not work correctly when GRPC connection is broken due to server processing error. This is known issue and will be addressed later on
- Updated API descriptions of allowed save strategies
- Improved validation messages with better descriptions for all services
migrate-faces
admin cli command parameter alias was changed from--s3-sk
to-s3-sk
. This was typo. Full version of parameter--s3-secret-key
stay unchanged.
Fixed
- Fixed handling of the deprecated but accepted ObjectSaveStrategy value
Best
for EdgeStream endpoints - Fixed a bug where deleting a member with palms left the frame and its blobs in the database
- Fixed off by one validation for the
/contract/smartface/watchlist_member_count
license value
SmartFace Platform v5_4.29.0
Release date: 13-December-2024
Important Information
To use new palm related features, a correct license needs to be used. If in doubt, please contact your sales representative
New palm modality added, including enrolling palms for Watchlist Members, searching by palm images and palm templates via REST API, including in LFIS. Added new endpoints, new threshold for palms for Watchlists.
Added an option for the SFE Stream Processor to disable sending of notifications of unmatched people. This means that people who are not recognized by the Edge camera do not generate notifications - their data will never leave the Edge camera.
Several optimizations, including RabbitMQ updated in Windows deployment, removing Edge streams from the platform removes them from the MQTT to avoid retaining previous configuration and overriding the settings.
Technical Changelog
Added
- Palm modality for LFIS and REST API
- Option to disable SFE Stream Processor notifications for unmatched persons
Changed
- Removing Edge streams from platform applied to MQTT Broker
- RabbitMQ optimalized in Windows deployment
Fixed
- Incorrectly exposed face property for an individual in the GraphQL.
SmartFace Platform v5_4.28.2
Release date: 09-December-2024
Important Information
A bug was fixed where under some circumstances the watchlist matcher did not properly update the watchlist database. This is related to the watchlist synchronization, therefore it is recommended to update if you are using watchlist synchronization and the rebuild the synchronization stream re-running the create-wl-stream-generation.sh
The services starting process was updated to prevent cold start waiting. Now all the services get ready during their start, they do not wait for the fist detection for full initialization.
Fixed a bug where when re-registering a watchlist member with parameter keepAutoLearnPhotos: true, assigned autolearn faces are deleted, but the fields NotMaskedAveragedTemplate and MaskedAveragedTemplate are not changed.
Technical Changelog
Changed
- Updated the services starting to prevent cold start waiting
Fixed
- Possible inconsistency of the watchlist matchers database
- Averaged autolearn templates are not processed correctly when re-registering watchlist members
SmartFace Platform v5_4.28
Release date: 08-October-2024
Important Information
⚠️ For the version v5_4.28 of the SmartFace Platform we have changed the Save strategies. Added new strategies: None and MatchedOnly and updated of strategy Balanced.
⚠️ With the version v5_4.28 the new Face Validation is enabled for Watchlist Member Enrollment. Only faces matching the requirements can be enrolled. The requirements can be configured.
Updated save strategies
New strategy None was added. It saves face/pedestrian only when it is linked to a pedestrian/face that is about to be saved based on its saving strategy.
Another new strategy MatchedOnly was added. It saves face/object only when matched to a watchlist member and match score is sufficiently higher than previously saved face/object with the same matched member.
The Balanced was updated. It saves face/object also in all cases that MatchedOnly strategy would.
Save strategies are now available for objects using the SFE Stream Processor.
Identification based on Time-based One Time Password encoded in QR code (QR TOTP)
New identification type / modality was added using the QR codes. New REST API endpoints were added: an API endpoint for creating TOTP secrets for watchlist members and a conditionally enabled endpoint displaying currently valid QR code for watchlist member with enabled TOTP.
Added support for “matching” parsed QR codes from the SmartFace Embedded Stream Processor against watchlist member database, evaluation and notifications ( ObjectProcessed, IdentificationEvent ).
Additional features for the LFIS
Added Pedestrian and Object detection. Biometric templates are available via the REST API and they can be queried using the GraphQL API.
Pedestrian and Object detection endpoint in API (and LFIS setup)
Image validation and filtering for registration We have added new filtering Face Validation for the images used for registration, to ensure high quality of the registration image.
Technical Changelog
Added
- Added new save strategy “None”
- Added new save strategy “MatchedOnly”
- Added new QR Modality using Time-based One Time Password encoded in QR code (QR TOTP)
- Added Pedestrian and Object detection for LFIS
- Added ability to download Biometric Templates for Watchlist member and to query them
- Added Face Validation with conditions for Watchlist Member registration
- Added IdentificationEvent notification
Changed
- Updated save strategy “Balanced”
- Updated checking of compatibility, now we are checking compatibility of the SmartFace Server to ensure the AVX2 instructions are supported
- Updated SFAdmin to redirect logs of the SFAdmin into console
Fixed
- Fixed case sensitive search when using the PostgreSQL
- Fixed a bus in the Rapid Video Processing where the service gets stuck
SmartFace Platform v5_4.27
Release date: 31-July-2024
Important Information
⚠️ For the version v5_4.27 of the SmartFace Platform we have changed the Save strategies. New Balanced strategy became the default saving strategy for Faces and Pedestrians, the First Face, Best Face and First Face and
Best Face became deprecated.
New Saving Strategies
Today there are All, Balanced, None and Matched Only Saving Strategies. The Balanced is the new default. None keeps Faces linked to Pedestrians and Pedestrians linked to Faces.
Updated Liveness Notifications
The liveness checks are performed and now the information about the results is part of the notifications.
Speed improvement for linked Faces and Pedestrinas
The Database querying was optimized thus improving overall speed of the linked Faces and Pedestrians.
Technical Changelog
Added
- New Balanced Saving Strategy
Changed
- None Saving Strategy was changed to allow keeping Faces and Pedestrians consistent for the purpose of linking. Now all saving strategies allow linking between Pedestrians and Faces.
- EdgeStreamStateSynchronizer throws an error if the WL Stream is not available.
Fixed
- Fixed bug related to propagating the Client ID
- Video processing has few bugs fixed
- Fixed Odata propagating Edge license
- Several Minor fixes
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.
Liveness Thresholds
ℹ️ With the updated Liveness, the Liveness Thresholds have been updated. Please read more here
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 toMatchNotification
andNoMatchNotification
notifications
Changed
Upgraded
IFace
to version5.14
- Distant liveness algorithm can now be configured via appsettings in
RpcLiveness
service, sectionLiveness__DistantAlgorithm
, supported values arefast
(default) andaccurate
- The FAR/FRR ratios and their relation to the Liveness Score has changed. Please read more here
- Distant liveness algorithm can now be configured via appsettings in
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, relatedResourceIds
are markeddeprecated
, if still in use, they will fall back tosfe_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
- If
changed default values for
OnnxRuntimeConfiguration__SolverInterThreads
andOnnxRuntimeConfiguration__SolverIntraThreads
to 1 so SFE Toolkit and IFace default behavior is consistentremoved
IFaceConfig
fromConfig
table, replaced withappsettings
sectionIFaceConfiguration
whereThreadNum
andThreadManagementMode
can be configuredIndividuals
in GraphQL API now queries directly from theIndividual
table, instead of theIndividualsWithBestFace
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.
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
andSFDbSynchronizationFollower
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 viaFeatureManagement__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 afterwardsReadOnlyWatchlists
feature flag will be set forSFApi
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
andOperationMode__LivenessDataStrategy
from appsetings andenv.all
, these values are now dependent on the configuration of the Embedded stream processor
- Removed
- GraphQL API subscription to listen for SmartFace Embedded Stream Processor health report
- Added new endpoint
LiveGrouping/Streams
mirroring functionality ofLiveGrouping/Cameras
, but with support for both cameras and EdgeStreams - Possibility to disable LiveGrouping processing with new property
Enabled
on LiveGrouping endpoint (The property defaults totrue
, 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
propertySaveFrameImageData
was changed from true to false - Added property
Note
that was missing intoapi/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 valuedefault
- 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 accepting00:00:00
as a validcleanupStart
value, also added23:59:59
as upper bound ofcleanupStart
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/
.
- Now, you can effortlessly select specific watchlists and synchronize them to chosen edge streams via REST API endpoint
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 variableTrackingConfiguration__MaxOldnessDetectionFrames
in the docker environment, or by using the camera’sSmartFace.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’sSmartFace.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 schemaSmartFace 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 toError
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 requestAdded 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
andTimeDisappeared
times on Tracklets created in OfflineVideoProcessing. IfVideoRecord.RecordedAt
is provided then the times on a Tracklet are calculated as absolute times starting fromRecordedAt
.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 inReady
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/returnsLabels
property.POST
/api/v1/WatchlistMembers/Register
accepts/returnsLabels
property.POST
/api/v1/Watchlists/Search
containsLabels
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
andGender
have been added to matchresult entity and also to notificationsmatchResults.match.insert
,matchResults.match
,matchResults.nomatch
.New property
Size
for Face and Pedestrian entity has been added. On matchresults is property namedFaceSize
.New property
ProcessedAt
for notificationspedestrians.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 toReady
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 toRecordedAt
time of VideoRecord.Face property
ProcessedAt
is now calculated relative toRecordedAt
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. NotificatonsmatchResults.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
andaccurate_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 isfalse
.
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
thanredetectionTime
.Slightly improved saving throughput of stream data.
SmartFace Platform v5_4.11.0
Release date: 06-December-2021
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
andgpu_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