LUNA PLATFORM is a biometric data management system that offers great flexibility to create scenarios of varying complexity for integrated face recognition
LUNA PLATFORM is a Web Service implementation of LUNA SDK designed to perform the following tasks:
- Face detection
- Face descriptor extraction
- Face descriptor storage and fast searching
- Face descriptor logical grouping
- Face descriptor 1:1, 1:N, and N:N matching
- Face attributes estimation (e.g. gender, age and emotions)
- Face matching events logging and notification generation
Basic graphical user interface is provided for the above features with system user account management and access restriction tools.
LUNA PLATFORM consists of several components: API, CORE, Events and Statistics, the UI, and Administration Services
The system is designed to receive still images or individual video frames as an input where it detects all human faces that meet a user-defined set of parameters such as face size, face angle and quality index.
Each detected face may be converted into a special set of unique features called “face descriptors”. Face descriptors require much less storage memory in comparison to a source face image. This conversion process is called descriptor extraction, and, all extracted face descriptors are automatically preserved in the system database.
It is impossible to restore original face images form the face descriptors, which is important for personal data protection regulation compliance
Once a face descriptor is stored in the database, LUNA PLATFORM does not need the source image any longer. However, it can be configured to save portrait images for presentation and system upgrade purposes. LUNA PLATFORM provides a customizable storage facility with multiple back up options to choose from.
Face descriptors may be compared to determine whether they belong to the same person or not. This comparison process is called face descriptor matching.
LUNA PLATFORM implements face verification (1:1 matching), face identification (1:N matching) and face clustering (N:N matching).
LUNA API service is the main gateway to the system. It provides a RESTful interface allowing the clients to use the aforementioned detection, extraction, and matching procedures. The API is performant and flexible while allowing the use of third-party systems and smart device integration.
UI service implements the graphical user interface. It builds on top of the same public API.
Events & Statistics service logs all requests for face descriptor extraction and matching. Each such request is referred to as an event. The service allows gathering various event statistics including duration, frequency, error to success ratio, and others. The service is also capable of event notification in real time via WebSockets. This enables easy integration with chat bots, web sites, and other applications.
Administration service solves common maintenance tasks including user account management (creation, suspension, and removal), system monitoring, and upgrades.
The LUNA API is designed to provide restricted user access to system resources, such as face descriptors and their source face images (if you choose to store them), through a RESTful application interface.
Storage subsystem may be configured to preserve portrait images and other binary data. Various storage drivers are supported, including direct HDD storage and Amazon S3-compatible object storage.
The Storage and Accounts subsystem communicates with the CORE service to utilize its processing capabilities and access face descriptor storage.
LUNA API implements multiple authorization methods:
- Authorization using a login and password. This type is for users and administrators authorization to their accounts;
- Authorization using an API token. The tokens are used to authorize third-party systems (or devices) with limited user account rights. For example, when video capture from IP cameras is required, tokens can authorize their usage.
LUNA API implements several approaches to logical face descriptor grouping:
- Group face descriptors belonging to the same real-world person together by using the “persons” feature;
- Group “persons” or individual descriptors using the “lists” feature.
You can create a “VIP Customers” list, where each “person” has one or more face descriptors.
It is possible to attach user-defined information to “lists” and “persons” even if the information is not used by the platform. The information may be useful when integrating the LUNA PLATFORM with third-party systems.
The LUNA CORE service is a scalable system that solves all computation-intensive tasks like face detection, image normalization, face descriptor extraction, and descriptor matching.
Computational tasks are performed by workers. Workers are dedicated processes that take tasks and produce results. Workers do not communicate with each other and are isolated and stateless. Workers obtain tasks via network and may be distributed across several servers. There may be unlimited number of workers, and new workers may be added dynamically, making scaling a possibility.
There are two workers in LUNA CORE – the Extractor and the Matcher.
The LUNA CORE service provides a communication channel for the API service, which dispatches API requests through a message service to deliver tasks to appropriate workers.
A separate message queue service called MQ Broker is responsible for task dispatching to the workers and returning the results. It is possible to use industry-proven messaging systems based on AMQP protocol, such as RabbitMQ.
The LUNA CORE service analyzes incoming tasks before dispatching them to workers and is also capable of optimizing some of these tasks. For example, it may split large matching tasks into several smaller tasks processed concurrently to utilize multiple matching workers at once.
Events & Statistics Service
Events & Statistics service can keep track of all the requests that LUNA PLATFORM processes.
It is possible to collect multiple metrics per request:
- Time of the request execution (number of requests per second)
- Request status (succeeded, failed)
- Request status before failure
- Other metrics.
Events & Statistics service gathers statistics in a special in-memory DBMS (Influx DB) optimized for time series storage. This allows quick retrieval of metrics for one or multiple counters over a given period. One may visualize and browse the collected data using third party software like Grafana.
Aside from accumulating statistics, it is possible to collect events. Events happen when face descriptors are extracted or matched. It contains the same data that the LUNA API returns in response to user requests that have triggered the event.
Events are delivered in real-time by means of web sockets, making it easy to implement a custom listener whether it runs as a native application or as a script in a web browser. It is possible to subscribe to multiple events at once.
You have a list of VIP guests. You can receive notifications to a smartphone about the guests’ arrival using an ad hoc application that is subscribed to the Events & Statistics service.
UI service is a web application that implements a graphical interface for LUNA PLATFORM users. This interface supports all basic actions normally available through LUNA API, such as:
- Registration and user log in
- Image uploading and portrait gallery browsing
- Person and list management
- Person identification, verification, and generic descriptor matching tasks
- Token management.
Administration Service is a control panel-style web application. It provides a graphical user interface for solving common administrative tasks, including:
- Viewing user accounts and their data
- Performing face descriptor CNN model update
- Removing face descriptors not attached to persons or lists
- Viewing system metrics with Grafana (a 3rd-party tool)