Visão Computacional: Como as Máquinas Interpretam o Mundo Visual
Publicados: 2021-05-05A visão computacional é o campo da inteligência artificial que permite que as máquinas "vejam".
Os humanos têm o dom da visão, e o órgão que a torna possível é complexo. Embora seja incomparável com a visão de longa distância de águias ou os olhos de uma borboleta azul, que pode ver no espectro UV, ainda faz um excelente trabalho.
Uma parte de ver é entender o que você está vendo. Caso contrário, está apenas recebendo a luz refletida de objetos à sua frente. Isso é o que acontece se você tem um par de olhos, mas não o córtex visual dentro do lobo occipital (a parte do cérebro responsável pelo processamento visual).
Para computadores, as câmeras são seus olhos. E a visão computacional atua como o lobo occipital e processa os milhares de pixels nas imagens. Em suma, a visão computacional permite que as máquinas compreendam o que estão vendo.
O que é visão computacional?
A visão computacional (CV) é um campo da inteligência artificial que se esforça para desenvolver técnicas que permitam aos computadores ver e entender o conteúdo das imagens digitais. Em outras palavras, a visão computacional tenta treinar máquinas para ver e compreender o mundo ao seu redor.
A visão computacional é fundamental para várias inovações tecnológicas, incluindo carros autônomos, reconhecimento facial e realidade aumentada. A quantidade crescente de dados de imagem que geramos é uma das razões pelas quais este campo de inteligência artificial está crescendo exponencialmente. Esse aumento também torna mais fácil para os cientistas de dados treinarem algoritmos.
Simplificando, as duas principais tarefas da visão computacional são identificar os objetos de uma imagem e entender o que eles significam como um todo.
Os humanos consideram a percepção virtual, um produto de milhões de anos de evolução, como certa. Uma criança de 5 anos poderia facilmente nomear os itens colocados em uma mesa e compreender que toda a configuração é uma mesa de jantar. Para as máquinas, é uma tarefa hercúlea, e é isso que a visão computacional está tentando resolver.
US$ 48,6 bilhões
estima-se que seja o valor do mercado de visão computacional até 2022.
Fonte: BitRefine
A inteligência geral artificial, se possível, não seria viável sem a visão computacional. Isso porque identificar e reagir com precisão aos objetos ao nosso redor é um dos traços notáveis de nossa inteligência. Em outras palavras, para ensinar as máquinas a pensar, você deve dar a elas a capacidade de ver.
Juntamente com o crescimento exponencial no número de fotografias e vídeos digitais disponíveis, os avanços no aprendizado profundo e nas redes neurais artificiais também contribuem para a glória atual da visão computacional.
Uma breve história da visão computacional
Os primeiros experimentos no campo da visão computacional começaram na década de 1950 com a ajuda de algumas das primeiras formas de redes neurais artificiais. Eles eram usados para detectar as bordas dos objetos e podiam classificar objetos simples como círculos e quadrados.
A visão computacional foi vista como um trampolim para a inteligência artificial, pois imitar o sistema visual humano é um pré-requisito para alcançar a inteligência humana. Portanto, na década de 1960, as universidades que exploravam a IA também estavam envolvidas na visão computacional.
Em 1963, Larry Roberts, considerado o pai fundador da internet, descreveu o processo de derivar informações 3D sobre objetos sólidos a partir de fotos 2D. Sua tese "Percepção da Máquina de Sólidos Tridimensionais" ainda é reconhecida como um dos trabalhos fundamentais do campo da visão computacional.
Mais tarde, em 1966, Marvin Minsky, um dos fundadores da IA, acreditava que a visão computacional poderia ser alcançada com um projeto de verão. Mas todos sabemos o que aconteceu. Avançando para a década de 1970, a tecnologia de visão computacional foi usada para aplicações comerciais, como reconhecimento óptico de caracteres (OCR), que pode identificar texto manuscrito ou caracteres impressos em imagens.
A internet, que se tornou mainstream na década de 1990, desempenhou um papel crucial no rápido desenvolvimento da visão computacional. Grandes conjuntos de imagens tornaram-se facilmente acessíveis, o que facilitou o treinamento dos algoritmos.
O poder de computação barato e abundante também contribuiu para a facilidade de treinamento dos algoritmos. Este também foi o ponto em que as interações entre computação gráfica e visão computacional aumentaram.
Aqui estão alguns marcos notáveis na visão computacional que a tornaram a tecnologia robusta que é hoje.
1959: Foi inventado o primeiro scanner de imagem digital que converteu imagens em grades numéricas.
1963: Larry Roberts descreveu o processo de derivar informações 3D de objetos sólidos a partir de imagens 2D.
1966: Marvin Minsky instruiu um estudante de pós-graduação a conectar uma câmera a um computador e descrever o que viu.
1980: Kunihiko Fukushima criou o neocognitron. É considerado o precursor da moderna rede neural convolucional (CNN).
2001: Paul Viola e Michael Jones, dois pesquisadores do MIT, criaram a primeira estrutura de detecção de rosto que funciona em tempo real.
2009: O Google iniciou o projeto do carro autônomo.
2010: O Google lançou o Google Goggles, um aplicativo de reconhecimento de imagem útil para pesquisas baseadas em fotos capturadas por dispositivos móveis. No mesmo ano, o Facebook começou a usar o reconhecimento facial para marcar pessoas em fotos de forma eficaz.
2011: A tecnologia de reconhecimento facial foi usada para confirmar a identidade de Osama Bin Laden depois que ele foi morto.
2012: O Google Brain criou uma rede neural composta por 16.000 processadores de computador que podiam reconhecer as fotos de gatos com a ajuda de um algoritmo de aprendizado profundo. No mesmo ano, AlexNet, uma rede neural convolucional, alcançou um erro top 5 de 15,3% no ImageNet 2012 Challenge.
2014: Tesla introduziu o Autopilot em seus carros elétricos Model S. O sistema de direção autônoma não apenas funcionou offline, mas também estacionou com precisão.
2015: lançamento do Google TensorFlow, que é uma biblioteca de software livre e de código aberto para aprendizado de máquina. No mesmo ano, o Google introduziu o FaceNet para reconhecimento facial.
2016: Pokemon GO, o famoso jogo móvel baseado em AR, foi introduzido.
2017: A Apple lançou o iPhone X com o recurso de reconhecimento facial.
2019: O Tribunal Superior do Reino Unido permitiu o uso de tecnologia de reconhecimento facial automatizado para procurar pessoas em multidões.
Como funciona a visão computacional?
A visão computacional começa pequena e termina grande.
Ele segue uma técnica de processamento em camadas na qual começa com a identificação e análise de recursos de baixo nível, como pixels e cores. Gradualmente, ele avança para analisar recursos de nível superior, como linhas e objetos.
Suponha que você veja uma imagem de pessoas correndo. Mesmo sendo uma imagem estática, na maioria dos casos, você conseguirá entender o contexto; as pessoas estão fugindo de algo, correndo em direção a algo, ou correndo vagarosamente. Este é um exemplo típico de como a computação de processamento paralelo acontece em tempo real.
É simples para nós entender a emoção e o contexto das imagens. Os computadores ainda estão aprendendo o ofício, mas seu ritmo é impressionante para entidades não biológicas.
Já se perguntou como os computadores são capazes de fornecer dados precisos para algo como previsão do tempo? É aí que a visão computacional funciona na forma de processamento paralelo, ou seja, trabalhando com múltiplas fontes de dados complexos ao mesmo tempo.
Para máquinas, as imagens são apenas uma coleção de pixels. Ao contrário dos humanos, eles não conseguem entender o significado semântico de uma imagem e só conseguem detectar pixels. O objetivo da visão computacional é reduzir essa lacuna semântica .
Quando os raios de luz atingem a retina dos nossos olhos, células especiais, chamadas fotorreceptores, transformam a luz em sinais elétricos. Esses sinais elétricos são então enviados para o cérebro através do nervo óptico. O cérebro então converte esses sinais nas imagens que vemos.
Isso se processa até que os sinais elétricos que chegam ao cérebro pareçam diretos. Como exatamente o cérebro processa esses sinais e os converte em imagens ainda não é totalmente compreendido. Mais precisamente, o cérebro é uma caixa preta; assim como a visão computacional.
Existem redes neurais e outros aprendizado de máquina algoritmos que tentam imitar o cérebro humano. Eles viabilizam a visão computacional e ajudam a compreender do que tratam as imagens. Mesmo no caso de algoritmos, os pesquisadores de ML não estão totalmente cientes de como eles funcionam. No entanto, como seus resultados são quantificáveis, podemos julgar a precisão de cada algoritmo.
A visão computacional como um processo é explicável, assim como a visão humana. Mas ninguém sabe ao certo como as redes neurais funcionam para compreender imagens ou se estão remotamente próximas de como os humanos processam informações visuais.
Dito isto, em um sentido simples, a visão computacional tem tudo a ver com reconhecimento de padrões. Usando técnicas de aprendizado de máquina como aprendizagem não supervisionada, os algoritmos são treinados para reconhecer padrões em dados visuais. Se você está pensando no número de imagens necessárias, são milhões ou milhares, no mínimo.
Suponha que você queira que o algoritmo identifique cães em imagens. Se você estiver seguindo a técnica de aprendizado não supervisionado, não precisará rotular nenhuma imagem como cachorro. Em vez disso, depois de analisar milhares ou milhões de imagens, a máquina aprende as características específicas dos cães.
Em suma, um computador pode perceber as características específicas que fazem de um animal (ou objeto) um cachorro. Ele ainda não saberia que o animal em particular é chamado de "cachorro". Mas terá informações e experiência suficientes para determinar se uma imagem sem rótulo contém um cachorro.
Se você quer que o processo de aprendizagem seja mais rápido, você pode ir para aprendizado supervisionado. No aprendizado supervisionado, as imagens são rotuladas, o que facilita o trabalho dos algoritmos.
Examinando imagens em níveis de pixel
Ao falar sobre algoritmos que analisam imagens, eles não estão examinando a imagem como um todo, como os humanos. Em vez disso, eles observam pixels individuais, que são os menores elementos endereçáveis de uma imagem raster.
Por uma questão de simplicidade, vamos considerar uma imagem em tons de cinza. O brilho de cada pixel, denominado valores de pixel, é representado por um inteiro de 8 bits com uma faixa de valores possíveis de 0 a 255. Zero é considerado preto e 255 é branco. Se estivermos estudando uma imagem colorida, as coisas ficarão mais complicadas.
Quando dizemos que um algoritmo analisa e aprende, na verdade está aprendendo esses valores de pixel. Em outras palavras, um computador vê e reconhece imagens com base em tais valores numéricos. Isso também significa que os algoritmos encontram padrões nas imagens observando seus valores numéricos e comparando as imagens de maneira semelhante.
Resumindo, para as máquinas, compreender uma imagem é um processo matemático que envolve arrays de inteiros.
Então existem redes neurais convolucionais
Uma rede neural convolucional (CNN ou ConvNet) é um aprendizado profundo algoritmo que pode extrair recursos de conjuntos de dados de imagem. Eles são uma categoria de redes neurais e possuem recursos impressionantes para reconhecimento e classificação de imagens. Quase todo algoritmo de visão computacional usa redes neurais convolucionais.
Embora as CNNs tenham sido inventadas na década de 1980, elas não eram exatamente viáveis até a introdução das unidades de processamento gráfico (GPUs). As GPUs podem acelerar significativamente as redes neurais convolucionais e outras redes neurais. Em 2004, a implementação de CNNs em GPU foi 20 vezes mais rápida do que uma implementação de CPU equivalente.
Como as CNNs fazem isso?
As ConvNets aprendem com as imagens de entrada e ajustam seus parâmetros (pesos e vieses) para fazer melhores previsões. As CNNs tratam imagens como matrizes e extraem informações espaciais delas, como bordas, profundidade e textura. ConvNets fazem isso usando camadas convolucionais e pooling.
A arquitetura de uma CNN é análoga à do padrão de conectividade dos neurônios em nossos cérebros. As CNNs foram criadas inspirando-se na organização do córtex visual, que é a região do cérebro que recebe e processa a informação visual.
Uma CNN consiste em várias camadas de neurônios artificiais chamados perceptrons, que são as contrapartes matemáticas dos neurônios biológicos do nosso cérebro. Perceptrons imitam aproximadamente o funcionamento de suas contrapartes biológicas também.

Uma rede neural convolucional compreende uma camada de entrada , várias camadas ocultas e uma camada de saída .
As camadas ocultas contêm:
- Camadas convolucionais
- Camadas de função de ativação linear retificada (ReLU)
- Camadas de normalização
- Camadas de pool
- Camadas totalmente conectadas
Aqui está uma explicação simples do que eles fazem.
Quando uma CNN processa uma imagem, cada uma de suas camadas extrai características distintas dos pixels da imagem. A primeira camada é responsável por detectar características básicas como bordas horizontais e verticais.
À medida que você se aprofunda na rede neural, as camadas começam a detectar recursos complexos, como formas e cantos. As camadas finais da rede neural convolucional são capazes de detectar características específicas, como faces, edifícios e lugares.
A camada de saída da rede neural complicada oferece uma tabela contendo informações numéricas. Esta tabela representa a probabilidade de um determinado objeto ter sido identificado na imagem.
Exemplos de tarefas de visão computacional
A visão computacional é um campo da ciência da computação e da IA que permite que os computadores vejam. Existem vários métodos pelos quais os computadores podem tirar proveito desse campo. Essas tentativas de identificar objetos ou atividades em imagens são chamadas de tarefas de visão computacional.
Aqui estão algumas das tarefas comuns de visão computacional.
- Detecção de objetos: Uma técnica usada para detectar um objeto específico em uma imagem. Suas versões avançadas podem identificar vários objetos em uma única imagem, por exemplo, prédios, carros, pessoas, semáforos e muito mais em uma imagem de uma rua movimentada.
- Classificação de imagens: O agrupamento de imagens em categorias. Também pode ser referido como o processo de atribuição de rótulos a imagens.
- Reconhecimento facial: Uma forma avançada de reconhecimento de objetos que pode identificar humanos em imagens e reconhecer rostos.
- Segmentação de imagem: O particionamento de uma imagem em várias partes para examiná-la separadamente.
- Detecção de padrões: Um processo de reconhecimento de padrões e regularidades em dados visuais.
- Detecção de bordas: Um processo de detecção de bordas de um objeto para identificar melhor os constituintes da imagem.
- Correspondência de recursos: um tipo de detecção de padrão que combina semelhanças em imagens para classificá-las.
Software de reconhecimento de imagem aplicativos podem usar apenas uma dessas técnicas de visão computacional. Aplicativos avançados, como carros autônomos, usarão várias técnicas ao mesmo tempo.
Aplicativos de visão computacional do mundo real
A visão computacional já está incorporada em muitos dos produtos que usamos hoje. O Facebook marca automaticamente as pessoas usando o CV. O Google Fotos o usa para agrupar imagens, e aplicativos de software como o Adobe Lightroom o usam para aprimorar os detalhes de imagens ampliadas. Também é amplamente utilizado para controle de qualidade em processos de fabricação que dependem de automação.
Aqui estão mais algumas aplicações do mundo real de visão computacional que você pode ter encontrado.
Reconhecimento facial
Um dos melhores casos de uso da visão computacional está no campo do reconhecimento facial. Ele atingiu o mainstream em 2017 com o modelo iPhone X da Apple e agora é um recurso padrão na maioria dos smartphones.
A tecnologia de reconhecimento facial é usada como recurso de autenticação em várias ocasiões. Caso contrário, é usado para identificar a pessoa, como no caso do Facebook. As agências de aplicação da lei são conhecidas por usar a tecnologia de reconhecimento facial para identificar infratores em feeds de vídeo.
carros autônomos
Carros autônomos dependem muito da visão computacional para análise de imagens em tempo real. Ele ajuda os veículos autônomos a entender o ambiente ao seu redor. No entanto, a tecnologia por trás desses carros ainda está em estágio inicial e requer mais desenvolvimento antes que possa ser implantada com confiança em estradas cheias de tráfego.
Veículos autônomos são praticamente impossíveis sem visão computacional. Essa tecnologia ajuda os veículos autônomos a processar dados visuais em tempo real. Um exemplo de sua aplicação é a criação de mapas 3D. Juntamente com a identificação e classificação de objetos, a visão computacional pode ajudar a criar mapas 3D para dar aos veículos uma noção dos arredores.
A detecção de veículos e linhas de pista são outros dois casos de uso importantes. Depois, há a detecção de espaço livre, que é bastante famosa no reino dos carros autônomos. Como o nome sugere, é usado para determinar o espaço livre de obstáculos ao redor do veículo. A detecção de espaço livre é útil quando o veículo autônomo se aproxima de um veículo lento e precisa mudar de faixa.
Imagens médicas
A visão computacional é usada no setor de saúde para fazer diagnósticos mais rápidos e precisos e monitorar a progressão de doenças. Usando o reconhecimento de padrões, os médicos podem detectar os primeiros sintomas de doenças como o câncer, que podem não ser visíveis ao olho humano.
A imagiologia médica é outra aplicação crítica com uma infinidade de benefícios. A análise de imagens médicas reduz o tempo que os profissionais médicos levam para analisar as imagens. Endoscopia, radiografia de raios-X, ultra-som e ressonância magnética (MRI) são algumas das disciplinas de imagens médicas que usam visão computacional.
Ao emparelhar CNNs com imagens médicas, os profissionais médicos podem observar órgãos internos, detectar anomalias e entender a causa e o impacto de doenças específicas. Também ajuda os médicos a monitorar o desenvolvimento de doenças e o progresso dos tratamentos.
Moderação de conteúdo
Redes de mídia social como o Facebook precisam revisar milhões de novas postagens todos os dias. É impraticável ter uma equipe de moderação de conteúdo que passe por todas as imagens ou vídeos postados e, portanto, sistemas de visão computacional são usados para automatizar o processo.
350 milhões
fotos são enviadas todos os dias para o Facebook.
Fonte: Relatório Social
A visão computacional pode ajudar essas plataformas de mídia social a analisar o conteúdo carregado e sinalizar aqueles que contêm conteúdo proibido. As empresas também podem usar algoritmos de aprendizado profundo para análise de texto para identificar e bloquear conteúdo ofensivo.
Vigilância
Os feeds de vídeo de vigilância são uma forma sólida de evidência. Eles podem ajudar a descobrir infratores da lei e também ajudar os profissionais de segurança a agir antes que pequenas preocupações se tornem catastróficas.
É praticamente impossível que os humanos fiquem de olho nas imagens de vigilância de várias fontes. Mas com a visão computacional, essa tarefa é simplificada. Sistemas de vigilância baseados em CV podem escanear imagens ao vivo e detectar pessoas com comportamento suspeito.
O reconhecimento facial pode ser usado para identificar criminosos procurados e, assim, prevenir crimes. A tecnologia de reconhecimento de imagem pode ser empregada para detectar indivíduos carregando objetos perigosos em áreas lotadas. O mesmo também é utilizado para determinar o número de vagas de estacionamento gratuitas disponíveis nos shoppings.
Desafios da visão computacional
Ajudar os computadores a ver é mais desafiador do que pensávamos.
Marvin Minsky estava confiante de que a visão computacional poderia ser resolvida conectando uma câmera a um computador. Mesmo depois de décadas de pesquisa, não estamos nem perto de resolver o problema. Para os humanos, a visão é tão fácil. Essa é a razão pela qual a visão computacional foi vista como um problema trivialmente simples e deveria ser resolvido em um verão.
Nosso conhecimento é limitado
Uma razão pela qual não somos capazes de resolver completamente o problema da visão computacional é o nosso conhecimento limitado de nós mesmos. Não temos uma compreensão completa de como funciona o sistema visual humano. Claro, avanços rápidos são feitos no estudo da visão biológica, mas ainda há um longo caminho a percorrer.
O mundo visual é complexo
Um problema desafiador no campo do CV é a complexidade natural do mundo visual. Um objeto pode ser visto de qualquer ângulo, sob quaisquer condições de iluminação e de distâncias variadas. O sistema óptico humano é normalmente capaz de ver e compreender objetos em todas essas variações infinitas, mas a capacidade das máquinas ainda é bastante limitada.
Outra limitação é a falta de bom senso. Mesmo após anos de pesquisa, ainda precisamos recriar o senso comum em sistemas de IA. Os seres humanos podem aplicar o senso comum e o conhecimento prévio sobre objetos específicos para compreendê-los. Isso também nos permite entender a relação entre as diferentes entidades de uma imagem com facilidade.
Os humanos são bons em adivinhar, pelo menos quando comparados aos computadores. É mais fácil para nós tomar uma decisão não tão ruim, mesmo que não tenhamos enfrentado um problema específico antes. Mas o mesmo não acontece com as máquinas. Se eles encontrarem uma situação que não se pareça com seus exemplos de treinamento, eles estarão propensos a agir irracionalmente.
Os algoritmos de visão computacional ficam notavelmente melhores se você os treinar com conjuntos de dados visuais mais recentes. Mas em sua essência, eles estão tentando corresponder aos padrões de pixels. Em outras palavras, além do conhecimento dos pixels, eles não entendem exatamente o que está acontecendo nas imagens. Mas é fascinante pensar nas maravilhas que os sistemas movidos a CV fazem em carros autônomos.
O CV está vinculado ao hardware
Na visão computacional, a latência é maligna.
Em aplicações do mundo real, como carros autônomos, o processamento e a análise de imagens devem acontecer quase instantaneamente. Por exemplo, se um veículo autônomo viajando a 30 mph detecta um obstáculo a cem metros de distância, ele tem apenas alguns segundos para parar ou virar com segurança.
Para que o carro atue a tempo, o sistema de IA terá que entender os arredores e tomar decisões em milissegundos. Como os sistemas de visão computacional dependem muito de componentes de hardware como a câmera, um atraso de até uma fração de segundo na transmissão de dados ou computação pode causar acidentes catastróficos.
AI restrita não é suficiente
Alguns pesquisadores de IA acham que uma visão computacional 20/20 só pode ser alcançada se desbloquearmos a inteligência artificial geral (AGI). Isso porque a consciência parece desempenhar um papel crítico no sistema visual humano. Assim como o quanto vemos e observamos, imaginamos. Nossa imaginação aumenta os visuais que vemos e traz um significado melhor para eles.
Além disso, a inteligência visual não é inseparável da inteligência. A capacidade de processar pensamentos complexos complementava nossa capacidade de ver e compreender nosso entorno.
De acordo com muitos pesquisadores, aprender com milhões de imagens ou feeds de vídeo baixados da internet não ajudaria muito a alcançar a verdadeira visão computacional. Em vez disso, a entidade de IA terá que experimentá-lo como humanos. Em outras palavras, AI estreita, o nível de inteligência artificial que temos atualmente, não é suficiente.
O prazo em que alcançaremos a inteligência geral ainda é discutível. Alguns acham que a AGI pode ser alcançada em algumas décadas. Outros sugerem que é uma coisa do próximo século. Mas a maioria dos pesquisadores pensa que a AGI é inatingível e só existirá no gênero de ficção científica.
Alcançável ou não, existem inúmeras outras maneiras de tentar desbloquear a verdadeira visão computacional. A qualidade da alimentação e dados diversos é uma maneira de fazer isso. Isso garantirá que os sistemas que dependem da tecnologia de visão computacional evitem preconceitos.
Encontrar maneiras melhores de ampliar os pontos fortes das redes neurais artificiais, criar GPUs poderosas e outros componentes de hardware necessários e entender o sistema visual humano são algumas maneiras de avançar em direção à verdadeira visão computacional.
Presenteando a visão para as máquinas
As taxas de erro dos modelos de reconhecimento de imagem estão caindo drasticamente. Percorremos um longo caminho desde a detecção de letras impressas até a identificação de rostos humanos com precisão. Mas há um longo caminho a percorrer e muitos novos marcos a conquistar. Alcançar a verdadeira visão computacional provavelmente será uma das chaves para a criação de robôs tão sofisticados e inteligentes quanto os humanos.
Se um processo puder ser executado digitalmente, o aprendizado de máquina acabará se tornando parte dele. Se você não está totalmente convencido, aqui estão 51 estatísticas de aprendizado de máquina que sugerem que a mesma tecnologia está conquistando quase todos os setores.