ia_e_visao_computacional

Da imagem à inteligência: como o Deep Learning mudou a visão computacional

No artigo anterior, a máquina aprendeu a “ver”. Mas como ela aprende?

No artigo anterior vimos que uma imagem, para um computador, é apenas uma grande quantidade de números organizados em pixel, e que a relação entre esses números que formam contornos, texturas e padrões. Mas ficou uma questão em aberto: quem decidia quais desses padrões eram os importantes a procurar ? Como consegue distinguir, por exemplo, um gato de um cão, uma pessoa de um carro ou uma estrada de um edifício ? 

No início da visão computacional, muitos sistemas dependiam de características que precisavam ser definidas e selecionadas pelos próprios investigadores. Em vez de simplesmente fornecer imagens a um sistema e esperar que ele descobrisse sozinho o que era relevante, era comum desenvolver métodos para extrair determinadas características das imagens e utilizá-las posteriormente para realizar uma tarefa. 

A grande mudança acontece quando começamos a permitir que os próprios modelos aprendam essas representações a partir dos dados. 

É aqui que entra a Inteligência Artificial e, especialmente, o Deep Learning. 

Machine Learning: e se a máquina pudesse aprender com exemplos ?

Uma das ideias fundamentais da Inteligência Artificial moderna é o Machine Learning, ou aprendizagem automática. 

Numa abordagem tradicional, um programador precisa definir explicitamente as regras que o computador deve seguir para resolver determinados problemas. 

Imagine, por exemplo, que queremos desenvolver um sistema capaz de identificar gatos em fotografias. Poderíamos tentar definir manualmente características que consideramos relevantes: formato das orelhas, tamanho dos olhos, textura do pelo, formato do rosto, entre outras. 

O problema é que o mundo real é muito mais complexo do que um conjunto de regras. 

Um gato pode estar de frente, de lado, parcialmente escondido, numa fotografia escura, numa imagem de baixa qualidade ou em posições completamente diferentes. Definir manualmente todas as características possíveis seria extremamente difícil. 

O machine learning propõe uma abordagem diferente. 

Em vez de programar todas as regras, podemos fornecer ao sistema dados e exemplos e permitir que um modelo encontre relações nesses dados. 

O sistema deixa, assim, de depender exclusivamente de regras previamente definidas e passa a aprender padrões a partir dos exemplos fornecidos. 

Mas ainda falta resolver um problema importante:

Como fazer uma máquina aprender representações cada vez mais complexas ? 

Deep Learning: ensinar a máquina a aprender representações 

O deep learning, ou aprendizagem profunda, é uma abordagem baseada em redes neurais com múltiplas camadas de processamento. 

Em 2015, Yann LeCun, Yoshua Bengio e Geoffrey Hinton publicaram na revista Nature um dos artigos de revisão mais conhecidos sobre o tema. Os autores explicam que o Deep Learning permite que modelos compostos por várias camadas aprendam representações dos dados em diferentes níveis de abstração.

A ideia pode ser entendida através de um exemplo simples. 

Imagina novamente uma fotografia de um gato. 

Uma rede neural profunda pode começar por identificar padrões relativamente simples. À medida que a informação passa por diferentes camadas, essas representações podem tornar-se progressivamente mais complexas. 

É importante perceber que isto é uma simplificação. Uma rede neural real não funciona exatamente como uma sequência consciente de etapas em que uma camada “sabe” que está a procurar uma linha e outra “sabe” que está a procurar um olho.

O que acontece é que os parâmetros internos de rede são ajustados durante o processo de aprendizagem para que a representação produzida seja útil para a tarefa que está a ser  realizada. 

Segundo LeCun, Bengio e Hinton, o Deep Learning consegue descobrir estruturas complexas em grandes conjuntos de dados através do processo de aprendizagem dos parâmetros das redes.

É justamente esta capacidade de aprender representações que tornou o deep learning tão importante para a visão computacional. 

Mas por que as imagens combinam tão bem com as redes neurais ?

Imagens possuem uma característica importante: os píxeis não estão distribuídos aleatoriamente. 

Existe uma relação espacial entre eles. 

Os píxeis próximos uns dos outros podem formar bordas, texturas, contornos e outras estruturas visuais. No artigo anterior vimos justamente que um pixel isolado possui poucas informações sobre aquilo que está representado numa imagem; é a relação entre muitos píxeis que permite formar padrões visuais. 

Foi nesse contexto que as Redes Neurais Convolucionais, conhecidas como CNNs (Convolutional Neural Networks), se tornaram particularmente importantes. 

Uma CNN utiliza operações de convolução para analisar diferentes regiões da imagem e aprender padrões relevantes. 

De forma simplificada, podemos imaginar pequenos filtros percorrendo a imagem e respondendo a determinados padrões. Ao combinar essas operações em várias camadas, a rede consegue construir representações cada vez mais complexas. 

Em vez de depender exclusivamente de características escolhidas manualmente, o modelo pode aprender representações úteis diretamente a partir dos dados.

O  que realmente mudou com o Deep Learning ?

A principal transformação está na forma como os sistemas aprendem a representar uma imagem.

Em abordagens tradicionais de visão computacional, era comum desenvolver ou selecionar manualmente características que pudessem ser úteis para uma determinada tarefa.

Com o Deep Learning, tornou-se possível treinar modelos para que eles próprios aprendessem representações relevantes diretamente a partir dos dados.

Isso não significa que o ser humano deixou de participar do processo.

É necessário escolher os dados, definir a tarefa, preparar o treinamento, avaliar os resultados e decidir qual arquitetura e metodologia utilizar.

A diferença está no fato de que muitas das características utilizadas pelo modelo deixam de precisar ser especificadas uma a uma.

A máquina passa a aprender representações.

Essa é uma das razões pelas quais LeCun, Bengio e Hinton destacam o impacto do Deep Learning no reconhecimento de objetos e na detecção de objetos, entre outras áreas.

De reconhecer imagens para analisar cenas

A evolução das redes neurais não ficou limitada à pergunta: “O que aparece nesta imagem?”

A visão computacional passou a abordar problemas cada vez mais complexos.

Por exemplo, na classificação de imagens, o sistema procura atribuir uma categoria à imagem. Na classificação de imagens, o sistema procura atribuir uma categoria à imagem.  

Na deteção de objetos, além de identificar o que está presente, o sistema precisa de localizar onde o objeto está. 

Na segmentação, o objetivo passa a ser identificar quais regiões ou píxeis pertencem a cada elemento da imagem. 

Em sistemas de vídeo, a dimensão temporal acrescenta outra camada de complexidade: não basta analisar uma imagem isolada, é necessário considerar aquilo que acontece ao longo do tempo. 

Essa evolução abre caminho para sistemas capazes de analisar pessoas, veículos, animais, movimentos e acontecimentos em ambientes reais. 

Deep Learning não significa que a máquina realmente compreende uma imagem 

Com todos estes avanços, pode parecer que a máquina finalmente aprendeu a “ver” como um ser humano. 

Mas é importante ter cuidado com essa afirmação.

Uma rede neural pode aprender padrões extremamente complexos e apresentar resultados impressionantes em tarefas específicas. Isso não significa necessariamente que ela tenha uma compreensão do mundo equivalente à nossa. 

Um modelo treinado para classificar imagens aprende relações estatísticas presentes nos dados utilizados durante o treino.

Por isso, o desempenho do sistema depende fortemente dos dados, da tarefa e das condições em que o modelo será utilizado. 

Uma rede pode apresentar excelente desempenho em um determinado conjunto de imagens e ainda assim cometer erros quando encontra situações diferentes das observadas durante o treinamento.

Isso nos lembra de uma ideia importante:

Aprender padrões não é necessariamente o mesmo que compreender o mundo.

Então, o que mudou quando a máquina passou a aprender ?

No artigo anterior, vimos que uma máquina pode transformar uma imagem em dados, analisar padrões e extrair informação. 

Agora demos um passo além. 

Com o Machine Learning, tornou-se possível ensinar sistemas através de exemplos.

Com o Deep Learning, redes neurais profundas passaram a conseguir aprender representações cada vez mais complexas diretamente a partir de grandes quantidades de dados.

A evolução das CNNs, o crescimento dos conjuntos de dados, o aumento da capacidade computacional e os avanços nos métodos de treinamento contribuíram para uma transformação profunda na área.

O resultado foi uma visão computacional capaz de realizar tarefas que antes eram muito mais difíceis de automatizar, desde classificação e detecção de objetos até análise de imagens e vídeos.

Por isso, quando perguntamos “como o Deep Learning mudou a visão computacional?”, a resposta pode ser resumida da seguinte forma:

Antes, muitas vezes precisávamos dizer à máquina quais características procurar.

Com o Deep Learning, passamos a permitir que a própria máquina aprendesse representações relevantes a partir dos dados.

A máquina não passou a ver como um ser humano.

Ela passou a ter uma capacidade muito maior de aprender padrões visuais e transformar esses padrões em informação útil.

E essa mudança é uma das bases da visão computacional moderna.

Fontes e leituras recomendadas

Para aprofundar os conceitos apresentados neste artigo, foram consultadas algumas referências académicas e técnicas que ajudam a compreender tanto os fundamentos da Visão Computacional como os fundamentos de Deep Learning e Machine Learning.

  • LeCun, Y.; Bengio, Y.; Hinton, G. — Deep Learning. Nature, 2015.
    Artigo de revisão fundamental para compreender os princípios do Deep Learning e o seu impacto no reconhecimento visual e na deteção de objetos.
  • Krizhevsky, A.; Sutskever, I.; Hinton, G. E. — ImageNet Classification with Deep Convolutional Neural Networks. NeurIPS, 2012.
    Trabalho original que apresenta a AlexNet e os seus resultados no reconhecimento de imagens em grande escala.
  • Simonyan, K.; Zisserman, A. — Very Deep Convolutional Networks for Large-Scale Image Recognition. 2014.
    Trabalho que investiga o impacto do aumento da profundidade das redes convolucionais e apresenta a arquitetura VGG.
  • He, K.; Zhang, X.; Ren, S.; Sun, J. — Deep Residual Learning for Image Recognition. 2015.
    Trabalho que apresenta a ResNet e investiga o treinamento de redes neurais muito profundas.