Skip to content

LUNA PLATFORM v.5.0.0#

API (v.4.0.0)#

Improvements#

  • API service version was updated to 4.0.0. Current API version is 6.

  • Detector and Extractor service features were merged with the API service features.

  • Handler pipeline and biometric features estimation monitoring data is now more detailed.

  • The format of gaze direction was changed. Now gaze direction is a single field without splitting for the left and right eyes. Yaw and pitch angles for the gaze direction are now estimated. See "detect faces" resource.

  • New image quality estimation format of LUNA SDK v.3.9.0 is now supported. Following quality parameters were added: dark, light, illumination, specularity and blurriness.

  • Handlers, Detector, and Extractor were merged into a single Handlers service.

  • The extracted descriptor is now used for direct matching in handlers. Matcher receives a descriptor reference from the API service instead of receiving an attribute_id from the Faces service.

  • For matching requests that have events as references, descriptors are now loaded from the Events service.

  • Users can now create a dynamic handler (POST "/handlers") without predefined policies. Policies are now specified within each POST request on "/handlers//events".

  • Detector, extractor or estimator functionality can now be disabled on application startup using the command line arguments.

  • New descriptor and descriptor_version parameters were added to the requests to the Events service.

  • The "total" field was removed from the response of GET "/events" request.

  • A new "location" field was added to an event. The field specifies the information about the place where the event occurred. See:

  • "emit event";

  • "get events";

  • "get events statistics".

  • Locations in the event filters for clustering and cross-match tasks are now supported. Location columns in the reporter task reports were added.

  • Getting the best detection from the image detections is now supported:

  • the multiface_policy query parameter was added to the POST "/detector" method. See "detect faces" resource;

  • the multiface_policy parameters were moved from handler Policies to handler DetectPolicy. See "create handler" resource;

  • the multi_face_policy parameter was added to the folder_uploader script.

  • Generation of sample and attribute URLs was changed. The following relative URLs are now returned:

  • sample URLs in responses for the requests to POST "/detector";

  • attribute URLs in responses for the requests to POST "/extractor".

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the configuration file.

  • A new --ignore-integrity option for the "lis_bucket_create.py" script was added. If the bucket already exists, script exits with status code 0.

  • The validation schemas section was added to Sphinx documentation of the API handlers.

  • A new "/sdk" resource was added to detect faces, human bodies, and estimate attributes on input images. See "sdk" resource.

  • New limit, targets and threshold parameters were added to handler's matching_policy. See "handlers" resource.

  • New services' versions were added to the "/version" resource. See "version" resource.

  • The extract_result of the outcoming event(-s) was replaced with detections. The extract_result of the match target was replaced with face_detections.

  • Events' top match result is now returned as a separated top_match object, which consists of:

  • face_id or event_id, a top matching candidate. Replaces top_similar_face_id;

  • label, a matching label. Replaces top_similar_face_list;

  • similarity, a top matching similarity. Replaces top_similar_face_similarity.

  • The following top_match object related targets and filters were changed:

  • the top_similar_face_id, top_similar_face_list, top_similar_face_similarity targets were replaced with the top_match target;

  • the top_similar_face_id and top_similar_face_similarity filters were replaced with top_similar_object_id and top_similar_object_similarity filters respectively;

  • Matching API was updated. Now user can specify raw descriptors as references and set different filters for matching by events or faces. See "matching" resource.

  • Matching service was changed to Python Matcher service.

  • The attribute entity is temporary now. Now each attribute has an expiration time and will be deleted after this time. The attribute's time to live (ttl) is 300 seconds by default and can be changed up to 86400 seconds (or 1 day). See configuration to change bounds.

The attribute and face entities are not linked anymore. The face entity has its own descriptors and basic attributes. Now users can create a face with a copy of existing temporary attribute or pass descriptors and basic attributes within face creation request. A face attribute is mutable.

  • API "/detector" resource was updated. See "detector" resource.

  • Samples are now available with the previous version of the API service. See "samples" resource.

  • Liveness prediction result schema was updated. See "liveness" resource.

  • The handler_id, face_id, event_id and other identificators can be of any UUID standard now (previously were UUID4 only).

  • The "/matcher/raw" resource was added. See "raw matching" resource.

  • The external_id filter for faces and faces count request was replaced with external_ids filter. See "faces count" and "faces" resources.

  • Face filters for linker, cross-matching and clustering tasks were updated. See "clustering task", "linker task", "cross-match task" resources.

  • A new "mask" field was added to an event. The field corresponds to a predominant mask which was estimated on event face detections. See "get event", "get events", "get event stats" resources.

  • A "mask" event field is now supported as a matching filter and a target for returning events. See "matching" resource.

  • The "estimate_mask" field was added to the "detector" resource, the detect_policy and filters for matching policies (see "detect" resource)

  • Medical mask filter for linker and clustering tasks is now supported. (See "clustering task" and "linker task" resources).

  • Human body detection and human body descriptor extraction options were added to handler image processing policies, see "createHandler" resource. The warped_image query parameter was replaced by image_type parameter, which may take the following values: 0 — raw image, 1 — face warped image, 2 — body warped image. The "receiveEvents" response format was updated:

  • face attributes were put into the "face_attributes" field;

  • body attributes were put into the "body_attributes" field;

  • face and body detection results were put into the "detections" field.

  • Default behavior for images processing specified by sample IDs was changed (see POST "/detector", "/sdk", "/handler//events" with application/json content type ). Now the type of samples is determined by image_type or warped_image parameter. The detector stage of image processing pipeline is now triggered for non-warped images and is skipped for warps.

  • A new body_bounding_boxes parameter was added to "/emit events" request "see".

  • The application/x-sdk-descriptor, application/x-vl-xpk (and base64 ones) raw descriptor content types in POST "/handler//events" request are now supported.

  • Accounting support for samples was added.

Fixed bugs#

  • Limit query parameter validation range on POST "/matcher" >: [0, 100] -> [1, 100] was fixed. Validation schema of input JSON on POST "/matcher" was fixed: additional properties for reference field are now forbidden.

  • Invalid Content-Type header in response to HEAD method for resources was fixed: "/faces/", "/lists/", "/handlers/", "/events/". Now "application/json" is returned.

Faces (v.2.4.0 - v.3.0.1)#

Improvements#

  • The attribute_id, face_id, list_id, and other identifiers are of any UUID now (previously were UUID4 only).

  • Datetime fields in the database are stored in UTC format now. The service response format depends on the storage_time setting as follows:

  • LOCAL is the time offset from UTC according to the time zone (In ISO 8601, the associated time would be written as 2020-01-01T23:28:34+01:00);

  • UTC is Coordinated Universal Time without timezone offset (In ISO 8601, the associated time would be written as 2020-01-01T08:15:00+00:00).

  • The face_id__gte and face_id__lt filters for faces count request were added. See "get faces count" resource.

  • For faces and faces count request the external_id filter was replaced with the external_ids filter. See "faces count" and "faces" resources.

  • The "Begin-Request-Time" and "End-Request-Time" headers were removed from all responses.

  • The alembic migration version is used for a database state check now. If an expected migration version does not match the actual migration version, the service will not start.

  • Service version was updated. Current API version is 3.

  • The attribute entity is temporary now. Now each attribute has an expiration time and will be deleted after this time. The attribute's time to live (ttl) is 300 seconds by default and can be changed up to 86400 seconds (or 1 day). See configuration to change bounds. The attributes are immutable and are stored in the Redis database.

The attribute and face entities are not linked anymore. The face entity has its own descriptors and basic attributes. Now users can create a face with a copy of existing temporary attribute or pass descriptors and basic attributes within face creation request. A face attribute is mutable.. - The /match resource was removed.

  • REST API documentation is now available at openapi, see open api specification.

  • Database structure was updated.

  • A force parameter to PATCH /attributes/ request was added for old samples force deletion.

  • The default descriptor version was changed to 56

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE paramaters were added. See the description in the configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

Fixed bugs#

  • Downgrade migration of revision c5af482fba44 with face_attribute_id_fkey create index was fixed.

  • The account_id parameter in PATCH "/attributes/" request was fixed

  • The "/attributes/descriptors/count" and "/attributes/descriptors" requests body validation was fixed. Now all missing descriptors are returned if the request body is empty

Image Store (v.2.2.0 - v.2.2.1)#

Improvements#

  • The image_id, object_id identifiers are of any UUID now (previously were UUID4 only).

  • Dependencies were updated.

  • Thumbnails became lazy. Thumbnails are generated in any resolution during the corresponding GET request.

  • Accounting via account_id query parameter was added.

  • The behavior of image and object DELETE methods was changed. In case the object doesn't exist, 404 is now returned.

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

Tasks (v.2.0.0 - v.3.0.0)#

Improvements#

  • Service version was updated. Current API version is 2.

  • If events filters are specified as content filters, the linker task uses descriptor from the Events service now.

  • Temporary attributes are now supported.

  • The "attributes" GC task target is out of date. Use "events" target to remove events by time filter and "descriptors" target to remove descriptors by version. See "create GC task".

  • Event matching labels are now supported. From now on, instead of top_similar_face_list label, the top_matching_candidates_label is used.

  • The following filter names were changed:

  • from "top_similar_face_id" to "top_similar_object_id";

  • from "top_similar_face_similarity__gte" to "top_similar_object_similarity__gte";

  • from "top_similar_face_similarity__lt" to "top_similar_object_similarity__lt". Now users can search top similar face or event id (object id) in task filters.

  • The extract_result column was replaced with face_detections in the reporter task columns.

  • The handler_id, face_id, event_id, and other identifiers can be of any UUID now (previously were UUID4 only).

  • Datetime fields are stored in UTC format in the database now. The service response format depends on the storage_time setting as follows:

  • LOCAL is the time offset from UTC according to the time zone (In ISO 8601, the associated time would be written as 2020-01-01T23:28:34+01:00);

  • UTC is Coordinated Universal Time without timezone offset (In ISO 8601, the associated time would be written as 2020-01-01T08:15:00+00:00).

  • Face filters for linker, cross-matching and clustering tasks were updated. See "clustering task", "linker task", "cross-match task".

  • Medical mask filter for linker, cross-matching and clustering tasks is now supported.

  • The "body_detections" field is now supported as a column in the reporter task.

  • The alembic migration version is used for a database state check now. If an expected migration version does not match the actual migration version, the service will not start.

  • A new filter by insert time to garbage collection task for events removing was added. See "createGCTask".

  • The service requires Handlers instead of Extractor for reextraction from Core now-

  • Service start from deploy/systemd-luna-tasks@.service and deploy/systemd-luna-tasks-worker@.service was changed. By default, settings are taken from the Configurator service now.

  • Logging settings were updated. Added LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE. See the decription in the configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

  • When the subtask could not save the result to Image Store, the error is logged now.

  • Now service requires Python Mathcer service instead of Matcher service.

  • The --ignore-integrity option for the "lis_bucket_create.py" script was added. The script exits with status code 0, if the bucket already exists.

  • Ability not to store task results for GC tasks was added. See "store_results" field.

Fixed bugs#

  • Oracle columns update was fixed.

Events (v.1.1.0 - v.1.1.3)#

Improvements#

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the service configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

  • A new geo_position field was added to the event location field. Geo position is specified by the geographic coordinates of the place where the event occurred: longitude, latitude (in degrees). See "get events", "match events", "get event stats" resources.

  • Functions for getting event descriptor by event_id were improved. Error messages of GET "/events//descriptor" are now supported. More details: "get event descriptor".

  • Service version was updated. Current API version is 2.

  • Event top_similar_face_list field was replaced with top_match.label and list_id was replaced with label for result matching.

  • The attribute_id columns were removed from event and match_result tables.

  • Use postgres BIGINT column type for "id" and "numeric_id" columns. Migration is required.

  • The "/events/" resource with HEAD and GET methods was added.

  • An event_match_result table was added. The match_result table was renamed to face_match_result. Top match result is now returned as a separated top_match object, which consists of:

  • face_id or event_id, a top matching candidate (instead of top_similar_face_id);

  • label, a matching label (instead of top_similar_face_list);

  • similarity, a top matching similarity (instead of top_similar_face_similarity).

The top_similar_face_id, top_similar_face_list, top_similar_face_similarity targets were replaced with the top_match target. The top_similar_face_id and top_similar_face_similarity statistic filters replaced with the top_similar_object_id and top_similar_object_similarity respectively.

  • The detections was replaced with face_detections for incoming and extract_result was replaced with detections for outcoming event(s).

  • The handler_id, face_id, event_id, and other identifiers are of any UUID now (previously were UUID4 only).

  • The attributes field for incoming events became optional. From now on, events can be created without both descriptor and basic attributes. See "create events".

  • Datetime fields in the database are stored in UTC format now. The service response format depends on the storage_time setting as follows:

  • LOCAL is the time offset from UTC according to the time zone (In ISO 8601, the associated time would be written as 2020-01-01T23:28:34+01:00);

  • UTC is Coordinated Universal Time without timezone offset (In ISO 8601, the associated time would be written as 2020-01-01T08:15:00+00:00).

  • A new mask field was added to an event. The field corresponds to a predominant mask, which was estimated on event face detections. See "get events", "match events", "get event stats" resources.

  • All database migrations since version v.1.0.9 were replaced with a single migration.

  • The attributes was replaced with the face_attributes for incoming event(s).

  • The body_attributes and body_detections were added for incoming event(s).

  • For the purpose of descriptors type distinguishing, the descriptor_type query parameter was added to matching method.

  • For the purpose of descriptors type distinguishing, the descriptor_type query parameter was added to getting event's descriptor method.

  • Events can now be saved and filtered with utf-8 chars in tags.

  • The alembic migration version is used for a database state check now. If an expected migration version does not match with a real migration version, the service will not start.

  • Service start from deploy/systemd-luna-events@.service was changed. By default, settings are taken from the Configurator service now.

  • Vertica database migration from 1.0.6 to actual version was added. For more information, see "vertica migration".

  • The "descriptor" and "descriptor_version" fields were added to the event.

  • A set of nullable columns was updated.

  • Due to reducing the size of the database, ids column types changed from varchar to UUID in Postgres

  • The "Event.insert_time" column for a real-time new events monitoring was added.

  • A new "location" field was added to the event. The field specifies the place where the event occurred.

  • To improve the request execution speed the count field was removed from the response of GET "/events".

  • A DELETE method was added to "/events". The method deletes 10000 oldest events from database.

  • 202 Accepted status code was restored on POST "/events".

  • To check postgres database connection asyncpg is now used.

  • An event_id parameter was added to the response from DELETE of "/events"

  • A /1/events/match route for in-database matching was added.

  • The insert time query parameters were added to DELETE of "/events".

  • SAVE_EVENTS_TIMEOUT was added to the config for database events saving timeouts.

  • Events copy was added to the monitoring.

Fixed bugs#

  • When float is equivalent to an integer value, the events are not saved now (these values will be set to an integer. e.g.: 1.0 equals -.

  • Slow event deletion was fixed.

  • Fields required for creating new events in "OpenAPI" documentation were fixed.

  • Empty bytes in query parameters were fixed

  • Invalid data type in validation filter column value was fixed-

  • In case of connection errors, a connection to vertica DB is now restored.

  • The config file is no more required if start service with --luna-config argument

  • The external_id query parameter of GET "/events" request can be any string now.

Configurator (v.1.0.0 - v.1.0.1)#

Improvements#

  • The alembic migration version is used for a database state check now. If an expected migration version does not match the actual migration version, the service will not start.

  • The default profile for db_create scripts was changed to none. Limitations in the database will not be created by default.

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

  • The create_time and last_update_time settings are returned in human-readable format now. See "get settings" resource.

  • STORAGE_TIME parameter was added. Description see in configuration file.

Fixed bugs#

  • Tags validation schema for PUT "/settings/" was fixed)

Sender (v.0.1.0 - v.1.0.0)#

Improvements#

  • Service version was updated. Current API version is 2.

  • The top_similar_object_similarity__gte and top_similar_object_similarity__lt were replcaed with object_similarity__gte and object_similarity__lt. The top_similar_face_lists was replaced with matching_candidate_labels.

  • Matches by events also can be returned in WS messages now (only matches by faces were returned previously).

  • The handler_id, face_id, event_id, and other identifiers can be of any UUID now (previously were UUID4 only).

  • Body detections support was added.

  • Information about query parameters restrictions was added.

  • Ability to subscribe for events with utf-8 symbols in tags, user_data, matching_candidates_labels location fields was added.

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the configuration file.

  • Event location filtering is now supported.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

Admin (v.3.0.0 - v.4.0.0)#

Improvements#

  • Service version was updated. Current API version is 4.

  • Temporary attributes are now supported.

  • To get temporary attribute info, use "search" with temporary attribute id;

  • There is no ability to get temporary attribute count by accounts. For account stats attribute_count field was replaced with face_attribute_count;

  • The "attributes" GC task target is out of date. Use "events" target to remove events by time filter and "descriptors" target to remove descriptors by version. See "create GC task".

  • The handler_id, face_id, event_id, and other identifiers can be of any UUID now (previously were UUID4 only).

  • Time related fields of the response to "/sys_info" are now returned in UTC or local timezones. This depends on the storage_time setting.

  • The alembic migration version is used for a database state check now. If an expected migration version does not match the actual migration version, the service will not start.

  • Logging settings were updated. LOG_TO_STDOUT, LOG_TO_FILE, and MULTILINE_STACK_TRACE parameters were added. See the description in the configuration file.

  • OpenAPI documentation can now be obtained with GET "/docs/spec" ([[yaml[[ or [[html[[). See "openapi docs" resource.

  • Development Manual can now be obtained with GET "/docs/dev". See "sphinx docs" resource.

  • Python Matcher information was added to sys-info response.

Handlers (v.0.0.3)#

Improvements#

  • The handler_id, face_id, event_id, and other identifiers can be of any UUID now (previously were UUID4 only).

  • Mask estimations were updated, see "sdk".

  • Event could be created without attributes now.

  • Limitation for input policies array length (30) was added.

  • Datetime fields in the database are stored in UTC format now. The service response format depends on the storage_time setting as follows:

  • LOCAL is the time offset from UTC according to the time zone (In ISO 8601, the associated time would be written as 2020-01-01T23:28:34+01:00);

  • UTC is Coordinated Universal Time without timezone offset (In ISO 8601, the associated time would be written as 2020-01-01T08:15:00+00:00).

  • Multuple policy filters with identical matching labels are now allowed. Now users can create A and B labels and use A in several policies, not only in a single policy. E.g: conditional_tags_policy conditions may contain different filters with similar labels.

  • SDK (4.2.0) and settings were updated. Breaking changes, update settings in Configurator.

  • The "estimate_mask" was added to the "detector resource", detect policy and filters for matching policies (see "detect")

  • Human body detection and human body descriptor extraction options were added to handler image processing policies, see "createHandler" resource. The warped_image query parameter was replaced by image_type parameter, which may take the following values: 0 — raw image, 1 — face warped image, 2 — body warped image.

The "receiveEvents" response format was updated:

  • face attributes were put into the face_attributes field;

  • body attributes were put into the body_attributes field;

  • face & body detection results were put into the detections field.

  • Default behavior of images processing specified by sample IDs was changed. (see method POST on /detector, /sdk, /handler//events with application/json content type). Now the type of samples is determined by image_type or warped_image parameter. The detector stage of image processing pipeline is now triggered for non-warped images and is skipped for warps.

  • A new body_bounding_boxes parameter was added to "/emit events" request, see "generate events" resource.

  • SDK (4.3.0) was updated.

  • Information about query parameters restrictions was added.

  • The ability to generate events with utf-8 strings in location fields was added, tags, source.

  • The [USE_ORIENTATION_MODE[ setting of [FACE_DETECTOR_V3[ is now supported.

  • The alembic migration version is used for a database state check now. If an expected migration version does not match the actual migration version, the service will not start.

  • A migration that renames the migration table from 'luna-api_migrations' to 'luna-handlers_migrations' was added.

  • The raw descriptor content types in POST "/handler//events" request are now supported: application/x-sdk-descriptor, application/x-vl-xpk (and base64 ones).

Fixed bugs#

  • "OpenAPI" documentation for "extract_exif" query parameter on "/detector" resource was fixed.

  • The account_id for GET on /handlers and /handlers/ is now returned.

  • EXIF meta-information extraction for non-jpg files was fixed. Now extract_exif is available for JPEG, BMP, PNG images (see the parameter usage in detect_policy at "create handler").

Python Matcher and Python Matcher Proxy (v.0.0.2 - v.0.0.3)#

Improvements#

  • The performance of cross matching was improved.

  • Human body descriptors raw matching is now supported.

  • Face descriptors matching was moved from "/matcher" to "/matcher/faces", see "/matcher/faces" for details.

  • Face descriptors cross-matching was moved from "/crossmatcher" to "/crossmatcher/faces", see "/crossmatcher/faces" for details.

  • Human body descriptors matching and cross-matching are now supported in the Events database. See docs for "/matcher/bodies" and "/crossmatcher/bodies".

  • The face_id, event_id and other identifiers can be of any UUID now (previously were UUID4 only).

  • A "mask" event field is now supported as a matching filter and a target for returning events.

Fixed bugs#

  • Incoming JSON object validation errors handling was fixed.

Backport3 (v.0.0.2 - v.0.0.3)#

Improvements#

  • Portraits are saved in the Image Store with account_id now.

Fixed bugs#

  • JSON validation response in liveness tests was fixed.

Backport4 (v.0.0.2)#

Fixed bugs#

  • JSON validation response in liveness tests was fixed.