INF 2064 – Visão Computacional - 2022

INF 2064 – Visão Computacional - 2022


Esta página muda na medida que o curso avança.


Professor:

Marcelo Gattass
e-mail: mgattass no domínio puc-rio.br

URL do curso.

Canal YouTube do curso.

Canal do Slack do curso Vis22. Mande um e-mail para eu te mandar um convite.

Horário dos encontros:

4as feiras: 9-12h na sala Zoom

IMPORTANTE:

O curso está previsto para ser ministrado de forma remota. Ou seja, o horário acima é para cada um de nós estar na sala Zoom do Curso com as câmeras abertas num computador capaz de rodar Jupyter Notebooks.

Você vai receber indicações de vários vídeos que devem ser assistidos antes de cada aula. A maioria dos vídeos eu gravei para este curso e coloquei ou no YouTube ou no EAD. Vamos também utilizar vídeos de aulas de outros professores nacionais e estrangeiros (em inglês). Nas aulas pretendo discutir (os vídeos apresentam) os conceitos, tirar dúvidas e fazer parte dos trabalhos do curso. Neste modelo voce pode controlar a velocidade de apresentação dos vídeos e aprender os conceitos sozinho.

Vamos utilizar também de forma intensa dois canais de comunicação assíncrona: o EAD e o Slack. O Slack é ideal para discussão de dúvidas, uma vez que as respostas ficam registras.

Apresentação:

A Visão Computacional estuda algoritmos que capturaram informações a partir de imagens. Com a popularização das câmeras, dos exames médicos que produzem imagem, dos drones e outras formas de sensoriamento a Visão Computacional se tornou onipresente em nossa sociedade. Para que possamos desenvolver sistemas que envolvam essas imagens precisamos, principalmente: (a) entender a natureza e valores do dado capturado; (b) modelar a geometria envolvida na aquisição; e (c) saber como detectar, segmentar, analisar e rastrear os objetos de interesse.

Este curso busca introduzir os alunos aos assuntos mencionados acima além de apresentar a modelagem matemática e os algoritmos que os tratam.

Desde 2010, os algoritmos de aprendizado de máquina com redes neurais profundas tem conseguindo resultados cada vez melhores para resolver vários dos problemas de visão computacional e, consequentemente, os cursos de visão nas diversas universidades do mundos estão em permanente transformação. O estudo de vários algoritmos clássicos estão sendo substituídos por outros baseados em redes neurais. Este curso da PUC-Rio vem abordando cada vez mais as redes neurais profundas com ênfase naquelas que tratam de imagens e reconstrução 3D. Elas serão utilizadas em diversos assuntos do curso em conjunto com os algoritmos mais clássicos. Um conhecimento prévio de redes neurais é desejável, mas não é requerido. O mesmo pode ser dito da Computação Gráfica.

O curso aborda principalmente o imagens videos, fotos e imagens científicas do tipo imagens sísmicas e imagens médicas. Os algoritmos tratados buscam: detecção, análise e rastreamento de objetos em imagens. Um aspecto importante deste deste curso é a reconstrução de cenas 3D a partir de imagens.

Exemplo de objeto de estudo:

Para ilustrar o objetivo deste curso considere os vídeos que fiz de um jogo de basquete com duas câmeras comuns da área dos jornalistas o maracanazinho (ver os vídeos em camera_equerda e camera_direita). O desafio aqui consiste em capturar o movimento e as poses de cada jogador a partir dos vídeos.

Ementa:

Pré-requisitos:

Conhecimento básico de álgebra linear, algoritmos e programação Python.

Trabalhos do curso:

  1. O primeiro trabalho envolve cada um começar a programar ou usando o Google Colab ou instalando o ambiente de Python e Jupyter notebook na sua máquina. Neste trabalho também aproveitamos para apresentar os dados que vamos trabalhar. Veja o enunciado em T1.
  2. O segundo trabalho introduz o assunto de gradiente descendente e PyTorch Tensors. Veja o enunciado em T2.
  3. O terceiro trabalho introduz o assunto de redes neurais. Veja o enunciado em T3.
  4. O quarto trabalho discute Transformada de Fourier, Convolução e Correlação. Veja o enunciado em T4
  5. O quinto trabalho extende a rede para classificar imagens. Veja o enunciado em T5
  6. O sexto trabalho foca nas relações geométricas entre imagens e cena. Veja o enunciado em T6

Além destes trabalhos, cada aluno deve apresentar até a 4a aula um tema do projeto que deve desenvolver nos assuntos do curso. Este projeto deve ser apresentado no final do curso.

Avaliação:

T1 - 1.3 pontos
T2 - 1.3 pontos
T3 - 1.3 pontos
T4 - 1.3 pontos
T5 - 1.3 pontos
TF - 2.0 pontos
Participação - 1.5 pontos

Os trabalhos tem prazos e penalidades para atraso.
A participação implica em estar na aula, tendo visto os vídeos enviados, com câmera ligada e participando do curso. Perguntas e opiniões são bem vindas.

Em geral trabalhos são notebooks que vamos desenvolver uma parte em sala e após uma explicação do que falta fazer, vou pedir para você completar e enviar. Os trabalhos são individuais, mas vamos discuti-los livremente entre nós. A solução não deve ser segredo, mas não pode haver trabalhos iguais e, principalmente, com mesmo erro.

Ambiente de desenvolvimento para os trabalhos e acompanhamento das aulas:

Vamos utilizar Python 3.x com o jupyter notebook e/ou com o visual code. Inicialmente vamos utilizar as seguintes bibliotecas Numpy, Matplotlib e Pandas. Outras libs devem ser instaladas durante o curso, por isso não deixe de criar uma ambiente virtual no Conda. Não queremos atrapalhar os outros sistemas no seu computador.

O computador para acompanhar o curso não precisa ser especial. Placas de vídeo permitem que os algoritmos de rede neural e de computação gráfica fiquem muito mais rápidos, mas não são necessárias para o aprendizado. Podemos fazer todos os trabalhos sem elas. Eu estou preparando o curso num notebook, rodando os trabalhos sem GPU. Podemos também utilizar o

Bibliografia:

  1. "Computer Vision: Algorithms and Applications" by Richard Szeliski. (este livro tem uma versão gratuita na web.)
  2. Vídeos, artigos e tutoriais são disponibilizados durante o curso à medida que os assuntos são tratados.