Visão computacional se diferencia um pouco do processamento de imagens.
Talvez alguém que não conheça a definição mais rigorosa de cada um desses termos pode acabar achando que é tudo mais ou menos a mesma coisa; quando, na realidade, a visão computacional é o termo mais abrangente, aquele que engloba tudo.
Entendendo Visão Computacional
Poderíamos definir a visão computacional como a arte de fazer o computador aprender a ver, a enxergar as coisas. E não somente enxergar, pois quando usamos essa expressão, não se fala apenas de se tirar uma foto de uma paisagem, mas entender o que é essa paisagem; quais objetos estão nela; perceber as diferenças de uma paisagem para outra da mesma forma que um olho humano funciona.
Elaborando um pouco melhor a frase, seria não somente ensinar o computador a ver, mas ensiná-lo a ver como um ser humano; como nós fazemos as classificações de diferentes objetos, figuras, paisagens e assim por diante.
A visão computacional é um pacotão que engloba tudo, desde a coleta da imagem, o seu pré-processamento, o tratamento da imagem, e, depois, tentar aprender relações entre as imagens, extrair informações, dar um resultado final.
Tudo isso está dentro de um pacote que chamamos de visão computacional, que possui grande importância na Inteligência Artificial. Isto significa que desde o primeiro momento em que pegamos uma imagem e tentamos classificá-la, já estamos fazendo visão computacional.
Classificação de imagens
É claro que a visão computacional vai muito além disso, muito além de se trabalhar com classificação somente. E o que é a classificação? É quando pegamos uma imagem e temos que classificar o que está nela.
Então, aprendemos a fazer isso para poder dizer: nesta imagem existe um gato; esta imagem é de um navio; de um avião. Isto é a classificação de imagens.
Detecção de objetos
Mas, além da classificação de imagens, podemos fazer a detecção de objetos dentro delas. E como se diferencia a detecção de objetos da classificação?
Enquanto na classificação apenas dizemos: “Essa figura é de um gato”, na detecção de objetos dizemos que não só a figura é de um gato, mas dizemos onde está o gato; podemos desenhar um retângulo, uma caixa em volta do gato que aparece na figura.
Assim estamos passando duas informações: não somente que existe um gato na figura, mas, também, dizemos onde ele está na figura.
Nesse caso, a rede neural tem que aprender duas coisas: não só a identificar as imagens específicas, como, também, a localizá-las, a ver onde elas estão posicionadas dentro da figura.
Esse é um trabalho dobrado que a rede neural vai ter que aprender, e isso é a detecção de objetos. Esse é um outro campo que também está dentro da visão computacional.
Segmentação de instância
Além da detecção de objetos, ainda podemos fazer a segmentação de instância. O que é isso?
A segmentação de instância vai um pouco além da detecção de objetos, e tira um contorno completo do objeto: não somente fazemos um retângulo ou quadrado em volta da figura que encontramos e identificamos, mas fazemos um recorte detalhado de todo o objeto, como se fôssemos recortá-lo com uma tesoura, em todo o contorno onde acreditamos que aquele objeto está, ou ainda em mais de um objeto na mesma figura.
Tanto a detecção de objetos como a segmentação de instância podem identificar vários objetos numa mesma imagem, em diferentes escalas, inclusive. E a segmentação de instância se diferencia porque ela faz essa máscara, esse contorno; não somente cria uma caixa, mas aprende a tirar um recorte exatamente em toda a volta de onde o objeto se encontra.
Esses são os três macro campos da visão computacional: aprender a classificar imagens, aprender a detectar objetos nas imagens e, também, tirar o contorno perfeito desses objetos nas imagens.
E o processamento de imagens?
Onde entra o processamento de imagens? O processamento de imagens é muito semelhante ao pré-processamento utilizado para criação de um modelo de machine learning.
O pré-processamento é uma das partes mais custosas e demoradas: pegamos um dataset, que pode estar bem cru, totalmente desformatado; então precisamos formatá-lo, ajustar os detalhes, até que ele fique no formato ideal para podermos aplicar o nosso algoritmo de machine learning.
Esse pré-processamento consiste em organizar todas as imagens, colocá-las na mesma escala, aplicar um filtro, etc. Nesse processo, enventualmente veremos que algumas das imagens não estão bem realçadas, e teremos que aumentar o seu realce, ou teremos que tirar alguma cor da imagem; transformá-las para a escala de cinza, etc.
Todas essas aplicações que faremos nas imagens antes de rodar os algoritmos de machine learning fazem parte da etapa de processamento de imagens.
Como aplicar visão computacional na prática
Algumas bibliotecas são fundamentais para várias manipulações de imagens. Por exemplo, se pegarmos um banco de imagens e precisarmos fazer algumas alterações nelas antes de poder usar em nossos algoritmos, poderemos utilizar bibliotecas que já foram construídas para isso.
Em nosso curso Redes Neurais, Deep Learning e Visão Computacional vemos em detalhes estas bibliotecas, bem como toda a teoria que envolve a visão computacional e a criação prática de modelos para classificação, detecção e contorno de objetos em imagens. Imperdível!
Leia também: