O que diferencia bons projetos de Visão Computacional para portfólio de notebooks que apenas executam código? A resposta raramente está no tamanho do modelo. Ela aparece na clareza do problema, nas decisões registradas, na qualidade da avaliação e na possibilidade de outra pessoa reproduzir o resultado.
Um portfólio consistente também não precisa começar por redes neurais profundas. Processamento de imagens, geometria projetiva, classificação, detecção, representação vetorial e reconstrução 3D formam uma progressão mais instrutiva. Cada etapa acrescenta uma nova classe de problema sem ocultar os fundamentos da anterior.
Os sete projetos deste artigo foram organizados com essa lógica. Você pode começar com uma métrica de nitidez, avançar para sistemas que reconhecem pessoas e movimentos e terminar reconstruindo uma cena em três dimensões. O objetivo não é acumular sete notebooks. É produzir evidências verificáveis de que você sabe formular, implementar, medir e comunicar uma solução.
Inscreva-se na Newsletter
Receba artigos sobre Data Science e IA direto no seu email.
✓ Inscrito com sucesso!
O que bons projetos de Visão Computacional precisam demonstrar?
Um repositório técnico deve permitir que um avaliador responda a cinco perguntas sem depender de uma apresentação oral:
- Qual problema está sendo resolvido? A entrada, a saída e o usuário da solução precisam ser inequívocos.
- Por que essa abordagem foi escolhida? Bibliotecas e modelos devem aparecer como decisões justificadas, não como uma coleção de ferramentas.
- Como a qualidade foi medida? Toda solução precisa de um critério que possa revelar tanto acertos quanto falhas.
- Quais são os limites? Casos difíceis, mudança de domínio, custo computacional e hipóteses de captura fazem parte do projeto.
- Outra pessoa consegue reproduzir o resultado? Ambiente, dados, parâmetros, versões e instruções de execução devem estar registrados.
O vídeo incorporado nesta página mostra um primeiro projeto com OpenCV e PyTorch e ajuda a visualizar essa transição entre conceito, implementação e resultado. Os projetos abaixo ampliam o percurso para diferentes famílias de problemas.
1. Detector de desfoque e qualidade de imagens
Um sistema de controle de qualidade visual é um bom primeiro projeto porque transforma um conceito matemático simples em uma decisão operacional. A entrada pode ser uma pasta de fotografias, frames de vídeo ou imagens recebidas por uma API. A saída não deve ser apenas “nítida” ou “desfocada”: o projeto pode produzir um escore, um limiar calibrado e um relatório com os casos rejeitados.
Uma implementação inicial usa a variância do Laplaciano. O operador Laplaciano documentado pelo OpenCV responde a variações rápidas de intensidade, associadas a bordas e detalhes finos. Quando o desfoque reduz essas variações, a dispersão da resposta tende a cair. Outra abordagem mede a energia de altas frequências no espectro de Fourier.
O ponto mais importante do projeto não é calcular uma dessas métricas. É demonstrar que não existe um limiar universal de nitidez. Uma parede lisa, uma imagem subexposta e uma fotografia com muito ruído podem confundir a heurística por motivos distintos. Por isso, o conjunto de avaliação deve combinar imagens nítidas, desfoque gaussiano, desfoque de movimento, baixo contraste e ruído.
- Competências demonstradas: escala de cinza, filtragem, derivadas, frequência espacial, calibração de limiar e análise de erros.
- Dados e ferramentas: fotografias próprias, versões degradadas de forma controlada, NumPy, OpenCV, pandas e matplotlib.
- Entregável verificável: relatório com distribuição dos escores, matriz de confusão para um limiar escolhido e uma galeria de falsos positivos e falsos negativos.
- Erro comum: selecionar o limiar nas mesmas imagens usadas para apresentar o resultado.
- Evolução possível: aplicar a métrica por regiões e produzir um mapa de nitidez, em vez de atribuir um único valor à imagem inteira.
No repositório, separe a geração das degradações, o cálculo das métricas e a avaliação. Essa divisão permite repetir o experimento com outra câmera ou outro tipo de cena sem reescrever o pipeline.
2. Scanner de documentos com transformação de perspectiva
O scanner inteligente acrescenta geometria ao processamento de imagens. A aplicação recebe uma fotografia inclinada, identifica o contorno do documento, ordena seus quatro vértices e aplica uma transformação de perspectiva para produzir uma vista retificada. Depois, contraste local, remoção de sombras e binarização podem aproximar a saída de um documento digitalizado.
Esse projeto demonstra uma ideia importante: uma imagem não é apenas uma matriz de intensidades. Ela também é resultado de uma projeção. As funções getPerspectiveTransform e warpPerspective do módulo de transformações geométricas do OpenCV permitem mapear o quadrilátero observado para um retângulo de destino.
Uma demonstração convincente precisa ir além de uma folha branca fotografada sobre uma mesa escura. Inclua fundos com textura, iluminação desigual, sombras, dobras, documentos parcialmente fora do quadro e cenas em que mais de um contorno compete com a página.
- Competências demonstradas: detecção de bordas, morfologia matemática, contornos, homografia, ordenação de pontos e melhoria de contraste.
- Dados e ferramentas: fotografias próprias capturadas por celular, OpenCV e uma pequena interface em Streamlit ou Gradio.
- Entregável verificável: comparação lado a lado entre entrada, contorno detectado, imagem retificada e versão final binarizada.
- Critério de qualidade: erro dos quatro cantos em relação a anotações manuais, proporção de documentos detectados e legibilidade da saída.
- Erro comum: escolher sempre o maior contorno e presumir que ele corresponde ao documento.
Para torná-lo reprodutível, inclua um diretório de exemplos, um arquivo com os vértices de referência e testes para a ordenação dos pontos. Uma função que troca canto superior esquerdo e inferior esquerdo pode produzir uma saída plausível em algumas imagens e completamente invertida em outras.
3. Classificador de imagens com transfer learning
O terceiro projeto introduz aprendizado supervisionado sem exigir o custo de treinar uma rede profunda do zero. Você escolhe um problema de classificação com poucas categorias, parte de um backbone pré-treinado e compara dois regimes: usar o backbone como extrator fixo, treinando apenas a nova cabeça, e fazer fine-tuning de parte ou de todos os pesos.
O tutorial oficial de transfer learning do PyTorch apresenta precisamente esses dois cenários. A estrutura é conhecida; o valor do portfólio virá da sua formulação experimental. Escolha classes com uma justificativa real, registre como os dados foram divididos e investigue quais imagens confundem o modelo.
Evite um conjunto em que fotografias quase idênticas aparecem no treino e no teste. Quando várias imagens vêm do mesmo vídeo, produto ou indivíduo, a divisão deve ser feita por grupo. Caso contrário, a métrica pode refletir memorização de fundo, iluminação ou identidade.
- Competências demonstradas: preparação de dados, data augmentation, transfer learning, função de perda, regularização e avaliação por classe.
- Dados e ferramentas: um conjunto próprio ou uma base pública pequena, PyTorch, torchvision e TensorBoard.
- Entregável verificável: curvas de treino e validação, matriz de confusão, exemplos de maior incerteza e comparação entre backbone congelado e fine-tuning.
- Critério de qualidade: desempenho em um teste realmente separado e análise de precisão e recall por classe.
- Erro comum: publicar apenas a acurácia final, sem mostrar desbalanceamento, vazamento de dados ou distribuição dos erros.
O repositório deve guardar a configuração do experimento, a semente aleatória, a versão dos pesos e o melhor checkpoint. Um script de inferência sobre uma imagem externa demonstra que o projeto não depende do estado interno do notebook.
4. Detecção de pessoas em imagens térmicas
Até este ponto, a entrada ainda se aproxima das fotografias usadas no pré-treinamento de muitos modelos. A detecção térmica introduz uma mudança de domínio: o sensor registra radiação infravermelha, a distribuição de intensidades muda e a aparência de uma pessoa pode ser muito diferente daquela encontrada em bases RGB convencionais.
O conjunto Teledyne FLIR ADAS oferece frames térmicos e visíveis anotados para detecção de objetos. Você pode restringir o experimento à classe person, estabelecer um detector generalista como baseline e medir o efeito da adaptação ao domínio térmico.
O valor técnico está na comparação controlada. Mantenha a arquitetura e altere os pesos; ou mantenha os pesos e compare resoluções de entrada. Inspecione separadamente pessoas pequenas, oclusões, baixo contraste térmico e cenas noturnas. O artigo sobre YOLO em imagens térmicas mostra como dados representativos alteram a capacidade do detector de reconhecer a mesma classe em outro sensor e outra perspectiva.
- Competências demonstradas: detecção de objetos, formato COCO ou YOLO, fine-tuning, mudança de domínio e avaliação por IoU.
- Dados e ferramentas: FLIR ADAS, Ultralytics YOLO ou torchvision detection, OpenCV e FiftyOne para inspeção.
- Entregável verificável: comparação entre modelo generalista e adaptado, curvas de precisão–recall e uma galeria de erros por condição.
- Critério de qualidade: mAP em teste separado, recall de pessoas pequenas e latência no hardware escolhido.
- Erro comum: atribuir todo ganho ao modelo sem verificar se as divisões contêm frames vizinhos da mesma sequência.
Inclua um arquivo de configuração dos dados, o procedimento de conversão das anotações e um comando único de avaliação. Pesos grandes podem ficar em uma página de release, acompanhados de checksum, em vez de serem adicionados diretamente ao histórico do Git.
5. Análise de movimento com pose estimation
Detectar uma pessoa informa onde ela está. Estimar pose descreve como partes do corpo se organizam ao longo do tempo. O projeto pode analisar um exercício, um gesto esportivo ou uma sequência de reabilitação, desde que o objetivo seja delimitado e não apresentado como diagnóstico médico.
O MediaPipe Pose Landmarker oferece landmarks corporais para imagens, vídeos e fluxo ao vivo. A ferramenta retorna pontos em coordenadas normalizadas da imagem e em coordenadas tridimensionais de mundo. Para analisar movimento, é preciso escolher o referencial adequado, filtrar as trajetórias, calcular ângulos e definir eventos temporais.
Um contador de repetições, por exemplo, não deve incrementar a cada frame em que um ângulo atravessa um limiar. Ele precisa de uma máquina de estados que reconheça uma transição completa e resista a oscilações próximas da fronteira. Vídeos em diferentes distâncias, velocidades e pontos de vista ajudam a revelar se a regra aprendeu o movimento ou apenas uma gravação.
- Competências demonstradas: landmarks, geometria vetorial, processamento temporal, suavização de sinais e máquinas de estados.
- Dados e ferramentas: vídeos próprios com consentimento, MediaPipe, OpenCV, NumPy e SciPy.
- Entregável verificável: vídeo anotado, série temporal dos ângulos e relatório de contagem ou fases do movimento.
- Critério de qualidade: erro de contagem por sequência, estabilidade dos ângulos e robustez a oclusões breves.
- Erro comum: usar coordenadas de imagem sem compensar enquadramento, referencial corporal ou movimento da câmera.
Separe a extração dos landmarks da lógica da aplicação. Salvar as coordenadas em um formato intermediário permite testar novas regras sem executar novamente o modelo de pose em todos os vídeos.
6. Sistema de busca visual por similaridade
Um classificador responde a uma lista fechada de categorias. Uma busca visual responde a outra pergunta: quais itens do catálogo se parecem mais com esta imagem? O projeto combina um encoder visual, um índice vetorial e uma interface que exibe os vizinhos recuperados.
Modelos como o CLIP aprendem representações visuais alinhadas à linguagem. Para uma primeira versão, você pode usar apenas o encoder de imagem, normalizar os embeddings e comparar os vetores por similaridade cosseno. O Faiss fornece índices para busca por distância L2 ou produto interno, com diferentes compromissos entre velocidade, memória e aproximação.
Comece com um catálogo pequeno de produtos, obras, espécies ou componentes industriais. Defina o que significa “similar” nesse domínio. Cor, forma, função e identidade são critérios diferentes; o encoder pode privilegiar um deles sem que isso esteja explícito na interface.
- Competências demonstradas: embeddings, normalização vetorial, similaridade cosseno, indexação e avaliação de recuperação.
- Dados e ferramentas: catálogo próprio ou público, CLIP ou DINOv2, Faiss e uma interface web simples.
- Entregável verificável: busca por upload, grade dos resultados, tempo de consulta e comparação com um baseline de histograma de cores.
- Critério de qualidade: precision@k, recall@k ou avaliação humana com consultas e relevâncias registradas.
- Erro comum: mostrar apenas consultas favoráveis e não definir previamente o que conta como resultado relevante.
Versione o encoder e o índice. Registre a associação entre cada vetor e seu item original. Um índice sem metadados, construído em uma ordem que não pode ser repetida, deixa de ser um sistema reproduzível mesmo que a demonstração visual pareça correta.
7. Reconstrução 3D de objetos a partir de fotografias
O projeto final integra detecção de features, correspondências entre imagens, geometria multiview, estimação de pose e geração de uma nuvem de pontos. A captura pode ser feita com um celular ao redor de um objeto ou de uma pequena estrutura, desde que haja sobreposição suficiente, textura e variação de ponto de vista.
No fluxo documentado pelo COLMAP, o Structure from Motion recupera poses de câmera e uma reconstrução esparsa; o Multi-View Stereo usa essa base para produzir uma representação densa. Isso torna o projeto particularmente valioso para o portfólio: a saída final é visual, mas depende de uma cadeia extensa de hipóteses geométricas.
Um vídeo orbitando um modelo 3D é apenas uma parte da entrega. Mostre quantas imagens foram registradas, como as câmeras ficaram distribuídas, onde as correspondências falharam e qual erro de reprojeção foi obtido. O artigo sobre feature detection em reconstrução 3D aprofunda a etapa que conecta observações 2D antes da triangulação.
- Competências demonstradas: calibração, features locais, matching, geometria epipolar, SfM, MVS e análise de reconstrução.
- Dados e ferramentas: fotografias próprias, COLMAP, OpenCV, Open3D ou MeshLab.
- Entregável verificável: poses estimadas, nuvem de pontos, modelo denso e vídeo de inspeção do resultado.
- Critério de qualidade: proporção de imagens registradas, erro de reprojeção, cobertura da superfície e inspeção de regiões duplicadas ou ausentes.
- Erro comum: capturar superfícies lisas, reflexivas ou repetitivas e concluir que aumentar o número de fotografias resolverá a ausência de correspondências confiáveis.
Preserve as imagens originais, os parâmetros da câmera, os comandos do COLMAP e um arquivo que descreva a sequência de execução. O resultado final deve poder ser reconstruído a partir dos dados brutos, não apenas baixado como um arquivo pronto.
Como transformar qualquer notebook em um projeto reprodutível?
Um notebook é útil para investigar hipóteses. Um projeto de portfólio precisa acrescentar estrutura ao experimento. A transição pode ser feita com um conjunto pequeno de decisões:
- Escreva um README orientado ao problema. Comece pela aplicação, pelos dados e pelo resultado, não pela lista de bibliotecas.
- Separe ambiente, dados e código. Registre dependências e mantenha caminhos configuráveis.
- Crie uma avaliação repetível. Um comando deve recalcular as métricas a partir do conjunto de teste.
- Preserve exemplos de falha. Eles demonstram capacidade de diagnóstico e delimitam o uso responsável da solução.
- Inclua uma forma simples de inferência. Pode ser um script, uma API ou uma interface mínima.
- Documente decisões. Resolução, limiar, modelo, divisão dos dados e custo computacional precisam de justificativa.
- Declare licença e origem dos dados. Portfólio público não elimina obrigações de uso, atribuição e privacidade.
Uma estrutura possível é:
projeto/ ├── README.md ├── pyproject.toml ├── configs/ ├── data/README.md ├── notebooks/ ├── src/ ├── tests/ ├── reports/ └── scripts/
O notebook continua no repositório, mas deixa de ser o único ponto de entrada. Código reutilizável vai para src/; configurações saem das células; métricas e figuras são geradas por scripts; e o README explica como verificar o resultado.
Qual projeto deve vir primeiro?
Escolha o projeto cuja dificuldade técnica esteja um passo acima do que você já domina, não aquele com a arquitetura mais recente. Se você ainda não trabalhou com OpenCV, comece pelo detector de desfoque ou pelo scanner. Se já treinou classificadores, use detecção térmica para enfrentar mudança de domínio. Se domina modelos 2D, a reconstrução 3D oferece uma progressão natural para geometria multiview.
O conjunto também deve contar uma história. Três projetos bem documentados podem demonstrar mais maturidade do que sete repositórios incompletos. Uma sequência particularmente equilibrada seria:
- scanner de documentos, para demonstrar processamento e geometria de imagens;
- detecção de pessoas em imagens térmicas, para demonstrar Deep Learning e adaptação de domínio;
- reconstrução 3D, para demonstrar integração entre features, câmeras e estrutura espacial.

Três níveis de complexidade em um mesmo portfólio: geometria de imagens, detecção em dados térmicos e reconstrução 3D.
Esses são os três níveis representados no infográfico deste artigo. Eles não esgotam a área; funcionam como marcos de uma progressão técnica legível.
Takeaways
- Portfólio é evidência, não inventário. Problema, decisão, avaliação e reprodutibilidade importam mais do que o número de notebooks.
- Projetos clássicos continuam relevantes. Nitidez, contornos e homografias revelam fundamentos que modelos prontos podem ocultar.
- A dificuldade deve crescer por competências. Processamento 2D, geometria, aprendizado supervisionado, detecção, representação e 3D formam uma progressão coerente.
- Métricas sem análise de erros são incompletas. Todo projeto deve mostrar onde funciona e onde falha.
- Dados fazem parte da solução. Divisão correta, mudança de domínio, licença e qualidade da captura são decisões técnicas.
- O notebook é um laboratório, não o produto final. Scripts, configurações, testes e documentação transformam o experimento em projeto.
Se você quer organizar essa progressão dentro de uma formação estruturada, entre na lista de espera da Pós-Graduação em Visão Computacional e Deep Learning da Star Research Institute.










