> 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-pt-br/sdks/backend-sdk/selphid/technical_documentation/technical_specifications.md).

# Especificações técnicas

## 1. Introdução

Este documento descreve os requisitos técnicos para incorporar **FacePhi SelphID SDK** em seus sistemas.

A seguir são detalhados os componentes fornecidos e os passos necessários para instalar o SDK nos sistemas operacionais **Windows** e **Linux**.

## 2. Especificações técnicas

As seções a seguir mostram os requisitos de hardware e software recomendados para instalar o SDK no lado do servidor.

### 2.1 Requisitos de hardware

As tabelas a seguir mostram os requisitos de hardware recomendados para instalar SelphID SDK em diferentes sistemas operacionais:

#### 2.1.1. Requisitos da Versão CPU

Requisitos de hardware recomendados para SelphID SDK, equivalente a **AWS c5.4xlarge**:

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

{% hint style="warning" %}
**IMPORTANTE:** SelphID-SDK não armazena dados nem resultados de testes em disco. A própria instalação do SDK ocupa aproximadamente 2 GB. Prever mais armazenamento para operações adicionais da lógica de negócio.
{% endhint %}

#### 2.1.2. Requisitos da Versão GPU

Requisitos de hardware recomendados para SelphID SDK com aceleração GPU, equivalente a **AWS g4dn.4xlarge**:

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

{% hint style="warning" %}
**IMPORTANTE:** Assim como a Versão CPU, SelphID-SDK não armazena dados nem resultados de testes em disco. A própria instalação do SDK-GPU ocupa aproximadamente 3 GB, além de mais 2 GB aprox. exigidos pelos drivers NVidia e CUDA. Prever mais armazenamento para operações adicionais da lógica de negócio.
{% endhint %}

{% hint style="warning" %}
**IMPORTANTE:** A aceleração GPU impacta apenas o desempenho de operações de **teste de vida passivo**. Em operações de extração facial, matching 1:1 e matching 1:n não se utiliza a GPU.
{% endhint %}

{% hint style="warning" %}
**IMPORTANTE:** Segundo os testes realizados, a Versão GPU pode alcançar 60% mais desempenho em testes de vida passivos em relação à Versão CPU 8 cores (ver [Estatísticas de desempenho](#24-estadísticas-de-rendimiento)). Falamos de tempos de computação "puros" do SDK-C++ medidos em servidor. Lógica adicional como orquestradores, servidores web ou balanceadores de carga podem ofuscar essas métricas, reduzindo o ganho de desempenho percebido.
{% endhint %}

{% hint style="warning" %}
**IMPORTANTE:** Para que a Versão GPU de SelphID-SDK funcione corretamente, os drivers de NVidia/CUDA devem estar corretamente instalados e configurados no servidor. Siga o guia oficial para esse propósito: <https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/latest/index.html>.
{% endhint %}

{% hint style="warning" %}
**IMPORTANTE:** A Versão GPU é uma otimização sobre a Versão CPU, mas **não oferece funcionalidade adicional**. No nível operacional, as versões CPU/GPU são totalmente equivalentes.
{% endhint %}

### 2.2 Requisitos de software

As tabelas a seguir mostram os requisitos mínimos de software para instalar SelphID SDK em diferentes sistemas operacionais:

#### 2.2.1 Requisitos de software de SelphID SDK

| Requisitos mínimos de software     |
| ---------------------------------- |
| Windows 11 / Windows Server 2025   |
| Visual C++ 2026 x64                |
| Java 1.8 (recomenda-se Oracle JDK) |
| .Net Framework 4.0                 |

#### 2.2.2 Requisitos de software de SelphID SDK (Linux Ubuntu)

| Requisitos mínimos de software                  |
| ----------------------------------------------- |
| Ubuntu 18.04 ou compatível                      |
| Glib 2.27                                       |
| GCC 7.5.0 (somente para a versão do SDK em C++) |
| Java 1.8 (recomenda-se Oracle JDK)              |

### 2.3 Estatísticas de confiabilidade do algoritmo de Reconhecimento Facial

A seguir são mostrados vários testes para avaliar a confiabilidade de **SelphID SDK 6.21.0**. O objetivo é compreender o funcionamento e o comportamento do SDK, obtendo medidas objetivas da confiabilidade e precisão do software de reconhecimento facial. Para isso, foram realizados experimentos com uma base de dados pública amplamente utilizada: *NIST Face Recognition Grand Challenge* ( **FRGC** ) \[1].

Os experimentos realizados mostram resultados em processos de autenticação ou verificação:

* ***Verificação (1:1):*** **'Você é quem diz ser?':** Determina se, ao comparar duas amostras biométricas (templates faciais), é gerada uma pontuação acima de um limiar, o que implica que o sistema verificou positivamente que você é quem diz ser. Esses sistemas são conhecidos como 1:1, já que o padrão facial a ser avaliado é comparado apenas com seu template facial, obtendo uma resposta de 'sim' ou 'não'.
* ***Verificação (1:N):*** **'Quem é você?':** Nesse modo operacional, a amostra biométrica é comparada com uma lista de padrões armazenados em uma base de dados. Também é conhecido como **1:N** porque a identidade deve ser localizada corretamente entre um número **N** de padrões com identidades diferentes com os quais será comparada.

São utilizados dois conjuntos de imagens para avaliar esses modos de funcionamento: um conjunto de teste **(conjunto de consulta)** que simula usuários desconhecidos que tentam acessar o sistema, e um conjunto de cadastro com usuários legítimos previamente registrados **(conjunto-alvo)** com os quais é feita a comparação.

Os resultados obtidos nesses experimentos seguem as medidas padrão definidas na norma internacional **ISO 19795-1** \[2].

#### 2.3.1 Verificação 1:1

#### 2.3.1.1 Condições não controladas (FRGC Exp 4)

Este experimento mede a robustez da tecnologia diante de imagens capturadas em condições não controladas. Os conjuntos de imagens utilizados são extraídos da base de dados **FRGC v2.0** \[3]. A avaliação consiste em um *'conjunto-alvo'* de imagens em condições controladas e um *'conjunto de consulta'* de imagens capturadas em condições não controladas. São os mesmos conjuntos utilizados no **Experimento 4** predefinido na base de dados mencionada \[4]:

* O *'Conjunto-alvo'* do FRGC-Experimento 4 é composto por 16.028 imagens pertencentes a 466 usuários.
* O *'Conjunto de consulta'* do FRGC corresponde a um conjunto de teste com um total de 8.014 imagens.
* O número total de comparações realizadas ultrapassa 128 milhões.

A tabela a seguir mostra os aspectos mais importantes do experimento, bem como a Taxa de Correspondência Verdadeira (TMR), fixando a Taxa de Falsa Correspondência (FMR) em 0,1%:

| Verificação em condições não controladas (128 M de comparações) | TMR com FMR = 0,1% |
| --------------------------------------------------------------- | ------------------ |
| ROC I                                                           | 99.9999%           |
| ROC II                                                          | 99.9999%           |
| ROC III                                                         | 99.9999%           |

**Tabela 1.** Resultados do experimento utilizando imagens em condições não controladas.

O gráfico a seguir mostra os resultados obtidos no experimento por meio de curvas ROC (Receiver Operating Characteristic). São mostradas três curvas ROC que avaliam o desempenho do algoritmo utilizando imagens obtidas ao longo do tempo. Além da TMR com FMR=0,1%, para cada curva ROC foram adicionados marcadores adicionais que destacam os pontos de aplicação de alta segurança.

{% hint style="info" %}

* **ROC I:** Imagens de Target e Query obtidas dentro do mesmo semestre.
* **ROC II:** Imagens de Target e Query obtidas dentro do mesmo ano.
* **ROC III:** Imagens de Target e Query obtidas com pelo menos um ano de diferença.
  {% endhint %}

![](/files/f4e7a19f95147654d4045edbb65cbc64c2832886)

#### 2.3.2 Identificação 1:N

**2.3.2.1 Busca de sujeitos em uma lista**

Neste experimento será avaliada a confiabilidade do SDK para uma aplicação de ***Identificação de Conjunto Fechado*** (ver observação abaixo). Para isso, será utilizado o *Experimento 1* da base de dados FRGC 2.0. Nesse caso, será utilizada uma única imagem para criar o padrão biométrico. O tamanho dos conjuntos de **Teste** e **Cadastro** é de 16.028 amostras cada um (257 milhões de comparações).

Para cada exemplo do conjunto de teste, será solicitado ao sistema que retorne as **N** amostras biométricas do conjunto de cadastro que apresentem maior similaridade. Devem ser cumpridas duas condições para que o sistema identifique corretamente o usuário:

1. A identidade correta deve estar posicionada no intervalo **R** (*Rank*) da Lista de Candidatos **L** (Candidate List).
2. A similaridade deve ser maior que o limiar de segurança **T** (Threshold). Esses limiares correspondem aos **Limiares de Segurança** fornecidos por **FacePhi**.

Para tornar o teste mais exigente, o Rank foi reduzido ao mínimo (R=1) e foi utilizada a lista mais ampla possível, ou seja, L=16.028 (a busca é feita contra toda a base de dados). Em resumo, para ser considerado um acerto, a pessoa deve ficar posicionada no intervalo da Lista de Candidatos de toda a base de dados, o que é mais amplamente conhecido como *Rank 1 Hit Rate 4* (**Rank One** é definido na referência \[4]).

As medidas de confiabilidade se baseiam na obtenção da *Taxa de Identificação Positiva Verdadeira* (TPIR) para diferentes níveis de segurança estabelecidos pelo limiar.

| Busca de identidade para uma lista determinada |                 |          |
| ---------------------------------------------- | --------------- | -------- |
| Tamanho do biometric template                  | 1322 bytes      |          |
| TPIR(R=1), Rank1                               | NIST FRGC Exp 1 | 98.7272% |

**Tabela 2.** Rank 1 do experimento de identificação.

{% hint style="info" %}
**Conjunto fechado:** O marcador corresponde a um FMR de 0.000001 (999.999 acessos negados corretamente de 1 milhão de tentativas de ataque). Mesmo nesse caso, a TMR situa-se em torno de 99% para ROC I.
{% endhint %}

### 2.4 Estatísticas de desempenho

A figura a seguir mostra as estatísticas de desempenho realizadas sobre SelphID SDK, em termos dos tempos obtidos nos seguintes módulos:

* Liveness passiva
* Extração de biometric templates.
* Facial matching (1:1) com templates e imagens.
* Facial matching (1:N) com templates.

{% hint style="warning" %}
**Importante:** Para esses testes foi utilizada a versão SDK C++ funcionando de forma sequencial. Portanto, apresentamos métricas do desempenho "puro" da solução. Não se leva em conta o tempo consumido por orquestradores, servidores web, ambientes de cloud de alta concorrência e latências.
{% endhint %}

{% hint style="warning" %}
**Importante:** O SDK foi configurado para utilizar 8 threads concorrentes para operações de extração ou liveness. `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS=8`, `FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS=8`. Veja [Variáveis de ambiente](/docs.facephi-pt-br/sdks/backend-sdk/selphid/installation/installation_instructions.md#33-variables-de-entorno).
{% endhint %}

Para realizar as medições de teste de vida, extração, comparação 1:1 e comparação 1:N, foi utilizado um dispositivo com as seguintes características:

* Intel Xeon Platinum 3.6 GHz
* Processador de 16 núcleos
* 32 GB de RAM
* Linux Ubuntu 18.04.6 LTS

|            | Extração biométrica `(imagem 640x480)` | Comparação `(1:1)` com templates brutos | Comparação `(1:1)` com imagens `(640x480)` |
| ---------- | -------------------------------------- | --------------------------------------- | ------------------------------------------ |
| Desempenho | 65 ms                                  | 129 ms                                  | 121 ms                                     |

**Figura 1.** Dados obtidos no SelphID SDK Linux.

{% hint style="info" %}
Em um servidor Windows, os dados obtidos podem variar em +-10%
{% endhint %}

A seguir são mostradas as estatísticas de desempenho para o teste de vida:

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

**Figura 3.** Dados obtidos com a versão Linux de SelphID SDK.

A seguir são mostrados os dados de desempenho para a criação de galerias e a identificação 1:N.

|                   | Criar galeria | Identificação |
| ----------------- | ------------- | ------------- |
| templates/segundo | 65.000        | 6.500.000     |
|                   |               |               |

**Figura 4.** Dados obtidos no SelphID SDK Linux.

{% hint style="info" %}
Em um servidor Windows, os dados obtidos podem variar em +-10%
{% endhint %}

## 3. Detecção de teste de vida passivo

As técnicas utilizadas por fraudadores para se passar por usuários legítimos crescem constantemente e são conhecidas como Ataques. Como essas aplicações são integradas em sistemas de segurança críticos, é necessário dotá-las de medidas de segurança de *Detecção de Ataques de Apresentação* (PAD) e *Detecção de Ataques de Manipulação* (MAD), pois é vital determinar se os padrões biométricos apresentados à aplicação procedem de um usuário genuíno ("bona fide") ou não. (Um usuário genuíno seria um usuário legítimo do sistema que está presente em frente à câmera no momento da medição biométrica).

{% hint style="warning" %}
**IMPORTANTE:** Para a funcionalidade de teste de vida passivo de SelphID SDK, é necessário que as imagens utilizadas tenham resolução mínima de 720p (resolução HD), para que os resultados se ajustem às métricas mostradas a seguir.
{% endhint %}

O objetivo principal é dotar os algoritmos de Reconhecimento Facial do nível de segurança necessário para **prevenir o uso fraudulento das características faciais de um usuário obtidas de fotografias e/ou vídeos durante a identificação, e assim prevenir a fraude em massa**.

A tecnologia da Facephi garante que o padrão biométrico obtido do rosto do usuário foi extraído de uma apresentação biométrica bona fide, descartando aqueles obtidos de um atacante que apresente **papel**, **fotografias**, **vídeos**, **máscaras** e/ou que injete **imagens manipuladas** no sistema de captura.

Facephi implementou um sistema seguro e fácil de usar para **poder acessar o sistema em menos de um segundo com total segurança**, mais rápido e simples do que memorizar uma senha e um usuário. O equilíbrio perfeito entre segurança e facilidade de acesso.

| ![Imagen de onboarding](/files/4b95284c1975976e527e39aa51b2071dee6e4379) | ![Imagen de rechazo](/files/a78cc985cad75b309c0e9f971dd2bd79b0cc5180) | Usando as técnicas de Deep Learning da Facephi, esta nova ferramenta determina se a imagem procede de um acesso de usuário genuíno ou, ao contrário, de uma reprodução por meio de fotos impressas, imagens manipuladas, a partir de um dispositivo móvel, tablet ou PC. Essa ferramenta é complementada com o sólido sistema de reconhecimento facial fornecido em Selphi e SelphID. A principal vantagem dessa ferramenta é que melhora enormemente a experiência do usuário, já que o usuário só precisa se colocar em frente à câmera e tirar um selfie, sem necessidade de colaboração adicional. |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

**FaceLiveness** baseia-se em algoritmos de Machine Learning treinados para extrair as características contidas em uma imagem de selfie (por exemplo, artefatos, deformações, textura, profundidade, refletância da luz, inconsistências de resolução, pulso sanguíneo, etc.) que permitem ao módulo de classificação discriminar entre uma apresentação bona fide (também conhecida como genuína) e um ataque (por exemplo, papel, foto, repetição de selfie/vídeo, máscara, etc.).

Um sistema de Detecção de Ataques Passivo não requer nenhuma ação por parte do usuário e se baseia completamente em técnicas de Deep Learning. Portanto, não introduz fricção adicional no processo de verificação e autenticação, é mais rápido que os sistemas ativos e, ao mesmo tempo, com a captura de um simples selfie (ou alguns poucos fotogramas extraídos de um vídeo curto), introduz uma complexidade adicional no sistema que se traduz em uma maior capacidade para detectar uma ampla gama de ataques, sejam artesanais ou manipulados digitalmente.

### 3.1 Detecção de ataques de apresentação

O sistema passivo de Detecção de Ataques de Apresentação (PAD) de **Facephi** (FaceLiveness) determina se o acesso está sendo realizado por um usuário genuíno (bona fide) ou se o acesso está sendo realizado por um atacante que apresenta um papel, foto, vídeo ou máscara que representa as características biométricas do alvo que tenta se passar por ele.

### 3.2. Detecção de ataques de manipulação

O sistema de Detecção de Ataques de Manipulação (MAD) de **Facephi** (FaceLiveness) determina se o acesso está sendo realizado por um usuário genuíno (bona fide) ou se o acesso é realizado por um atacante que injeta no sistema uma imagem manipulada que foi modificada.

A nova tecnologia da Facephi é capaz de prevenir:

* **Manipulação por Face Swap:** Sobreposição do rosto de uma pessoa sobre uma foto ou vídeo de outra pessoa.
* **Rosto sintético (deepfake):** Rosto sintético gerado por meio de métodos de deep learning, como redes adversárias generativas (GAN) ou redes de difusão.

### 3.3. Detecção de ataques de coerção

A partir da versão `6.20.0`, o motor de teste de vida inclui suporte para a detecção de ataques de coerção. Isso inclui ameaças com armas (pistolas, facas), bem como forçar a abertura dos olhos com as mãos.

Inicialmente, trata-se de um **suporte experimental**, realizado de forma adicional aos testes FMAD e FPAD, mas que não afeta o resultado final (`Live`, `NoLive`). Por enquanto, a coerção deve ser verificada por meio de `NoLiveDetails::CoercionScore`.

### 3.4. Métricas baseadas em ISO/IEC 30107

A **ISO/IEC 30107-1:2023** (Tecnologia da informação — Detecção de ataques de apresentação biométrica — Parte 1: Estrutura de trabalho) e a **ISO/IEC 30107-3:2023** (Parte 3: Testes e relatórios) estabelecem os padrões para determinar as especificações, caracterizações e avaliações dos ataques de apresentação (Tipo 1) que ocorrem no sensor (seja em um smartphone ou em uma câmera de mesa) durante a coleta dos traços biométricos (por exemplo, um selfie ou um vídeo). As métricas mais importantes para avaliar o desempenho de um sistema de Detecção de Ataques de Apresentação (PAD) são:

**APCER - Taxa de Erro de Classificação de Apresentação de Ataques:** proporção de apresentações de ataque que utilizam o mesmo tipo de instrumento de ataque de apresentação (PAI) classificadas incorretamente como apresentações bona fide por um subsistema de detecção de ataques de apresentação (PAD) em um cenário específico.

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

**BPCER - Taxa de Erro de Classificação de Apresentação Bona Fide:** proporção de apresentações bona fide classificadas incorretamente como ataques de apresentação em um cenário específico.

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

**PAI**s - Instrumento de Ataque de Apresentação: característica biométrica ou objeto utilizado em um ataque de apresentação biométrica.

Apresentação **Bona fide**: apresentação biométrica sem o objetivo de interferir no funcionamento do sistema biométrico.

**Ataque de Apresentação:** apresentação ao subsistema de captura biométrica com o objetivo de interferir no funcionamento do sistema biométrico.

|                    | AMOSTRAS | APCER % |
| ------------------ | -------- | ------- |
| Impressão em papel | 109637   | 0.40 %  |
| Repetição na tela  | 304582   | 0.12 %  |
| Máscara simples    | 46503    | 0.01 %  |
| Máscara avançada   | 5184     | 0.75 %  |

*Taxa de Erro de Classificação de Apresentação de Ataques e Manipulação (APCER) com amostras de teste de papel, máscara e dispositivo (foto na tela). Métricas obtidas como média entre conjuntos de dados internos e públicos.*

|                   | AMOSTRAS | BPCER % |
| ----------------- | -------- | ------- |
| Acessos bona fide | 396230   | 1.10 %  |

*Taxa de Erro de Classificação de Apresentação e Manipulação Bona Fide (BPCER) com amostras de teste genuínas*

|                   | AMOSTRAS | BPCER % |
| ----------------- | -------- | ------- |
| Acessos bona fide | 370671   | 6.85 %  |

*Taxa de Erro do Detector de Coerção Bona Fide (BPCER) com amostras de teste genuínas*

## 4. Requisitos de uso da tecnologia

| Especificações                       | Requisitos recomendados          | Requisitos mínimos FPAD              | Requisitos mínimos FREC  |
| ------------------------------------ | -------------------------------- | ------------------------------------ | ------------------------ |
| Resolução                            | 1080P                            | -                                    | -                        |
| IOD                                  | IOD>80                           | IOD>60                               | IOD > 30px               |
| Compressão                           | Formato sem compressão           | JPEG com baixa compressão (70%) (\*) | -                        |
| Cor                                  | Cor                              | Cor                                  | Escala de cinza          |
| Pose                                 | < 5° (Yaw, Pitch, Roll)          | < 15° (Yaw, Pitch, Roll)             | < 45° (Yaw, Pitch, Roll) |
| Posição do rosto em relação ao fundo | Imagem de token frontal completa | > 5% da largura do rosto             | > 8% da largura do rosto |

*(\*) Valores estimados*

## 5. Referências

\[1] B. P. J. Phillips, P. J. Rauss, e S. Z. Der, '**FERET (Face Recognition Technology) Recognition Algorithm Development and Test Results**', outubro de 1996. Relatório técnico 995 do Army Research Lab.

\[2] padrão ISO/IEC 19795-1: '**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.
