
Nos últimos dias, desenvolvi um projeto educacional focado na comparação de impressões digitais utilizando Deep Learning. A solução foi construída com base em uma Rede Neural Siamesa, usando a MobileNetV2 como extrator leve de características — e incorporando visualização interpretável via Grad-CAM, destacando as regiões da digital mais relevantes no processo de verificação.


📂 Repositório + Demo
🔗 Demo operacional: https://projetos.tiago.cafe/
🔗 GitHub: https://github.com/algodas/BiomatchML.git
🔬 💡 Visão Funcional
1. Upload de Imagens
A ferramenta permite que você realize a comparação entre duas impressões digitais de forma simples. No formulário, envie duas imagens:
• 📥 Requester: imagem da impressão digital da pessoa que se deseja verificar.
• 📥 Candidate: imagem da impressão digital a ser comparada.
As imagens devem estar nos formatos .bmp
e conter digital completa ou parcial — como as amostras disponíveis no link abaixo.
2. Imagens de Exemplo para Testes
Para testar o sistema com dados reais, disponibilizamos um conjunto de imagens que podem ser baixadas diretamente:
🔗 Download Sample Images
O conjunto é organizado da seguinte forma:
• Cada indivíduo possui 10 dedos representados.
• Cada dedo possui duas imagens:
- Uma versão limpa (sem distorções).
- Uma versão distorcida (com rotação, pressão, borrões ou recortes).
Essas variações simulam situações reais de captura e são ideais para avaliar se o algoritmo consegue identificar corretamente impressões da mesma pessoa, mesmo sob condições adversas.
3. Realizando a Comparação
Após o envio das duas imagens:
- Clique no botão "Match Now".
- O sistema processará as impressões digitais, identificará regiões relevantes e retornará um dos seguintes resultados:
o ✅ Match — se ambas pertencem à mesma pessoa.
o ❌ No Match — se forem de pessoas diferentes.
o ⚠️ Mensagem de Cautela — se o resultado estiver em uma faixa de incerteza.
o 🧠 Explicação visual opcional — mostrando as áreas que influenciaram a decisão (como sobreposições ou visualizações com Grad-CAM). - Recursos visuais adicionais disponíveis:
🔥 Mapas de calor Grad-CAM — destacando as áreas de maior ativação na análise.
🧬 Mapas de Minúcias — exibindo automaticamente os pontos-chave detectados em cada impressão.
🔬 💡 Visão Técnica Geral
Diferentemente dos sistemas biométricos tradicionais, que dependem de regras fixas para extração de minúcias (como bifurcações e terminações), esta solução adota uma abordagem baseada em aprendizado de representações (embeddings) a partir dos pixels da imagem.
As representações são comparadas utilizando distância euclidiana, fornecendo uma medida de similaridade robusta a ruído, rotação, distorções e baixa qualidade — desafios comuns em ambientes reais.
📊 🧪 Dataset de Treinamento — SOCOFing
Utilizei o SOCOFing Dataset, com mais de 6.000 imagens BMP de impressões digitais, incluindo variações como cortes, sujeira, rotação e ruído — simulando cenários forenses e administrativos.
🛠️ Arquitetura de Treinamento
- 📐 Imagens: 96×96 px (RGB)
- 🔁 Batch size: 32
- 🔄 Épocas: 5
- 📉 Perda: Binary Crossentropy
- ⚙️ Otimizador: Adam
- 🧠 Modelo salvo:
model/siamese_model.h5
Rede CNN leve personalizada com:
- 2 camadas
Conv2D
- 2 camadas
MaxPooling2D
- 1 camada
Flatten
+Dense
(128 dimensões) - Camada
Lambda
para cálculo de distância
🧩 Inferência Web + Grad-CAM
A aplicação (app.py
) foi desenvolvida com Flask, com interface web para envio de imagens .bmp
. O sistema:
- Processa os pares de imagens
- Gera os embeddings
- Retorna o score de similaridade + MATCH / NO MATCH
- Exibe, opcionalmente, um mapa de calor Grad-CAM sobre a imagem, mostrando as regiões com maior ativação neural
O heatmap é ativado por checkbox e ajuda a validar o comportamento da rede.
☁️ Ambiente de Execução (Oracle Cloud)
- Ubuntu 20.04
- Instância:
VM.Standard.E2.1
(1 vCPU, 8 GB RAM) - Execução apenas com CPU (sem GPU)
- Deploy com NGINX + Gunicorn + systemd
📦 Tecnologias utilizadas
- TensorFlow 2.x + Keras
- Flask, OpenCV, Pillow, Matplotlib
- Grad-CAM customizado
- Deploy automático via
setup.sh
com proxy reverso NGINX
📂 Repositório + Demo
🔗 Demo operacional: https://projetos.tiago.cafe/
🔗 GitHub: https://github.com/algodas/BiomatchML.git
Inclui:
- Código-fonte completo (
app.py
,train.py
,cam_utils.py
) - Imagens de exemplo
- Script de instalação automática (
setup.sh
) - Suporte a Grad-CAM com visualização na web
💬 Se você trabalha com biometria, visão computacional ou quer explorar redes siamesas em contextos como assinatura, face, documentos ou voz — vamos conversar!
#AprendizadoProfundo #Biometria #RedeSiamesa #VisãoComputacional #GradCAM #Flask #TensorFlow #Keras #MobileNetV2 #IA #MachineLearning #OpenSource #ProjetoEducacional #FingerprintRecognition