Este repositório contém soluções para desafios de Visão Computacional, com foco em processamento 3D e reconhecimento facial.
Este projeto é composto por dois desafios principais:
- Alinhamento de Nuvens de Pontos com ICP: Estimativa de trajetória de um veículo (odometria) a partir do alinhamento sequencial de nuvens de pontos 3D do dataset KITTI.
- Busca de Pessoas com Máscara: Um sistema de Machine Learning para buscar e identificar pessoas pela imagem do rosto, mesmo quando estão usando máscaras de proteção.
O principal objetivo deste desafio é o alinhamento sequencial de nuvens de pontos 3D do dataset KITTI para estimar a trajetória de um veículo. O notebook icp_challenge/pipeline.ipynb
implementa um pipeline completo para resolver este problema.
- Carregamento de Dados: Nuvens de pontos sequenciais do dataset KITTI e dados de
ground_truth
(trajetória real). - Pré-processamento: Conversão das nuvens de pontos para o formato Open3D.
- Alinhamento com ICP: Aplicação do algoritmo Iterative Closest Point (ICP) para estimar a transformação entre nuvens de pontos consecutivas.
- Estimativa de Trajetória: Acumulação das transformações para reconstruir a trajetória do veículo.
- Avaliação e Visualização: Comparação da trajetória estimada com a
ground_truth
e visualização 3D dos resultados.
O resultado final é uma visualização 3D que mostra a trajetória real (ground_truth
), a trajetória estimada pelo pipeline e a sobreposição das nuvens de pontos alinhadas, permitindo uma avaliação completa da acurácia.
Este desafio foca na criação de um sistema de Machine Learning para identificar pessoas a partir de imagens de seus rostos, mesmo com a presença de máscaras faciais.
- Detecção Facial: Localização de rostos nas imagens de entrada usando algoritmos robustos.
- Extração de Features (Embeddings): Uso de uma Rede Neural Convolucional (CNN), FaceNet, para extrair um vetor de características único do rosto, focando em regiões não oclusas pela máscara (olhos, nariz, etc.).
- Criação de Banco de Dados: Armazenamento dos embeddings de um conjunto de imagens de referência.
- Busca por Similaridade: Ao receber uma nova imagem, o sistema extrai o embedding do rosto e o compara com o banco de dados usando métricas como a distância de cosseno para encontrar a correspondência mais próxima.
O sistema deve ser capaz de retornar a identidade correta de uma pessoa em uma imagem de consulta, mesmo que ela esteja usando uma máscara, com um alto grau de precisão.
- Python: Linguagem principal do projeto.
- Open3D / Trimesh: Para processamento de dados 3D no desafio de ICP.
- OpenCV: Para processamento de imagem e detecção facial.
- TensorFlow / PyTorch: Para carregar e utilizar os modelos de deep learning de reconhecimento facial.
- NumPy: Para manipulação eficiente de arrays e operações matemáticas.
- Matplotlib: Para plotar gráficos e visualizações.
- Jupyter Notebook: Para desenvolvimento interativo e documentação.
-
Clone o repositório:
git clone https://github.com/hugojardim/computer_vision_challenges.git cd computer_vision_challenges
-
Instale as dependências: É recomendado usar um ambiente virtual. As dependências específicas de cada desafio podem ser encontradas nos respectivos notebooks.
pip install open3d trimesh opencv-python tensorflow numpy matplotlib jupyter
Nota: A instalação de algumas bibliotecas pode variar dependendo do seu sistema operacional.
-
Execute os Notebooks: Navegue até a pasta do desafio desejado e execute o notebook principal.
# Para o desafio de ICP jupyter notebook icp_challenge/pipeline.ipynb # Para o desafio de reconhecimento facial (exemplo) # jupyter notebook face_mask_search/face_recognition.ipynb
Ou execute diretamente no Google Colab usando o badge no topo do README.
- Hugo Jardim - hugojardim