> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-en/sdks/backend-sdk/selphid/technical_documentation/technical_specifications.md).

# Technical specifications

## 1. Introduction

This document describes the technical requirements for incorporating **FacePhi SelphID SDK** into your systems.

Below are the provided components and the steps required to install the SDK on the operating systems **Windows** and **Linux**.

## 2. Technical specifications

The following sections show the recommended hardware and software requirements for installing the SDK on the server side.

### 2.1 Hardware requirements

The following tables show the recommended hardware requirements for installing SelphID SDK on different operating systems:

#### 2.1.1. CPU version requirements

Recommended hardware requirements for SelphID SDK, equivalent to **AWS c5.4xlarge**:

| CPU                                 | RAM   | Disk      |
| ----------------------------------- | ----- | --------- |
| 16 vCPU Intel Xeon Platinum 3.6 GHz | 32 GB | 20 GB SSD |

{% hint style="warning" %}
**IMPORTANT:** SelphID-SDK does not store data or test results on disk. The SDK installation itself takes approximately 2 GB. Allow for more storage for additional business logic operations.
{% endhint %}

#### 2.1.2. GPU version requirements

Recommended hardware requirements for SelphID SDK with GPU acceleration, equivalent to **AWS g4dn.4xlarge**:

| CPU                        | GPU                        | RAM   | Disk      |
| -------------------------- | -------------------------- | ----- | --------- |
| 16 vCPU Intel Xeon 2.5 GHz | 1x NVIDIA T4 (16 GB GDDR6) | 64 GB | 20 GB SSD |

{% hint style="warning" %}
**IMPORTANT:** As with the CPU version, SelphID-SDK does not store data or test results on disk. The SDK-GPU installation itself takes approximately 3 GB, plus about another 2 GB required by the Nvidia and CUDA drivers. Allow for more storage for additional business logic operations.
{% endhint %}

{% hint style="warning" %}
**IMPORTANT:** GPU acceleration only affects the performance of operations of **Passive liveness check**. In facial extraction operations, Matching 1:1 and Matching 1:n, the GPU is not used.
{% endhint %}

{% hint style="warning" %}
**IMPORTANT:** According to the tests performed, the GPU version can achieve 60% more performance in passive liveness checks compared with the 8-core CPU version (See [Performance statistics](#24-estadísticas-de-rendimiento)). These are "pure" computation times of the SDK-C++ measured on the server. Additional logic such as orchestrators, web servers, or load balancers may obscure these metrics by reducing the perceived performance gain.
{% endhint %}

{% hint style="warning" %}
**IMPORTANT:** To ensure the GPU version of SelphID-SDK works correctly, the Nvidia/CUDA drivers must be properly installed and configured on the server. Follow the official guide for this purpose: <https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/latest/index.html>.
{% endhint %}

{% hint style="warning" %}
**IMPORTANT:** The GPU version is an optimization over the CPU version, but **does not offer additional functionality**. At the operational level, the CPU/GPU versions are fully equivalent.
{% endhint %}

### 2.2 Software requirements

The following tables show the minimum software requirements for installing SelphID SDK on different operating systems:

#### 2.2.1 SelphID SDK software requirements

| Minimum software requirements     |
| --------------------------------- |
| Windows 11 / Windows Server 2025  |
| Visual C++ 2026 x64               |
| Java 1.8 (Oracle JDK recommended) |
| .Net Framework 4.0                |

#### 2.2.2 SelphID SDK software requirements (Linux Ubuntu)

| Minimum software requirements            |
| ---------------------------------------- |
| Ubuntu 18.04 or compatible               |
| Glib 2.27                                |
| GCC 7.5.0 (only for the C++ SDK version) |
| Java 1.8 (Oracle JDK recommended)        |

### 2.3 Reliability statistics of the Facial Recognition algorithm

Below are several tests to evaluate the reliability of **SelphID SDK 6.21.0**. The objective is to understand the operation and behavior of the SDK by obtaining objective measurements of the reliability and accuracy of the Facial Recognition software. To do this, experiments have been carried out with a widely used public database: *NIST Face Recognition Grand Challenge* ( **FRGC** ) \[1].

The experiments performed show results in authentication or verification processes:

* ***Verification (1:1):*** **'Are you who you say you are?':** Determine whether, when comparing two biometric samples (facial templates), a score above a threshold is generated, which implies that the system has positively verified that you are who you say you are. These systems are known as 1:1, since the face pattern to be evaluated is compared only with your facial template, obtaining a 'yes' or 'no' answer.
* ***Verification (1:N):*** **'Who are you?':** In this operating mode, the biometric sample is compared with a list of patterns stored in a database. It is also known as **1:N** because the identity must be correctly located among a number **N** of patterns with different identities against which it will be compared.

Two sets of images are used to evaluate these operating modes: a test set **(Query set)** that simulates unknown users trying to access the system, and a registration set with previously registered legitimate users **(Target set)** with which the comparison is made.

The results obtained in these experiments follow the standard measures defined in the international standard **ISO 19795-1** \[2].

#### 2.3.1 Verification 1:1

#### 2.3.1.1 Uncontrolled conditions (FRGC Exp 4)

This experiment measures the robustness of the technology against images captured under uncontrolled conditions. The image sets used are extracted from the database **FRGC v2.0** \[3]. The evaluation consists of a *'target set'* of images under controlled conditions and a *'query set'* of images captured under uncontrolled conditions. They are the same sets used in **Experiment 4** predefined in the aforementioned database \[4]:

* The *'Target Set'* of FRGC-Experiment 4 consists of 16,028 images belonging to 466 users.
* The *'Query Set'* of FRGC corresponds to a test set with a total of 8,014 images.
* The total number of comparisons performed exceeds 128 million.

The following table shows the most important aspects of the experiment, as well as the True Match Rate (TMR) fixing the False Match Rate (FMR) at 0.1%:

| Verification under uncontrolled conditions (128 M comparisons) | TMR with FMR = 0.1% |
| -------------------------------------------------------------- | ------------------- |
| ROC I                                                          | 99.9999%            |
| ROC II                                                         | 99.9999%            |
| ROC III                                                        | 99.9999%            |

**Table 1.** Results of the experiment using images under uncontrolled conditions.

The following graph shows the results obtained in the experiment through ROC curves (Receiver Operating Characteristic). Three ROC curves are shown that evaluate the algorithm's performance using images obtained over time. In addition to the TMR with FMR=0.1%, additional markers were added for each ROC curve to highlight the high-security operating points.

{% hint style="info" %}

* **ROC I:** Target and Query images obtained within the same semester.
* **ROC II:** Target and Query images obtained within the same year.
* **ROC III:** Target and Query images obtained at least one year apart.
  {% endhint %}

![](https://865101184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUo71Qbj6jZQDavjc0U5X%2Fuploads%2Fgit-blob-39ce5de8429a29f2336e1e6f7d400215717220d7%2Fgrafico1_n.png?alt=media)

#### 2.3.2 Identification 1:N

**2.3.2.1 Subject search in a list**

In this experiment the reliability of the SDK for an application of ***Closed Set Identification*** (see note below) will be evaluated. For this purpose, the *Experiment 1* of the FRGC 2.0 database will be used. In this case, a single image will be used to create the biometric template. The size of the sets of **Test** and **Registration** is 16,028 samples each (257 million comparisons).

For each example in the test set, the system will be asked to return the **N** biometric samples from the registration set that show the greatest similarity. Two conditions must be met for the system to correctly identify the user:

1. The correct identity must be positioned in rank **R** (*Rank*) of the Candidate List **L** (Candidate List).
2. The similarity must be greater than the security threshold **T** (Threshold). These thresholds correspond to the **Security Thresholds** provided by **FacePhi**.

To make the test more demanding, Rank has been reduced to the minimum (R=1) and the widest possible list has been used, that is, L=16,028 (searching against the entire database). In short, to be considered a hit, the person must be positioned in the rank of the Candidate List of the entire database, which is more widely known as *Rank 1 Hit Rate 4* (**Rank One** is defined in reference \[4]).

The reliability measures are based on obtaining the *True Positive Identification Rate* (TPIR) for different security levels established by the threshold.

| Identity search for a given list |                 |          |
| -------------------------------- | --------------- | -------- |
| biometric template size          | 1322 bytes      |          |
| TPIR(R=1), Rank1                 | NIST FRGC Exp 1 | 98.7272% |

**Table 2.** Rank 1 of the identification experiment.

{% hint style="info" %}
**Closed set:** The marker corresponds to an FMR of 0.000001 (999,999 correctly denied accesses out of 1 million attack attempts). Even in this case, the TMR is around 99% for ROC I.
{% endhint %}

### 2.4 Performance statistics

The following figure shows the performance statistics obtained on SelphID SDK, in terms of the times obtained in the following modules:

* Passive Liveness
* Extraction of biometric templates.
* Facial matching (1:1) with templates and images.
* Facial matching (1:N) with templates.

{% hint style="warning" %}
**Important:** For these tests, the SDK C++ version running sequentially was used. Therefore, we present metrics for the "pure" performance of the solution. The time consumed by orchestrators, web servers, high-concurrency cloud environments, and latencies is not taken into account.
{% endhint %}

{% hint style="warning" %}
**Important:** The SDK has been configured to use 8 concurrent threads for extraction or liveness operations. `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS=8`, `FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS=8`. See [Environment variables](/docs.facephi-en/sdks/backend-sdk/selphid/installation/installation_instructions.md#33-variables-de-entorno).
{% endhint %}

To carry out the liveness, extraction, 1:1 comparison, and 1:N comparison measurements, a device with the following characteristics was used:

* Intel Xeon Platinum 3.6 GHz
* 16-core processor
* 32 GB of RAM
* Linux Ubuntu 18.04.6 LTS

|             | Biometric extraction `(image 640x480)` | Comparison `(1:1)` with raw templates | Comparison `(1:1)` with images `(640x480)` |
| ----------- | -------------------------------------- | ------------------------------------- | ------------------------------------------ |
| Performance | 65 ms                                  | 129 ms                                | 121 ms                                     |

**Figure 1.** Data obtained in SelphID SDK Linux.

{% hint style="info" %}
On a Windows server, the data obtained may vary by +-10%
{% endhint %}

Performance statistics for the liveness check are shown below:

|                  | CPU 8 cores | GPU    |
| ---------------- | ----------- | ------ |
| Image `640x480`  | 192 ms      | 165 ms |
| Image `1280x720` | 400 ms      | 249 ms |

**Figure 3.** Data obtained with the Linux version of SelphID SDK.

Below are the performance data for gallery creation and 1:N identification.

|                  | Create gallery | Identification |
| ---------------- | -------------- | -------------- |
| templates/second | 65.000         | 6.500.000      |
|                  |                |                |

**Figure 4.** Data obtained in SelphID SDK Linux.

{% hint style="info" %}
On a Windows server, the data obtained may vary by +-10%
{% endhint %}

## 3. Passive liveness check detection

The techniques used by fraudsters to impersonate legitimate users are constantly growing and are known as Attacks. Since these applications are integrated into critical security systems, it is necessary to provide them with security measures of *Presentation Attack Detection* (PAD) and *Manipulation Attack Detection* (MAD), since it is vital to determine whether the biometric patterns presented to the application come from a genuine user ("bona fide") or not. (A genuine user would be a legitimate user of the system who is present in front of the camera at the time of the biometric measurement).

{% hint style="warning" %}
**IMPORTANT:** For the passive liveness functionality of SelphID SDK, it is necessary that the images used have a minimum resolution of 720p (HD resolution), so that the results conform to the metrics shown below.
{% endhint %}

The main objective is to provide facial recognition algorithms with the necessary level of security to **prevent the fraudulent use of a user's facial features obtained from photographs and/or videos during identification, and thus prevent mass fraud**.

Facephi's technology ensures that the biometric pattern obtained from the user's face has been extracted from a bona fide biometric presentation, discarding those obtained from an attacker presenting **paper**, **photographs**, **videos**, **masks** and/or injecting **manipulated images** into the capture system.

Facephi has implemented a secure and easy-to-use system to **be able to access the system in less than a second with total security**, faster and simpler than memorizing a password and a username. The perfect balance between security and ease of access.

| ![Imagen de onboarding](https://865101184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUo71Qbj6jZQDavjc0U5X%2Fuploads%2Fgit-blob-6bf70e72eb3f1aef381d07b34cce0886eb54c16d%2Fonboarding.png?alt=media) | ![Imagen de rechazo](https://865101184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUo71Qbj6jZQDavjc0U5X%2Fuploads%2Fgit-blob-b698519bb505e3c114f9c3fa4b12cfa4044fd1f6%2Frejected.png?alt=media) | Using Facephi's Deep Learning techniques, this new tool determines whether the image comes from a genuine user access or, on the contrary, from a reproduction using printed photos, manipulated images, from a mobile device, tablet or PC. This tool complements the robust facial recognition system provided in Selphi and SelphID. The main advantage of this tool is that it greatly improves the user experience, since the user only has to stand in front of the camera and take a selfie, without the need for additional collaboration. |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

**FaceLiveness** is based on Machine Learning algorithms trained to extract the features contained in a selfie image (for example, artifacts, distortions, texture, depth, light reflectance, resolution inconsistencies, blood pulse, etc.) that allow the classification module to discriminate between a bona fide presentation (also known as genuine) and an attack (for example, paper, photo, selfie/video replay, mask, etc.).

A Passive Attack Detection system does not require any action from the user and is based entirely on Deep Learning techniques. Therefore, it does not introduce additional friction in the verification and authentication process, it is faster than active systems and, at the same time, with the capture of a simple selfie (or a few frames extracted from a short video), it introduces additional complexity into the system that translates into a greater ability to detect a wide range of attacks, whether handcrafted or digitally manipulated.

### 3.1 Presentation attack detection

The passive Presentation Attack Detection (PAD) system of **Facephi** (FaceLiveness) determines whether the access is being performed by a genuine user (bona fide) or whether the access is being performed by an attacker presenting paper, photo, video or mask representing the biometric features of the target they are trying to impersonate.

### 3.2. Manipulation attack detection

The Manipulation Attack Detection (MAD) system of **Facephi** (FaceLiveness) determines whether the access is being performed by a genuine user (bona fide) or whether the access is performed by an attacker injecting a manipulated image that has been modified into the system.

The new Facephi technology is capable of preventing:

* **Face Swap manipulation:** Overlaying one person's face onto another person's photo or video.
* **Synthetic face (deepfake):** Synthetic face generated using deep learning methods, such as generative adversarial networks (GANs) or diffusion models.

### 3.3. Coercion attack detection

Starting from version `6.20.0`, the liveness engine includes support for coercion attack detection. This includes threats with weapons (guns, knives), as well as forcing the eyes open with hands.

Initially, it is an **experimental support**, carried out in addition to the FMAD and FPAD tests, but which does not affect the final result (`Live`, `NoLive`). For now, coercion must be checked through `NoLiveDetails::CoercionScore`.

### 3.4. Metrics based on ISO/IEC 30107

The **ISO/IEC 30107-1:2023** (Information technology — Biometric presentation attack detection — Part 1: Framework) and the **ISO/IEC 30107-3:2023** (Part 3: Testing and reporting) set the standards for determining the specifications, characterizations and evaluations of presentation attacks (Type 1) that occur at the sensor (either on a smartphone or on a desktop camera) during the collection of biometric features (for example, a selfie or a video). The most important metrics for evaluating the performance of a Presentation Attack Detection (PAD) system are:

**APCER - Presentation Attack Classification Error Rate:** proportion of attack presentations using the same species of Presentation Attack Instrument (PAI) incorrectly classified as bona fide presentations by a Presentation Attack Detection (PAD) subsystem in a specific scenario.

$$
APCER\_{PAIS} = 1 - \left( \frac{1}{N\_{PAIS}} \right) \sum\_{i=1}^{N\_{PAIS}} Res\_i
$$

**BPCER - Bona Fide Presentation Classification Error Rate:** proportion of bona fide presentations incorrectly classified as presentation attacks in a specific scenario.

$$
BPCER = \frac{ \sum\_{ i=1 }^{ N\_{BF} } Res\_i}{ N\_{BF} }
$$

**PAI**s - Presentation Attack Instrument: biometric feature or object used in a biometric presentation attack.

Presentation **Bona fide**: biometric presentation with no intent to interfere with the functioning of the biometric system.

**Presentation Attack:** presentation to the biometric capture subsystem with the intent to interfere with the functioning of the biometric system.

|               | SAMPLES | APCER % |
| ------------- | ------- | ------- |
| Paper print   | 109637  | 0.40 %  |
| Screen replay | 304582  | 0.12 %  |
| Simple mask   | 46503   | 0.01 %  |
| Advanced mask | 5184    | 0.75 %  |

*Presentation Attack and Manipulation Classification Error Rate (APCER) with test samples of paper, mask, and device (photo on screen). Metrics obtained as an average between internal and public datasets.*

|                    | SAMPLES | BPCER % |
| ------------------ | ------- | ------- |
| Bona fide accesses | 396230  | 1.10 %  |

*Bona fide Presentation and Manipulation Classification Error Rate (BPCER) with genuine test samples*

|                    | SAMPLES | BPCER % |
| ------------------ | ------- | ------- |
| Bona fide accesses | 370671  | 6.85 %  |

*Bona Fide Coercion Detector Error Rate (BPCER) with genuine test samples*

## 4. Technology usage requirements

| Specifications                           | Recommended requirements     | Minimum FPAD requirements       | Minimum FREC requirements |
| ---------------------------------------- | ---------------------------- | ------------------------------- | ------------------------- |
| Resolution                               | 1080P                        | -                               | -                         |
| IOD                                      | IOD>80                       | IOD>60                          | IOD > 30px                |
| Compression                              | Uncompressed format          | Low-compression JPEG (70%) (\*) | -                         |
| Color                                    | Color                        | Color                           | Grayscale                 |
| Pose                                     | < 5° (Yaw, Pitch, Roll)      | < 15° (Yaw, Pitch, Roll)        | < 45° (Yaw, Pitch, Roll)  |
| Face position relative to the background | Complete frontal token image | > 5% of face width              | > 8% of face width        |

*(\*) Estimated values*

## 5. References

\[1] B. P. J. Phillips, P. J. Rauss, and S. Z. Der, '**FERET (Face Recognition Technology) Recognition Algorithm Development and Test Results**', October 1996. Army Research Lab technical report 995.

\[2] ISO/IEC 19795-1 standard: '**Information technology – Biometric performance testing and reporting – Part 1: Principles and framework**', 2006

\[3] P. J. Phillips, P. J. Flynn, T. Scruggs, K. W. Bowyer, J. Chang, K. Hoffman, J. Marques, J. Min, and W. Worek, ' **Overview of the Face Recognition Grand Challenge'** , 2005. IEEE Conference on Computer Vision and Pattern Recognition.

\[4] PJ Phillips, et al. **'Preliminary Face Recognition Grand Challenge Results'** , 2006 - 7th International Conference on Automatic Face and Gesture Recognition.
