Desenvolvimento Desktop
| Orçamento: Aberto |
Publicado: |
Propostas: 24
Descrição do projeto: Olá! Preciso de um desenvolvedor Python (nível júnior ou pleno) com experiência em visão computacional para criar um aplicativo local (para rodar em Windows) de monitoramento de fluxo de pessoas a partir de uma câmera/webcam comum. O aplicativo será desenvolvido para uso pela Contag.
O objetivo do sistema é capturar a imagem da webcam em tempo real, identificar quem passa em frente à câmera, rastrear o indivíduo para evitar contagens duplicadas, inferir o gênero e a faixa etária da pessoa e persistir esses dados em um relatório local.
Toda a lógica de Inteligência Artificial deve rodar de forma 100% local e offline (sem custos de APIs em nuvem). O motor de inferência demográfica recomendado é o framework DeepFace.
Requisitos Funcionais e Técnicos:
Interface Gráfica (GUI):
Interface intuitiva desenvolvida em Tkinter.
Exibição do feed de vídeo em tempo real integrado na janela.
Botões para "Iniciar Monitoramento", "Encerrar" e um painel lateral mostrando os contadores acumulados (Total de pessoas únicas, divisão por Gênero e divisão por Faixa Etária).
Rastreamento de Pessoas (Centroid Tracking):
O sistema deve calcular o centroide geométrico de cada rosto detectado. O cálculo do centroide $C$ a partir da caixa delimitadora de largura $w$ e altura $h$ deve seguir a fórmula:
$$C = \left( x + \frac{w}{2}, \ y + \frac{h}{2} \right)$$
Deve ser usada a distância euclidiana para associar o mesmo ID a uma pessoa em frames consecutivos:
$$d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$$
Evitar Recontagem: Se uma pessoa ficar parada na frente da câmera por minutos, ela deve manter o mesmo ID e ser contada apenas uma vez.
Tolerância de sumiço: O ID deve ser mantido na memória por um intervalo de tolerância (ex.: 30 a 50 frames) caso ocorra uma oclusão rápida, evitando gerar um novo ID quando a pessoa reaparecer.
Análise Demográfica (DeepFace local):
No momento em que um novo ID estável for registrado pelo rastreador de centroides, o sistema deve extrair o frame do rosto e chamar o método DeepFace.analyze para obter o gênero e a idade.
O resultado da idade numérica deve ser agrupado nas seguintes categorias exatas:
10 a 25 (De 10 a 25 anos)
25 a 50 (De 26 a 50 anos)
50 mais (Acima de 50 anos)
Persistência de Dados (Relatório local):
Gravação em tempo real em um arquivo Excel simples formatado em .csv (ex: relatorio_presenca.csv) contendo as colunas: ID_Pessoa, Data_Hora_Evento, Genero_Estimado, Faixa_Etaria.
Otimizações Obrigatórias (Evitar Instabilidades):
Como o software rodará de forma contínua em ambiente Windows, o desenvolvedor deve prever as seguintes proteções em código:
- Multithreading: A leitura do OpenCV e o processamento do DeepFace devem rodar em threads separadas para evitar que a interface gráfica (GUI) congele durante as chamadas da IA.
- Controle de Chamadas da IA: O DeepFace deve ser executado apenas uma vez por ID detectado (no momento do cadastro do ID), e não em todos os frames, minimizando o estresse de CPU/GPU e prevenindo superaquecimento (thermal throttling).
- Prevenção de Memory Leaks: Tratamento correto de liberação de memória em loops (coleta de lixo com gc.collect()) devido a vazamentos conhecidos no backend do Keras/TensorFlow.
Entregáveis:
Código-fonte completo em Python 3.11 estruturado de forma limpa, modular e comentado.
Arquivo requirements.txt com todas as dependências especificadas.
Instruções claras de instalação e configuração do ambiente no Windows.
Habilidades Desejadas: Python, OpenCV, Tkinter, DeepFace, TensorFlow/Keras, Programação Assíncrona / Multithreading.
Habilidades Principais (Obrigatórias)
Python: A linguagem de programação que servirá como base para todo o projeto.
OpenCV: A biblioteca essencial que o programador usará para acessar a webcam e tratar os quadros de vídeo.
Inteligência Artificial (ou Criação & Integração com IA): Necessária porque o aplicativo usará modelos de rede neural para inferir idade e gênero.
Machine Learning (ou Aprendizado de Máquina): O DeepFace e o TensorFlow/Keras são tecnologias que pertencem a este campo.
Desenvolvimento Desktop: Como o aplicativo será instalado e executado diretamente no Windows.
Habilidades Secundárias (Recomendadas para refinar os candidatos)
Tkinter: A ferramenta nativa do Python que o desenvolvedor usará para desenhar as janelas, botões e os contadores da tela.
Visão Computacional: A especialidade da inteligência artificial focada em processamento e reconhecimento de imagens.
TensorFlow (ou Keras): Os frameworks de código aberto que rodam "por baixo dos panos" do motor DeepFace.
Pandas: A biblioteca de Python que facilita a manipulação de dados e a geração organizada do arquivo de relatório .csv.
Git: O sistema de controle de versão que garantirá a segurança e o histórico de alterações do código durante o desenvolvimento.
Habilidades desejadas: Aprendizado de Máquina (ML), Desenvolvimento Desktop, Inteligência Artificial, OpenCV e Python.