# A Multicomponent Face Verification and Identification System
## 2 Materials and Methods  
### System's Architecture  
In Figure 1, the architecture of the proposed face verification and identification system is presented. The _Backend service_ block incorporates several architectural sub-blocks such as the _Rest API_; the _Database_; and other sub-blocks associated with the face verification and identification process such as the _Face detection_, _Face standardization_, _Feature extraction_, _Verification_, and _Identity search_ sub-blocks. The _Face standardization_ step refers to the horizontal alignment of the face image (making sure that the eyes are horizontal) and picture size normalization. This step enhances the consistency of the face verification functionality by reducing the system's dependence on the picture provided by the user. For the experiments of this research, dummy data were created to fill the _Database_ sub-block. The _Backend service_ block is connected to several system components such as the _Mobile App_, _Web-based UI_, _Mixed Reality glasses_, and _3 rd party systems_ blocks. The _Backend service_, _Mobile App_, _Web-based UI_, _Mixed Reality glasses_, and _3 rd party systems_ blocks adopt authentication and encryption mechanisms (VPN and TLS) to ensure a high security aspect. The components _Mobile App_, _Web-based UI_, and _Mixed Reality glasses_ utilize the same _Rest API_ interface. The _Mobile App_ and the _Mixed Reality glasses_ blocks both send and receive information through the _Rest API_, while the _Web-based UI_ only receives data. The _Metadata & Statistics_ sub-block incorporates the related metadata and calculated statistics that are visualized in the _Web-based UI_ block. The _Mobile App_ block incorporates the _UI_, _App logic_, and _face detection_ sub-blocks. In the case that more than one face image is detected, only one is selected from the _Backend service_. The face image that is selected is the one with the maximum area, while the rest are rejected. The results from the _Backend service_ block are translated and shared via the _Adapter_ block to the _3 rd party systems_ block. The _Adapter_ module connected to the _3 rd party systems_ block facilitates integration, meaning that it gathers face recognition/verification results and sends them to other systems. The _3 rd party systems_ block can be considered to be middleware (e.g., Apache Kafka [61]) for information sharing with other external systems. The bidirectional arrows, when present, represent the bidirectional exchange of information.  
In this context, several workflows are executed involving several distributed actors/operators for various applications and scenarios:  
* A face verification and identification process is achieved via the _Mobile App_ block (see Section 3.2).
* A face identification process is achieved via the _Mixed Reality glasses_ block (see Section 3.3).
* The _Web-based UI_ block visualizes the results from the _Mobile App_ block (see Section 3.4).
* The results from the _Mobile App_ block are shared to the _3 rd party systems_ block (see Section 3.5).  
Figure 1: Architecture of the proposed face verification and identification system.  
The specifications of the utilized machine for the _Backend service_ are (i) CPU, 8 cores of Intel(R) Xeon(R) CPU E7-8890 v3 @ 2.50 GHz; (ii) RAM, 32 GB; and (iii) operating system, Ubuntu 22.04.