LinkedIn Compartilhar no LinkedIn

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:

  1. Clique no botão "Match Now".
  2. 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).
  3. 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