Primeiras aulas do curso Visão Computacional: Processamento de imagens

Visão Computacional: Processamento de imagens

Conhecendo o Problema - Introdução

Boas vindas a mais um curso de Machine Learning!

Sou o instrutor Suayder Milhomem, e em nossas aulas veremos sobre pré-processamento e processamento de imagens para visão computacional.

Aprenderemos os conceitos necessários para o desenvolvimento de algoritmos de visão computacional. Mais especificamente, abordaremos o funcionamento de imagens digitais, a segmentação e filtros de frequência, veremos o que são os descritores e a classificação de imagens com a interpretação de resultados.

Nosso objetivo será a criação de um algoritmo de visão computacional que seja eficaz. Mas primeiro, é importante nos perguntarmos o que seria a visão computacional; costuma-se dizer que é a ciência e a tecnologia das máquinas que enxergam, pois são responsáveis por estudos e desenvolvimento de algoritmos que fornecem a capacidade para o computador processar e entender imagens, sendo justamente o que iremos fazer neste curso.

Em nosso projeto, desenvolveremos um algoritmo que auxilie o sistema de segurança de uma empresa, fazendo com que o computador possa distinguir entre imagens com pessoas e sem pessoas.

Começaremos a trabalhar com códigos e amostras para chegar em funções e métodos que nos permitam tratar as imagens, como GaussianBlur() e EqualizeHist(), por exemplo. Além de entender seus funcionamentos, veremos também sobre o algoritmo ORB de detecção de pontos chaves.

Desta forma, teremos algo concreto para utilizarmos em algoritmos de machine learning e outros.

Vamos lá!

Conhecendo o Problema - Como processamento de imagens pode nos ajudar

Veremos como utilizar a computação para melhorar a vigilância local para uma empresa que quer aumentar o nível de segurança.

Nosso trabalho será desenvolver um sistema computacional que contribua para este serviço. Sabemos que a organização do sistema atual funciona por meio de câmeras fixadas em pontos específicos, as quais produzem imagens mostradas em monitores que são supervisionadas por profissionais de segurança, responsáveis por manter o controle de fluxo e por garantir o bom funcionamento da empresa.

O objetivo é analisar as imagens gerada pelas câmeras, aumentar o nível de segurança do local e ajudar o supervisor dos equipamentos a trabalhar melhor.

A análise de imagens busca detectar a presença ou ausência de pessoas nas filmagens. Veremos como a computação pode auxiliar na verificação e diferenciação dos registros.

Para ilustrar, usaremos a imagem de um cachorro e a entenderemos como uma função matemática f(x,y) = i que a representa. Nesta operação, x e y são coordenadas em um plano cartesiano, o qual costuma começar da base para o topo e da esquerda para a direita.

A diferença é que esta orientação será invertida, ou seja, começaremos com o valor zero a partir do topo até a base da imagem, e da direita para a esquerda.

Cada posição contém um valor de uma intensidade i, o qual gira em torno de zero a 255 nos casos mais comuns para a representação dos tons de cinza; A cor preta geralmente corresponde a zero e o branco corresponde ao valor 255.

Para ilustrar melhor a ideia de uma imagem como função, teremos uma representação matemática através de um gráfico.

Neste gráfico, teremos a mesma imagem do cachorro plotada para observarmos que as partes mais uniformes correspondem ao fundo claro sem variação expressiva de tons, enquanto as partes com picos proeminentes e que se aproximam do valor de zero correspondem aos detalhes do animal com cores mais escuras.

É justamente a ideia da imagem como uma função que nos permite obter todo o aparato matemático para utilizarmos na análise, extraindo funções e informações relevantes, principalmente as operações matemáticas que envolvem álgebra linear e cálculo diferencial.

Todo esse conhecimento nos permitirá extrair dados da imagem para gerar sua descrição, como bordas, textura, formas e pontos chaves.

Olhando o exemplo da imagem do cachorro, poderíamos analisar os contornos, porém há pouco contraste para termos uma borda clara da figura, sendo necessário observar outros aspectos.

Serão essas operações que nos possibilitarão definir e descrever o conteúdo de uma imagem. Em nosso caso, buscaremos informações que caracterizem a presença ou ausência de uma pessoa nas filmagens.

Para detectar a figura de alguém, precisaremos de uma base de dados contendo imagens de pessoas, pois é necessário ter uma referência para extrair os parâmetros.

Há um database de pessoas disponível para baixar pelo Intituto Nacional de Pesquisa e Informática da França (INRIA) através deste link. Feito o download, extrairemos o arquivo compactado para acessar uma nova pasta que contém a base de dados.

Dentro desta, há dois arquivos principais que trabalharemos: "Test" e "Train". São esses diretórios que contém os dados de treinamento e algumas informações de anotações, mas neste primeiro momento não serão necessários. Em "Train", precisaremos da pasta "neg" que possui exemplos de imagens sem presença de pessoas, e "pos" com imagens contendo pessoas. Assim como temos no diretório de treinamento, o de teste também possui as mesmas pastas de "positivo" e "negativo".

Como cada diretório possui muitas imagens e não será possível trabalharmos com todas, selecionaremos algumas de ambas as pastas de positivo e negativo, tanto do treinamento quanto de teste.

Para agilizar nosso processo, geramos um script disponível no repositório do Github acessível neste link. Ao fazer o download do arquivo copiar_arquivos.py, basta executá-lo pois não precisaremos de nenhuma dependência, visto que se trata de um script em Phyton.

Ao abri-lo, copiaremos o caminho e o usaremos para acessar a pasta e então executar em Pyhton o arquivo pelo terminal. Feito isso, um novo diretório "dadosImagem" aparece no mesmo local da pasta do database.

Dentro deste novo diretório, há as duas pastas "Teste" e Treinamento", cada uma contendo "neg" e "pos". Para nossa validação do algoritmo, separamos 100 imagens de exemplos positivos e 100 de negativos para o teste, e 400 de cada para o treinamento.

Faremos o upload do database "dadosImagem" no Google Drive para facilitar nosso trabalho, pois utilizaremos o Google Colab para não precisarmos subir a base de dados constantemente.

Feito isso, poderemos configurar o nosso ambiente no Google Colab a seguir.

Conhecendo o Problema - Configurando o ambiente

Para este passo, já deveremos ter feito o upload da pasta "dadosImagem" para o Google Drive. Em seguida, abriremos o Google Colab. Uma dica é alterar os nomes das pastas "neg" e "pos" para "negativos" e "positivos" tanto na pasta "Teste" quanto na de "Treinamento".

O Google Colab nos dá a opção de fazer upload de arquivos, e para isso basta expandir a lista lateral, clicar em "Files" e depois em "Upload" após escolher o arquivo.

Porém, não é o que faremos pois precisaríamos fazer upload de nossas imagens constantemente, e como utilizaremos as pastas a partir do Google Drive, poderemos montá-las em nossa máquina virtual do Google Colab. Para isso, o sistema oferece um import de drive a partir de google.colab.

from google.colab import drive

Agora, procederemos como uma montagem de um disco em uma máquina. Na linha seguinte, escreveremos drive.mount() recebendo o início do conteúdo '/content/drive'. Para executar, acionaremos o atalho "Ctrl + Enter".

from google.colab import drive
drive.mount('/content/drive')

Feito isso, nos será retornado um link com a orientação para abrirmos a URL em um navegador e um campo para adicionar um código de autorização.

Neste endereço, o Google Colab pedirá permissão para acessar o conteúdo do Google Drive. Após permitir os termos apresentados, receberemos um código de autenticação que deve ser copiado e colado no campo do Google Colab.

Ao apertar a tecla "Enter", o sistema irá autenticar. Depois de sua finalização, poderemos acessar todos os nossos dados.

Se iniciarmos um comando com !, diremos ao Google Drive que usaremos alguns comandos Linux. Teremos o ls que nos permite listar o que está montado na máquina virtual.

O retorno será drive sample_data. Para verificar o que está dentro do Drive, adicionaremos drive à linha de comando e executaremos com "Ctrl + Enter".

!ls drive

O 'my Drive' já corresponde aos arquivos pessoais. Começaremos a acessar com drive/My\ Drive. A barra invertida \ indica que haverá um caractere especial, um espaço neste caso.

!ls drive /My\ Drive

Executando este comando, o sistema mostrará People_Detection que subimos para o Google Drive. Dentro desta pasta, teremos o arquivo do Google Colab que estamos trabalhando.

De volta ao editor, se listarmos o conteúdo desta última pasta, veremos justamente este arquivo que estamos trabalhando e o outro diretório "dadosImagens".

!ls drive /My\ Drive/People_Detection

Com isso, poderemos ter todo o acesso aos nossos arquivos. Reduziremos este caminho para chegarmos diretamente à pasta "dadosImagem", e assim não precisaremos digitar novamente sempre que quisermos acessá-la.

Para fazer a redução, utilizaremos um comando ln proveniente do Linux, mas que funciona no Google Colab se utilizarmos !. Este comando gera um link simbólico com a flag -s.

Em seguida, copiaremos o caminho anterior e colaremos na linha seguinte. Por fim, criaremos um link dentro de /content com um nome genérico /Aula.

!ln -s drive/My\ Drive/People_Detection/dadosImagem /content/aula

Este link de nome Aula nos direcionará diretamente para dadosImagem. Ao executar com "Ctrl + Enter" mais de uma vez, o sistema apresenta uma falha pois já criamos o link. Se listarmos novamente com !ls Aula, haveria um conflito pois já o temos.

Se listarmos !ls Aula/Teste, veremos as pastas de negativos e positivos. Agora, já temos todo o ambiente configurado e poderemos realmente partir para o processamento das imagens.

Sobre o curso Visão Computacional: Processamento de imagens

O curso Visão Computacional: Processamento de imagens possui 251 minutos de vídeos, em um total de 60 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana