O que é visão computacional?

Imagem de: O que é visão computacional?

A tecnologia de visão computacional permite os computadores detectarem pessoas e objetos em imagens, se você nomear os objetos na figura abaixo, você provavelmente criaria uma lista de palavras como "toalha de mesa, cesta, grama, menino, menina, homem, mulher, tomate, alface, pratos descartáveis..." sem pensar duas vezes.

Agora, se eu lhe dissesse para descrever a figura abaixo, você provavelmente diria: "É uma figura de um piquenique em família" novamente sem pensar duas vezes.

Piquenique em Família
Família em piquenique juntos

As tarefas de descrever e identificar objetos em imagens são muito fáceis para qualquer pessoa com inteligência abaixo da média com idade acima de seis ou sete anos. No entanto, em segundo plano, ocorre um processo muito complicado.

A visão humana não é só uma peça muito complexa da tecnologia orgânica que envolve nossos olhos e córtex visual, Mas também leva em conta nossos modelos mentais de objetos, nossa compreensão abstrata de conceitos e nossas experiências pessoais através de bilhões e trilhões de interações que fazemos com o mundo durante nossas experiências de vida.

Um equipamento digital pode capturar imagens com detalhes e resoluções que ultrapassam em muito o sistema de visão humana, os computadores também podem detectar e medir a diferença entre cores com uma precisão muito alta.

Mas entender o conteúdo dessas imagens é um problema com o qual os computadores lutam há décadas. Para um computador, a imagem acima é uma matriz de pixels ou valores numéricos que representam cores.

A visão por computador é o campo da ciência da computação que se concentra em replicar partes da complexidade do sistema de visão humana e em permitir que os computadores identifiquem e processem objetos em imagens e vídeos da mesma maneira que os humanos.

Até recentemente, a visão computacional funcionava apenas em capacidade limitada, com os avanços da inteligência artificial e às inovações no aprendizado profundo e nas redes neurais, o campo conseguiu dar grandes saltos nos últimos anos superando os humanos em algumas tarefas relacionadas à detecção e identificação de objetos.

Aplicações da visão computacional

Reconhecimento Facil por Visão Computacional
Detecção de rosto e reconhecimento do homem por visão computacional. Conceito de aprendizado de máquina.

A importância da visão computacional está nos problemas que ela pode resolver, é uma das principais tecnologias que permite o mundo digital interagir com o mundo físico.

A visão computacional permite que carros autônomos compreendam o ambiente por meio de câmeras que capturam vídeo de diferentes ângulos ao redor do carro e o alimentam com o software de visão computacional.

As imagens são processadas em tempo real para encontrar as extremidades das estradas, ler sinais de trânsito, detectar outros carros, objetos e pedestres.

O carro autônomo pode então dirigir-se pelas ruas e rodovias, evitar bater nos obstáculos e por fim, conduzir com segurança seus passageiros até o destino.

A visão computacional também desempenha um papel importante nos aplicativos de reconhecimento facial, a tecnologia que permite os computadores combinar imagens do rosto das pessoas com suas identidades.

Os algoritmos de visão computacional detectam recursos faciais nas imagens e os comparam com bancos de dados de perfis de rosto, os dispositivos usam o reconhecimento facial para autenticar as identidades de seus proprietários.

Assim como os aplicativos de mídia social usam o reconhecimento facial para detectar e marcar usuários em fotos, as agências policiais também contam com a tecnologia de reconhecimento facial para identificar criminosos em feeds de vídeo.

A visão por computador também desempenha um papel importante na realidade aumentada e mista, a tecnologia que permite que dispositivos de computação como smartphones, tablets e óculos inteligentes sobreponham e incorporem objetos virtuais em imagens do mundo realçando a visão computacional.

O equipamento AR detecta objetos no mundo real para determinar os locais na tela de um dispositivo colocando um objeto virtual.

Por exemplo, algoritmos de visão computacional podem ajudar aplicativos de RA a detectar planos como mesas, paredes e pisos, uma parte muito importante para estabelecer profundidade e dimensões para colocar objetos virtuais no mundo físico.

Bibliotecas de fotos on-line como o Google Fotos usam a visão computacional para detectar objetos e classificar automaticamente suas imagens pelo tipo de conteúdo que elas contêm.

Isso pode economizar muito tempo que eventualmente você gastaria adicionando tags e descrições às suas fotos, a visão por computador também pode ajudar a anotar o conteúdo dos vídeos e permitir que os usuários pesquisem horas de vídeo digitando o tipo de conteúdo que estão procurando, em vez de procurar manualmente vídeos inteiros.

A visão computacional também tem sido uma parte importante nos avanços tecnológicos da saúde, os algoritmos de visão computacional podem ajudar a automatizar tarefas como detectar moles cancerígenas em imagens da pele ou encontrar sintomas nas radiografias e ressonâncias magnéticas.

A visão computacional possui outras aplicações diferenciadas, por exemplo, imagine uma câmera de segurança doméstica inteligente que está constantemente enviando vídeo de sua casa para a nuvem e permite que você analise remotamente as imagens.

Usando a visão computacional, você pode configurar o aplicativo em nuvem para notificá-lo automaticamente se algo anormal acontecer, como um intruso entrando em sua casa ou algo pegando fogo dentro da casa.

Isso pode poupar muito tempo, garantindo um olhar atento constante para sua casa. Os militares dos EUA já estão usando a visão computacional para analisar e sinalizar o conteúdo de vídeo capturado por câmeras e drones, embora a prática já tenha se tornado fonte de muitas controvérsias.

Dando um passo adiante no exemplo acima, você pode configurar o aplicativo de segurança para armazenar apenas imagens que o algoritmo de visão por computador sinalizou como anormal.

Isso ajudará você a economizar muito espaço de armazenamento na nuvem, porque em quase todos os casos, a maioria das imagens capturadas pela câmera de segurança é benigna e não precisa ser revisada.

Além disso, se você puder implantar a visão de computador na borda da própria câmera de segurança, poderá instruí-la a enviar apenas seu feed de vídeo para a nuvem se tiver sinalizado seu conteúdo como necessitando de mais análises e investigações. Isso permitirá que você economize largura de banda da rede enviando apenas o necessário para a nuvem.

A evolução da visão computacional

Redes neurais de aprendizagem profunda

Antes do advento do aprendizado profundo, as tarefas que a visão por computador podia realizar eram muito limitadas e exigiam muita codificação e esforço manual de desenvolvedores e operadores humanos.

Por exemplo, se você quiser realizar o reconhecimento facial, precisará executar as seguintes etapas:

  • Criar um banco de dados: Você precisaria capturar imagens individuais de todos os assuntos que desejaria rastrear em um formato específico.
  • Anotar imagens: Para cada imagem individual, você teria que inserir vários pontos de dados importantes, como distância entre os olhos, largura da ponte nasal, distância entre lábio superior e nariz e dezenas de outras medidas que definem as características exclusivas de cada pessoa.
  • Capturar novas imagens: Em seguida, você precisará capturar novas imagens, seja de fotografias ou de conteúdo de vídeo, e então você passaria pelo processo de medição novamente, marcando os pontos principais da imagem, você também teria que levar em consideração o ângulo em que a imagem foi tirada.

Depois de todo esse trabalho manual, o aplicativo finalmente conseguiria comparar as medidas na nova imagem com as armazenadas em seu banco de dados e informar se correspondia a algum dos perfis que estava rastreando.

No entanto, após feito isso, haveria muito pouca automação envolvida e a maior parte do trabalho estava sendo feita manualmente, e a margem de erro ainda pode ser alta.

O aprendizado de máquina forneceu uma abordagem diferente para resolver problemas de visão computacional, os desenvolvedores não precisam mais codificar manualmente todas as regras em seus aplicativos de visão.

Em vez disso, eles programam recursos ou aplicativos menores que podem detectar padrões específicos nas imagens usando um algoritmo de aprendizado estatístico como regressão linear, regressão logística, árvores de decisão ou máquinas de vetores de suporte (SVM) para detectar padrões, classificar imagens e detectar objetos neles.

O aprendizado de máquina ajudou a resolver muitos problemas historicamente desafiadores para as ferramentas e abordagens clássicas de desenvolvimento de software.

Por exemplo, anos atrás, os engenheiros de aprendizado de máquina foram capazes de criar um software que poderia prever as janelas de sobrevivência ao câncer de mama melhor do que os especialistas humanos.

No entanto, como explica o especialista em IA, Jeremy Howard, a construção dos recursos do software exigiu os esforços de dezenas de engenheiros e especialistas em câncer de mama e levou muito tempo para ser desenvolvido.

Detecção de câncer de mama por aprendizado de máquina clássico
Detecção de câncer de mama por aprendizado de máquina clássico

As abordagens clássicas de aprendizado de máquina envolveram muitas etapas complicadas e exigiram a colaboração de dezenas de especialistas, matemáticos e programadores.

O aprendizado profundo forneceu uma abordagem fundamentalmente diferente para o aprendizado de máquina, dependendo de redes neurais, função de uso geral que pode resolver qualquer problema representável por meio de exemplos.

Quando você fornece uma rede neural com muitos exemplos rotulados de um tipo específico de dados, ela pode extrair padrões comuns entre esses exemplos e transformá-los em uma equação matemática que ajudará a classificar futuras informações.

Por exemplo, a criação de um aplicativo de reconhecimento facial com aprendizado profundo exige apenas que você desenvolva ou escolha um algoritmo pré-construído e treinado com exemplos das faces das pessoas que ele deve detectar.

Com estes exemplos, a rede neural poderá detectar rostos sem mais instruções sobre recursos ou medidas. O aprendizado profundo é um método muito eficaz para realizar a visão por computador.

Na maioria dos casos, a criação de um bom algoritmo de aprendizado profundo resume-se a reunir uma grande quantidade de dados de treinamento rotulados e ajustar parâmetros como o tipo e o número de camadas de redes neurais e épocas de treinamento.

Comparado aos tipos anteriores de aprendizado de máquina, o aprendizado profundo é mais fácil e rápido de desenvolver e implantar.

A maioria das aplicações atuais de visão computacional, como detecção de câncer, carros autônomos e reconhecimento facial, utiliza aprendizado profundo.

O aprendizado profundo e as redes neurais profundas passaram do campo conceitual para aplicativos práticos, graças à disponibilidade e aos avanços nos recursos de hardware e de computação em nuvem.

No entanto, algoritmos de aprendizado profundo têm seus próprios limites, sendo o mais notável deles a falta de transparência e interpretabilidade.

Os limites da visão computacional

Graças ao aprendizado profundo, a visão por computador conseguiu resolver o primeiro dos dois problemas mencionados no início deste artigo.

Isso significa que de fato, a detecção e classificação de objetos em imagens e vídeos, a aprendizagem profunda conseguiu superar o desempenho humano na classificação de imagens.

No entanto, apesar da nomenclatura que lembra a inteligência humana, as redes neurais funcionam de uma maneira fundamentalmente diferente da mente humana.

O sistema visual humano depende da identificação de objetos com base em um modelo 3D que construímos em nossas mentes, também podemos transferir conhecimento de um domínio para outro.

Por exemplo, se virmos um novo animal pela primeira vez, podemos identificar rapidamente algumas partes do corpo encontradas na maioria dos animais, como nariz, orelhas, cauda, pernas e etc.

As redes neurais profundas não têm noção de tais conceitos e desenvolvem seu conhecimento de cada classe de dados individualmente, no fundo, as redes neurais são modelos estatísticos que comparam lotes de pixels, de maneiras muito complexas.

É por isso que elas precisam ver muitos exemplos antes de poderem desenvolver as bases necessárias para reconhecer cada objeto, assim, as redes neurais podem cometer erros estúpidos e perigosos quando não treinados adequadamente.

Mas a visão por computador está realmente lutando para entender o contexto das imagens e a relação entre os objetos que eles veem, nós, humanos, podemos dizer rapidamente, sem pensar duas vezes, que a imagem no início do artigo é a de um piquenique em família.

Isso porque temos uma compreensão dos conceitos abstratos que ela representa, sabemos o que é uma família, sabemos que um trecho de grama é um lugar agradável para se estar.

Sabemos que as pessoas costumam comer nas mesas, e um evento ao ar livre, sentado no chão em volta de uma toalha de mesa, é provavelmente um evento de lazer, especialmente quando todas as pessoas na foto estão felizes.

Tudo isso e inúmeras outras pequenas experiências que tivemos em nossas vidas rapidamente passam por nossas mentes quando vemos a foto, da mesma forma, se eu falar sobre algo incomum.

Para um algoritmo de visão computacional, as fotos ainda são matrizes de pixels coloridos que podem ser mapeados estatisticamente para determinadas descrições.

A menos que você treine especificamente uma rede neural em fotos de piqueniques em família, ela não poderá fazer a conexão entre os diferentes objetos que vê em uma foto.

Mesmo quando treinada, a rede terá apenas um modelo estatístico que provavelmente rotulará qualquer figura com muita grama, várias pessoas e toalhas de mesa como um "piquenique em família".

A rede não saberá o que é um piquenique contextualmente, podendo classificar erroneamente a imagem de uma família pobre com olhares tristes e rostos fuliginosos comendo ao ar livre como um piquenique em família feliz.

Além disso, esta mesma rede provavelmente não será capaz de dizer que a imagem a seguir é um desenho de um piquenique de animais.

Visão de computador para piquenique de animais
Visão de computador para piquenique de animais

Alguns especialistas acreditam que a verdadeira visão computacional só pode ser alcançada quando decifrarmos o código da IA geral, inteligência artificial que possui as capacidades abstratas e de senso comum da mente humana.

Não sabemos quando ou se isso acontecerá, até então, ou até encontrarmos outra maneira de representar conceitos de uma maneira que também possa alavancar os pontos fortes das redes neurais.

Os pesquisadores terão que lançar cada vez mais dados em seus algoritmos de visão computacional, na esperança de poderem dar conta de todos os possíveis tipos de objetos e contextos que as redes neurais poderão reconhecer.