LUNA PLATFORM is a biometric data management system for facial verification and identification. The platform offers a great flexibility to create scenarios of varying complexity for integrated facial recognition. LUNA SDK, a facial recognition engine developed by VisionLabs, is the core technology of the LUNA PLATFORM.


Broker module is a WEB-server implementing the HTTP protocol and providing an interface with external systems. The data communication is implemented using RESTful API. The Broker gets API requests from external systems and performs the initial validation of the query data. When requested to handle a list of template identifiers, the Broker directly refers to the Aerospike database. If a handler (Extractor or Matcher) is called, the Broker prepares the data required for the specific handler and queues it up in the Queue Manager. An idle handler receives query from the queue. When the data is processed, the handler returns a response to the Broker that in turn responds to the query via API. The Broker executes API requests from external systems in a synchronous mode, and from data handlers in an asynchronous mode.


Extractor handler receives tasks for extracting facial descriptors (biometric templates). The extraction of a face descriptor from a source image using LUNA SDK recognition engine is a one-way transformation process. Face descriptors cannot be converted back to the original face images in any way. Besides the face descriptor, no other personally identifiable data (name, original photo, etc.) is stored in the database. If the data extraction is successful, Extractor stores complete face descriptors directly in the Aerospike database.


Matcher handler receives requests for the matching of biometric templates. The matching is performed using LUNA SDK facial recognition engine. Upon receiving a task, Matcher requests all necessary data from the Aerospike database, processes data and then returns results in the form of a success notification and the matching data.

Queue Manager

Queue Manager (supplementary) enables communication between the Broker module on one side and the Extractor and Matcher data handlers on the other side. This component provides a configurable network queue of messages with guaranteed delivery. The queue is implemented based on the AMQP protocol using RabbitMQ as a queue manager.

Aerospike NoSQL DBMS

Aerospike NoSQL DBMS (supplementary) is used to create a reliable, fail-safe storage for biometric templates and their identifier lists and enables high speed for reading and writing. Aerospike follows ACID paradigm and supports database replication and clustering. Data replication is performed at Aerospike level by clustering two or more Database Management Systems with data replication. Database data replication backs up the data for the cases of hardware failures of the production server.


LUNA PLATFORM offers RESTful Web API to its clients for command transfer and data communication. The primary application-level protocol is HTTP 1.1, and the data is communicated within session(s) initiated by a HTTP-request. Examples of possible third-party systems include ACS, ABS, ERP, CRM, acting as gateways and forwarding requests to the Broker.


LUNA modules work independently from each other. It is therefore possible to distribute and run many modules on multiple servers in parallel. In combination with other technologies such as containerization and virtualization, it is possible to build powerful, distributed and scalable solutions. In particular, decoupling different tasks such as descriptor matching and descriptor extraction into separate modules, greatly contributes to the scalability and the balancing of resources of the whole system. The use of standard industry protocols, such as HTTP for external communication and AMQP for the internal message queueing, reduces the integration and maintenance costs. LUNA can be easily integrated into existing IT infrastructure, e.g. using existing RabbitMQ cluster installation or balancing HTTP requests using NGINX and alternatives. To simplify the customization and usage of LUNA PLATFORM, all configuration settings for the Extractor and Matcher modules are divided into two categories:

  • Static settings, such as directory paths to pre-trained models, are defined per module and are never changed at runtime. Static settings can be changed at the re-initialization.

  • Dynamic settings include parameters such as thresholds on the acceptable accuracy of face detection and face recognition. Such settings can be changed during the operation of the system according to user needs.

Such separation simplifies the management in distributed set-ups since all newly added modules receive up-to-date settings upon the startup and all the updates are distributed within the system automatically.


The proprietary runtime implementation of neural networks by VisionLabs enables face processing to be executed at a fraction of a second. Optimized sub-linear search further enables instantaneous execution of person identification in databases with 10s and 100s of millions of faces. The expected performance for a typical server configuration (based on Xeon E5 CPU) is:

  • 5M matches/s per core

  • 120 ms per descriptor extraction


The accuracy of facial recognition can be measured in terms of True Positive Rates (TPR) and False Positive Rates (FPR). In particular, accurate face identification in large databases requires high TPR values at extremely low values of FPR. LUNA’s face descriptors have been trained on millions of faces from different domains and ensure high accuracy in a broad range of working conditions such as in banks, video surveillance and social networks. An example evaluation of LUNA’s accuracy on a client database is provided below.

  • TPR at FPR 10-3 = 99,3%

  • TPR at FPR 10-6 = 95,2%

  • TPR at FPR 10-5 = 98,0%

  • TPR at FPR 10-7 = 89,4%


Face descriptor extraction from a source image of a face is an irreversible transformation. Face descriptors cannot be converted back to face images in any way. LUNA PLATFORM database does not store any personal information, such as person name, source of original images, etc., which could allow for person identification. Therefore, the biometric data within face descriptors is strictly anonymous. During matching, LUNA PLATFORM compares newly generated face descriptor IDs with the IDs of face descriptors already stored in the Customer’s database. The Customer is responsible for managing the face descriptor database and complying with any applicable Data Privacy regulations.

  • Complete Docker containers or binary packages

  • Full set of documentation including API description, programmer’s and DevOps manuals

  • State-of-the-art, market-leading facial recognition engine with high quality face detection, verification and identification

  • Out-of-the-box integration of LUNA SDK

  • Clear and easy-to-use RESTful API for prompt implementation

  • Highly protected personally identifiable information

  • Flexible and clear licensing policy for any business size

Get free demo

Complete Docker containers or binary packages

Contact us

Thank you for contacting VisionLabs.
We will get back to you shortly.

Back to main page
Get demo

Thank you for contacting VisionLabs.
We will get back to you shortly.

Back to main page