> 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 de 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 de 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 na versão CPU, o 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 outros 2 GB aprox. requeridos 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 das operações de **teste de vida passivo**. Em operações de extração facial, Matching 1:1 e Matching 1:n, a GPU não é utilizada.
{% 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)). Estamos falando de tempos de computação "puros" do SDK-C++ medidos no servidor. Lógica adicional como orquestradores, servidores web ou balanceadores de carga podem mascarar essas métricas, reduzindo o ganho de desempenho percebido.
{% endhint %}

{% hint style="warning" %}
**IMPORTANTE:** Para que a versão GPU do SelphID-SDK funcione corretamente, os drivers 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 do 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 do 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 de 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 o seu template facial, obtendo uma resposta de 'sim' ou 'não'.
* ***Verificação (1:N):*** **'Quem é você?':** Neste modo operacional, a amostra biométrica é comparada com uma lista de padrões armazenados em um banco 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 usados dois conjuntos de imagens para avaliar esses modos de funcionamento: um conjunto de teste **(Query set)** que simula usuários desconhecidos tentando acessar o sistema, e um conjunto de registro com usuários legítimos previamente cadastrados **(Target set)** com os quais a comparação é realizada.

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 frente a imagens captadas 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 *'target set'* de imagens em condições controladas e um *'query set'* de imagens captadas em condições não controladas. São os mesmos conjuntos utilizados no **Experimento 4** predefinido na base de dados mencionada \[4]:

* O *'Target Set'* do FRGC-Experimento 4 é composto por 16.028 imagens pertencentes a 466 usuários.
* O *'Query Set'* do FRGC corresponde a um conjunto de teste com um total de 8.014 imagens.
* O número total de comparações realizadas supera 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 usando 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 anotação mais abaixo). Para isso, será utilizado o *Experimento 1* da base de dados FRGC 2.0. Nesse caso, será usada uma única imagem para criar o padrão biométrico. O tamanho dos conjuntos de **Teste** e **Registro** é 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 registro que apresentem maior similaridade. Duas condições devem ser atendidas 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 usada a lista mais ampla possível, ou seja, L=16.028 (busca-se em 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 *Taxa de Acerto Rank 1 4* (**Rank One** é definido na referência \[4]).

As medidas de confiabilidade baseiam-se 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 dada |                 |          |
| --------------------------------------- | --------------- | -------- |
| Tamanho do template biométrico          | 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 fica 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 o SelphID SDK, em termos dos tempos obtidos nos seguintes módulos:

* Passive Liveness
* Extração de templates biométricos.
* Correspondência facial (1:1) com templates e imagens.
* Correspondência facial (1:N) com templates.

{% hint style="warning" %}
**Importante:** Para estes 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 cloud de alta concorrência e latências.
{% endhint %}

{% hint style="warning" %}
**Importante:** O SDK foi configurado para usar 8 threads simultâneas para operações de extração ou liveness. `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS=8`, `FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS=8`. Ver [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 do 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 se integram a 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), já que é 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 diante da câmera no momento da medição biométrica).

{% hint style="warning" %}
**IMPORTANTE:** Para a funcionalidade de teste de vida passivo do SelphID SDK, é necessário que as imagens utilizadas tenham uma 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 de 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 injete **imagens manipuladas** no sistema de captura.

A 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. Esta ferramenta é complementada pelo sólido sistema de reconhecimento facial fornecido em Selphi e SelphID. A principal vantagem desta ferramenta é que melhora enormemente a experiência do usuário, já que o usuário só precisa ficar diante da câmera e tirar uma 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 atrito adicional no processo de verificação e autenticação, é mais rápido que os sistemas ativos e, ao mesmo tempo, com a captura de uma simples selfie (ou de alguns poucos quadros extraídos de um vídeo curto), introduz uma complexidade adicional no sistema que se traduz em uma maior capacidade de detectar uma ampla gama de ataques, sejam artesanais ou manipulados digitalmente.

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

O sistema de Detecção de Ataques de Apresentação (PAD) passivo 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 papel, foto, vídeo ou máscara que representa as características biométricas do alvo que tenta suplantar.

### 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 métodos de deep learning, como redes generativas adversariais (GAN) ou redes de difusão.

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

A partir da versão `6.20.0`, o mecanismo 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 adicionalmente 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 desktop) durante a coleta dos traços biométricos (por exemplo, uma 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 a mesma espécie 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 frontal completa do Token | > 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] Norma ISO/IEC 19795-1: '**Tecnologia da informação – Testes e relatórios de desempenho biométrico – Parte 1: Princípios e estrutura**', 2006

\[3] P. J. Phillips, P. J. Flynn, T. Scruggs, K. W. Bowyer, J. Chang, K. Hoffman, J. Marques, J. Min e W. Worek, ' **Visão geral do Face Recognition Grand Challenge'** , 2005. Conferência IEEE sobre Visão Computacional e Reconhecimento de Padrões.

\[4] PJ Phillips, et al. **'Resultados preliminares do Face Recognition Grand Challenge'** , 2006 - 7ª Conferência Internacional sobre Reconhecimento Automático de Faces e Gestos.
