LUNA PLATFORM v.5.8.0#
Summary#
-
The parameters for using Liveness V2 were added to the "detect_policy" of resources "/handlers" and "/verifiers" . When Liveness estimation is enabled, the requirements of Liveness V2 for the incoming images should be considered. See "Liveness V2 Requirements" for details.
When Liveness V2 license is absent the "License problem: 'Liveness v.2 feature disabled'" error is returned in the response to the "/handlers/{handler_id}/events" and "/verifiers//verifications" requests. The "estimate_liveness > estimate" should be set to "0" when there is no Liveness V2 license. Liveness estimation is not provided for the Backport 4 service handlers.
Liveness in handlers and verifiers
The "estimate_liveness" group of parameters provides the possibility to enable the estimation of Liveness and the status of the incoming image: - "estimate" - enable Liveness estimation in the incoming images. The default value is set to "0" and Liveness V2 is not used. - "liveness_threshold" - set Liveness threshold. The face in the incoming image will be considered real ("real" state) if the Liveness value is greater or equal to the specified threshold. Otherwise, the face will be considered a spoof ("spoof" state). The default value is "0.88". - "quality_threshold" - set the image quality threshold for Liveness estimation. If the quality is lower than the specified threshold, the "unknown" state will be set. The default value is "0". The "liveness_states" parameter enables you to set a filter by Liveness states. You should set Liveness states values. Only events with an estimated liveness state equal to one of the specified liveness states will be processed.
If an event is filtered by "liveness_states", the estimated face properties are returned for the face detection but the "extract_policy", "match_policy", "storage_policy", "conditional_tags_policy" policies will not be performed for the event.
One or several values from the list can be set for the "liveness_states" filter:
* spoof - 0 * real - 1 * unknown - 2
The default parameter value is set to "null", and filtration is not performed. The field is ignored if Liveness estimation is disabled in the "estimate_liveness > estimate". The "liveness" filter was added to the following policies:
- "match_policy".
- "storage_policy" for all the objects.
- "conditional_tags_policy".
The "liveness" field was added to the "match_policy" as a possible "target" value.
Liveness results aggregation
When the "aggregate_attributes" option is enabled in the "/handlers/{handler_id}/events" request, the aggregation of the Liveness estimation results will be performed for several processed images to receive more precise data. The data will be returned in the "aggregate_estimations" field.
The "aggregate_estimations" field is mandatory and is always returned in the response. The response also includes Liveness estimation values for each of the detections. When the "aggregate_attributes" option is disabled, the Liveness values for the face detection and values in the "aggregate_estimations" field will be the same. When an event is saved, the aggregated Liveness result from the "aggregate_estimations" field is saved in the database.
New liveness field
The "liveness" field was added to events. The following features are provided:
- Receive events using the "liveness" filter and set "liveness" as a "target" in the GET "/events" request.
- Receive statistics on events and set "liveness" as a target and filter in the GET "/events/statistics" request.
- Use "liveness" as a filter for events in the request to the "/ws" resource and get "liveness" values in response to this resource.
The "liveness" field was supported as:
- A filter for events in "/matcher/face" and "/matcher/body" matching requests.
- A filter for events in cross-matching ("/tasks/cross_match"), clustering ("/tasks/clustering"), and linker ("/tasks/linker") tasks.
- A column for a report in the reporter task ("/tasks/reporter").
You can set liveness parameters values when manually save events using the "/handles/{handler_id}/events/raw" resource. A separate liveness value can be set for each face detection and an aggregated value can be set.
- The "/tasks/additional_extract" request from the Admin service now supports the re-extraction of basic attributes and descriptors for faces and bodies saved in events. The transition to a new version of the neural network for events is now supported.
The following features were added to the "/tasks/additional_extract":
- Set events as objects for descriptors and basic attributes extraction.
- Re-extract body descriptors for events.
You should specify descriptors (faces or bodies) or basic_attributes to be re-extracted. Then it is required to specify a filter for objects (faces or events) for which the descriptors should be extracted (for descriptors only). The re-extraction of events attributes was added to the Admin user interface. You should select "Events" as "Object type" and set "Face" or "Body" as "Descriptor type".
The PATCH request to the "/events/" resource for updating of basic attributes and descriptors of existing events was added.
The resources for receiving events with samples and attributes "/events/attributes/missing" and calculation of the number of such events "/events/attributes/missing/count" were added to the Events service.
See additional information about source images saving for events in the "Launch re-extraction task" in LP_Administration_Manual.
- Python 3.9 is now used for API, Faces, Image Store, Tasks, Events, Configurator, Sender, Handles, Backport 3, Backport 4, Licenses services. Older versions of Python are no longer supported.
Python 3.7 and newer can still be used for "luna3" client library, the "folder_uploader.py" script for images downloading, and the scripts for migration from LP 3.
- The "image_origin" field was added to the POST request to the "/handlers/{handler_id}/events" resource for "application/json" and "multipart/form-data" body schemas.
One can specify a link to the source image for each of the images provided in the request. The URL will be added to the "image_origin" field of the created event.
The image provided in the "image_origin" field will not be processed in the "/handlers/{handler_id}/events" request. It is used as a source image only.
If the "image_origin" is not empty, the provided URL will be used in the created event regardless of the "image_origin_policy" policy.
See additional information about source images saving for events in the "Saving source images" in LP_Administration_Manual.
- The support of UTF8 symbols was added for EXIF tags. Recognition of Cyrillic was added.
Symbols in response are limited by ASCII encoding. Screening is used for all characters in EXIF tags, which are not included in the ASCII set.
An example of screening for the "artist” EXIF field: '"exif": {"artist":"\u041f\u043e\u043f\u043e\u0432"'.
Fixed errors
-
Missing response schemas were added in the OpenAPI documentation of the Image Store service.
-
Fixed was the error when EXIF tags were causing "Internal server error".
API (v.5.3.1 - v.5.5.1)#
Improvements#
-
Service dependencies were updated.
-
The specified
image_origin
is now used independently of theimage_origin_policy
for requests
to generate events .
-
Support for older python versions was dropped. Python 3.9 is required now.
-
Field image_origin to indicate image origins in input images for generated events was added. See generate events resource.
-
Handler & verifier detection policy was extended with liveness estimation policy & liveness state filter. See the estimate_liveness and liveness_states parameters in detect_policy at create handler , create verifier .
-
The liveness filter was supported in the handler matching policy for events set as candidates. The liveness target was supported for events in the handler matching policy.
-
Matching policy, each storage policy and the tag policy were extended with a liveness filter. See the liveness parameters in filter object at create handler .
-
The liveness event field was supported as a matching filter and liveness was supported as a target for returned events in matching requests. See the following resources for details:
- body matching
-
The liveness field was added for events. Now it is possible to:
-
get events using the liveness filter and use liveness as a target (get events );
- get statistics on events and specify the liveness as a target or filter (events statistics ).
-
use liveness as a filter for events received using WebSockets (WS )
-
The liveness estimations were added for user-generated events. They were added to face detections attributes and the aggregate_estimations object. (see save event ).
Faces (v.4.2.0 - v.4.2.3)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.
Image Store (v.3.3.0 - v.3.3.3)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.
Fixed bugs#
-
Fixed missing response schemas for resources:
Tasks (v.3.1.1 - v.3.3.1)#
Improvements#
-
Service dependencies were updated.
-
Additional extract task was advanced.
From now on, face descriptor & basic attributes re-extraction can be performed on either faces or events (see objects_type in filters).
The new body_descriptor extraction target was supported for additional extract task. Body descriptor re-extraction can be performed on events only.
See additional extract task resource.
-
Support for older python versions was dropped. Python 3.9 is required now.
-
The liveness event field was supported as filter for cross-matching, clustering and linker tasks. See clustering task . See reporter task . See linker task .
-
The liveness event field was supported as target column for reporter task. See reporter task .
-
The liveness processing for clustering task was added. See clustering task .
Events (v.2.1.5 - v.2.2.4)#
Improvements#
-
Service dependencies were updated.
-
Resources for getting filtered events with samples were added - /events/attributes/missing and /events/attributes/missing/count.
-
The liveness field was added for events. Now it is possible to:
-
create events with liveness field (post events );
- get events using the liveness filter and use liveness as a target (get events );
- match events using liveness filter and set liveness as a target returned in the matching results (match events );
-
get statistics on events and specify the liveness as a target or filter (events statistics ).
-
Support for older python versions was dropped. Python 3.9 is required now.
-
Resource to update the event has been added. Updating of basic attributes and descriptors is currently supported. See update event resource.
Configurator (v.1.2.0 - v.1.2.3)#
Improvements#
-
Service dependencies were updated.
-
Configs migration command
python -m configs.migrate head
now enrolls default dump file if no platform limitations found in the database. -
Support for older python versions was dropped. Python 3.9 is required now.
Sender (v.2.1.5 - v.2.1.8)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.
-
The liveness and aggregate_estimations fields were added for events. Now it is possible to use liveness as a filter for events received using WebSockets. See ws handshake docs.
Admin (v.4.2.4 - v.4.2.7)#
Improvements#
-
Service dependencies were updated.
-
Additional extract task was advanced.
From now on, face descriptor & basic attributes re-extraction can be performed on either faces or events (see objects_type in filters).
The new body_descriptor extraction target was supported for additional extract task. Body descriptor re-extraction can be performed on events only.
See additional extract task resource.
- In the GUI, descriptors re-extraction is supported both for faces or events.
Licenses (v.0.1.33 - v.0.1.36)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.
Handlers (v.1.3.4 - v.1.4.3)#
Improvements#
-
Service dependencies were updated.
-
Support for utf-8 symbols in exif tags was added.
-
Ability to upgrade event attributes (face/body descriptor(s) and/or basic attributes) was added.
See upgrade attributes resource.
- The specified
image_origin
is now used independently of theimage_origin_policy
for requests
to generate events .
-
The configuration reload mechanics has changed. Now, its done mostly by restarting appropriate processes (see configuration ).
-
Handler & verifier detection policy was extended with liveness estimation policy & liveness state filter. See the estimate_liveness and liveness_states parameters in detect_policy at create handler , create verifier .
-
The liveness filter was supported in the handler matching policy for events set as candidates. The liveness target was supported for events in the handler matching policy.
-
Matching policy, each storage policy and the tag policy were extended with a liveness filter. See the liveness parameters in filter object at create handler .
-
The liveness estimations were added for user-generated events. They were added to face detections attributes and the aggregate_estimations object. (see save event ).
-
Support for older python versions was dropped. Python 3.9 is required now.
-
Field image_origin to indicate image origins in input images for generated events was added. See generate events resource.
Fixed bugs#
-
Some exif tags were causing internal server error.
-
Request example was fixed, see save event resource.
Python Matcher and Python Matcher Proxy (v.0.4.4 - v.0.4.7)#
Improvements#
-
Service dependencies were updated.
-
Memory usages of a crossmatch request was decreased.
-
The liveness event field was supported as a matching filter and liveness was supported as a target for returned events in matching requests. See resources for details:
- face cross matching
- body matching
- body cross matching
Backport3 (v.0.1.4 - v.0.1.7)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.
Backport4 (v.1.0.26 - v.1.0.29)#
Improvements#
-
Service dependencies were updated.
-
Support for older python versions was dropped. Python 3.9 is required now.