Analisando propostas

Desenvolvimento de Sdk para Visão Computacional com Detecção Facial e Eventos de Furto em Tempo Real

Publicado em 25 de Agosto de 2026 dias na TI e Programação

Sobre este projeto

Aberto

CONTEXTO
Opero um sistema de visão computacional para varejo: identifica clientes recorrentes por rosto, conta fluxo de entrada e detecta furto. Roda on-premise na loja, sem nuvem. Já está em produção em Python/ONNX Runtime.

O que preciso
um sdk que encapsule toda a etapa de visão computacional e me devolva eventos prontos. Quero abstrair a captura/leitura de rosto: é a parte mais crítica, mais frágil e a que mais consome meu tempo. Meu sistema deveria só consumir eventos, não lidar com frames.

STACK E PLATAFORMA
Núcleo C++ para inferência em tempo real, com binding Python. Precisa compilar e rodar em Windows e Linux a partir da mesma base. gpu acelerada: cuda/tensorrt no linux, directml ou cuda no windows, com fallback cpu funcional (mais lento, mas não pode quebrar).

ENTRADA
N streams RTSP (H.264/H.265) de câmeras Ip comuns, 1080p, sem hardware especial. pc com gpu dedicada. Decodificação com teto de resolução configurável (hoje uso 1280x720 para ia e 8 fps de processamento; o stream de exibição é separado).

saída — um callback por pessoa, não por frame

embedding facial 512-d, l2-normalizado (padrão arcface).
Track_id estável durante toda a passagem, bbox, timestamp.
Crop JPEG do rosto alinhado 112x112.
Métricas de qualidade: nitidez, frontalidade (yaw), pitch.
Flag de liveness (anti-spoof contra foto e tela).
Evento de furto separado: track_id, score, ação, timestamp.

pipeline de captura — o coração do trabalho
detecção facial > tracking multi-objeto > gates de qualidade > embedding único por trajetória.

O requisito central: NÃO quero um embedding por frame. Quero um por pessoa, e que seja o melhor frame da passagem. Isso significa:

Confirmar o track por N detecções consecutivas antes de gastar inferência (mata falso positivo de 1 frame).
Acumular candidatos e pontuar por nitidez ponderada pela frontalidade: um perfil nítido deve perder para um frontal razoável.
Abrir janela de estabilização (~1s) no primeiro frame frontal aceitável e embedar o melhor da janela.
Fallback por timeout (~3s): se a pessoa nunca olhar para a câmera, embedar o melhor frame visto, marcado como fallback, e permitir upgrade se ela virar depois.
Descartar rosto pequeno demais (hoje corto abaixo de 50x50 px) — crop distante não carrega identidade.
Filtro anti-textura: re-detectar no recorte ampliado antes de embedar. Rosto real re-detecta ampliado; parede/estampa não.

MULTIFACE (requisito de performance mais importante)
Fila de entrada tem várias pessoas juntas. Os rostos prontos no mesmo frame devem ser embedados em lote, numa única passada de gpu, nunca sequencialmente. Medi isso: com 16 rostos, lote dá 26ms contra 412ms sequencial (~16x). O custo no GPU é praticamente constante; sequencial escala linear e trava a câmera.

DETECÇÃO de furto
detecção de pessoa + pose (esqueleto) para identificar o gesto de pegar e ocultar produto. Precisa de histerese: N frames consecutivos confirmam, e o contador decai quando a postura normaliza. Sem isso o falso positivo inviabiliza o uso. Roda em stride (não todo frame) para não competir com o pipeline facial.

TREINAMENTO
Ferramental para treinar o modelo de FURTO/ação com vídeo da própria loja:

Exportação de dataset rotulado a partir do que já coleto.
Script de treino e de avaliação (métricas por classe).
Export para onnx que o sdk carrega em runtime, sem recompilar.
Importante: o treino roda OFFLINE em Python; o SDK C++ apenas consome o modelo. Não quero treino embarcado em C++.
Reconhecimento FACIAL usa modelo pronto (ArcFace) — não retreinar. É Commodity treinada com milhões de identidades e retreinar só piora.

PERFORMANCE E critérios de aceite

6 a 8 câmeras simultâneas num mesmo pc com gpu.
Lote não pode regredir o caso de 1 rosto (hoje: 24.8ms em lote vs 25.1ms single).
Embedding em lote deve ser numericamente idêntico ao single (validei: diferença 0.00).
Lote parcial (ex.: 3 rostos num lote de 8) retorna só os reais, sem lixo de padding.
Suíte de testes determinística, sem GPU obrigatória para rodar.

NÃO-FUNCIONAIS
Reconexão automática de stream. Thresholds configuráveis por arquivo/env (score, área mínima, stride, janelas, resolução). 100% offline. Logs e métricas por câmera (Fps, latência, taxa de descarte por motivo).

fora de escopo
matching de identidade, banco de dados, busca vetorial, regras de negócio, alertas e interface ficam do meu lado. O SDK termina no evento.

O que eu entrego
pipeline completo já funcionando em python/onnx runtime, com benchmarks, suíte de testes e coleta de dados comportamentais já rodando em banco. Serve como especificação executável e baseline de comparação. O trabalho é empacotar, acelerar e portar — não descobrir do zero.

entregáveis esperados
biblioteca compilada win/linux, headers, binding python, exemplo mínimo funcional, ferramental de treino e documentação de build e configuração.

Categoria TI e Programação
Subcategoria Inteligência Artificial
Tamanho do projeto Pequeño

Prazo de Entrega: Não estabelecido

Habilidades necessárias