Visão Computacional

Visão computacional é o uso que os computadores fazem de algoritmos complexos, tradicionais ou baseados em deep learning, para compreender imagens digitais e vídeos e extrair informações úteis.

O que é Visão Computacional?

A visão computacional tem como principal objetivo compreender o conteúdo de vídeos e imagens estáticas e, a partir disso, formular informações úteis para solucionar problemas cada vez mais abundantes. Como um subgrupo da inteligência artificial (AI) e do deep learning, a visão computacional treina redes neurais convolucionais (CNNs - Convolutional Neural Networks) para desenvolver recursos de visão humana para aplicações. A visão computacional pode incluir treinamento específico de CNNs para segmentação, classificação e detecção usando imagens e vídeos como dados.

 Imagem de entrada, camadas convolucionais, camada totalmente conectada e classe de saída.

As CNNs podem realizar a segmentação, a classificação e a detecção de diversas aplicações:

  • Segmentação: a segmentação de imagens é a classificação de pixels em determinadas categorias, como "carro", "estrada" ou "pedestres". Ela é muito usada em aplicações de veículos autônomos, incluindo o pacote de software NVIDIA DRIVE™, para indicar estradas, carros e pessoas.  É uma técnica de visualização que facilita o entendimento sobre o que os computadores fazem.
  • Classificação: a classificação de imagens é usada para determinar o que uma imagem contém. Redes neurais podem ser treinadas para identificar muitos elementos, como cães ou gatos, por exemplo, com um alto grau de precisão.
  • Detecção: a detecção de imagens permite que os computadores localizem onde há objetos. Em muitas aplicações, a CNN posiciona caixas retangulares delimitadoras ao redor da região de interesse, contendo o objeto. Um detector também pode ser treinado para encontrar carros ou pessoas em uma imagem.

Segmentação, Classificação e Detecção

    Segmentação Classificação Detecção
    Delimita objetos É um gato ou um cachorro? Onde o objeto está no ambiente?
    Usada em veículos autônomos Classifica com precisão Reconhece objetos para garantir a segurança

Por que a Visão Computacional é Importante?

A visão computacional tem inúmeras utilizações: esportes, automóveis, agricultura, varejo, bancos, construção, seguradoras e muito mais. Máquinas orientadas por AI de todos os tipos passam a ter olhos como os nossos, graças às redes neurais convolucionais (CNNs), as analisadoras de imagens agora usadas pelas máquinas para identificar objetos. As CNNs são os olhos dos veículos autônomos, da exploração de petróleo e da pesquisa de energia de fusão. Elas também podem ajudar a detectar doenças rapidamente em diagnósticos por imagens e salvar vidas.

As técnicas tradicionais de visão computacional e processamento de imagens foram usadas ao longo das décadas em inúmeras aplicações e trabalhos de pesquisa. No entanto, o advento das técnicas modernas de AI usando redes neurais artificias que permitem maior precisão de desempenho e avanços na computação de alto desempenho de GPUs que possibilitam uma precisão sobre-humana levaram a uma adoção generalizada em setores como transportevarejomanufaturaárea da saúdeserviços financeiros

Seja em sistemas tradicionais ou baseados em AI, os sistemas de visão computacional podem superar os humanos na classificação de imagens e vídeos em categorias e classes detalhadas, como alterações mínimas ao longo do tempo em tomografias computadorizadas. Nesse sentido, a visão computacional automatiza tarefas que humanos poderiam fazer e aplica precisão e velocidade muito maiores.

Com a ampla gama de aplicações atuais e potenciais, não surpreende que as projeções de crescimento para tecnologias e soluções de visão computacional sejam extraordinárias. Uma pesquisa de mercado prevê um crescimento impressionante de 47% anualmente até 2023, quando o mercado global atingirá US$25 bilhões. Em toda a ciência da computação, a visão computacional está entre as áreas mais populares e ativas de pesquisa e desenvolvimento.

Como Funciona a Visão Computacional?

A visão computacional analisa imagens e cria representações numéricas do que "vê" usando uma rede neural convolucional (CNN). A CNN é uma classe de rede neural artificial que usa camadas convolucionais para filtrar entradas e obter informações úteis. A operação de convolução envolve a combinação de dados de entrada (mapa de recursos) com um kernel (filtro) de convolução para formar um mapa de recursos transformado. Os filtros das camadas convolucionais são modificados com base nos parâmetros aprendidos para extrair as informações mais úteis para uma tarefa específica. As redes convolucionais ajustam-se automaticamente para encontrar o melhor recurso com base na tarefa. Em tarefas gerais de reconhecimento de objetos, a CNN filtra informações sobre o formato de um objeto. Já em uma tarefa de reconhecimento de pássaros, por exemplo, ela extrai a cor do pássaro. Isso porque a CNN entende que diferentes classes de objetos têm formatos diferentes, mas que diferentes tipos de pássaros têm mais diferenças de cor do que de formato.

Como funciona a visão de uma rede neural profunda

Casos de Uso da Visão Computacional na Indústria

Os casos de uso da visão computacional incluem reconhecimento de imagens, classificação de imagens, rotulagem de vídeos e assistentes virtuais. Alguns dos casos de uso mais populares e importantes da visão computacional incluem os seguintes:

  • Medicina: o processamento de imagens médicas envolve a extração rápida de dados vitais de imagens para ajudar a diagnosticar adequadamente um paciente, incluindo a detecção rápida de tumores e do endurecimento das artérias. Embora a visão computacional não forneça diagnósticos, ela é uma parte inestimável das técnicas modernas de diagnóstico médico, reforçando o que os médicos pensam e, cada vez mais, fornecendo informações que não teriam visto de outra forma.
  • Veículos Autônomos: outra área muito ativa de pesquisa em visão computacional são os veículos autônomos, que podem ser totalmente baseados em soluções de visão computacional ou ter suas operações muito aprimoradas. As aplicações comuns que já estão em funcionamento incluem sistemas de aviso antecipado em carros.
  • Usos na Indústria: a manufatura está repleta de usos atuais e potenciais de soluções de visão computacional para auxiliar nos seus processos. Os usos atuais incluem controle de qualidade em que os sistemas de visão computacional inspecionam peças e produtos finais em busca de defeitos. Na agricultura, os sistemas de visão computacional usam classificação óptica para remover materiais indesejados dos produtos alimentícios.

Cientistas de Dados e Visão Computacional
Python é a linguagem de programação mais popular para machine learning (ML), e a maioria dos cientistas de dados conhece sua facilidade de uso e sua variedade de bibliotecas, a maioria gratuita e de código aberto. Os cientistas de dados usam Python em sistemas de ML para mineração e análise de dados, pois essa linguagem oferece suporte para uma ampla variedade de modelos de ML e algoritmos. Dada a relação entre ML e visão computacional, os cientistas de dados podem aproveitar o universo cada vez maior de aplicações de visão computacional para empresas de todos os tipos e extrair informações vitais de armazenamentos de imagens e vídeos, além de aumentar a tomada de decisões baseada em dados.

Acelerando Redes Neurais Convolucionais Usando GPUs

A CPU é composta por apenas alguns núcleos com muita memória de cache que podem lidar com alguns threads de software por vez. Por outro lado, uma GPU é composta por centenas de núcleos que podem lidar com milhares de threads simultaneamente.

 Diferença entre uma CPU e uma GPU

Como as redes neurais são criadas a partir de um grande número de neurônios idênticos, elas são altamente paralelas por natureza.  Esse paralelismo mapeia naturalmente para GPUs, que oferecem uma arquitetura aritmética paralela de dados e uma aceleração computacional significativa em relação ao treinamento somente com CPU. Esse tipo de arquitetura realiza um conjunto semelhante de cálculos em uma matriz de dados de imagem. O recurso de Instrução Única, Dados Múltiplos (SIMD - Single Instruction, Multiple Data) da GPU a torna adequada para executar tarefas de visão computacional, que muitas vezes envolvem cálculos semelhantes operando em uma imagem inteira. Especificamente, as GPUs da NVIDIA aceleram significativamente as operações de visão computacional, liberando as CPUs para outras tarefas.  Além disso, várias GPUs podem ser usadas na mesma máquina, criando uma arquitetura capaz de executar vários algoritmos de visão computacional paralelamente.

Frameworks de Deep Learning Aceleradas por GPU da NVIDIA

As estruturas de deep learning aceleradas por GPU oferecem interfaces para linguagens de programação comumente usadas, como Python. Elas também oferecem flexibilidade para criar e explorar facilmente CNNs e DNNs personalizadas, além da alta velocidade necessária para experimentos e implantações industriais. A NVIDIA CUDA-X AI acelera as estruturas de deep learning mais usadas, como Caffe, The Microsoft Cognitive Toolkit (CNTK), TensorFlow, Theano e Torch, além de muitas outras aplicações de machine learning. Os frameworks de deep learning são executados mais rapidamente em GPUs e dimensionados em várias GPUs em um único nó. Para usar os frameworks com GPUs para treinamento de redes neurais convolucionais e processos de inferência, a NVIDIA fornece cuDNN e TensorRT™, respectivamente. A cuDNN e o TensorRT oferecem implementações altamente ajustadas para rotinas padrão, como convolução, pooling, normalização e camadas de ativação.

Clique aqui para ver um guia passo a passo de instalação e uso do NVCaffe. Uma implementação rápida em C++/CUDA de redes neurais convolucionais pode ser encontrada aqui.

Para desenvolver e implantar um modelo de visão em tempo real, a NVIDIA oferece o DeepStream SDK para desenvolvedores de AI de visão. Ela também inclui o Kit de Ferramentas TAO para criar modelos de AI precisos e eficientes para o domínio da visão computacional.

Treinamento e Inferência

Ciência de Dados Acelerada de Ponta a Ponta por GPU da NVIDIA

O pacote de bibliotecas de software de código aberto NVIDIA RAPIDS, desenvolvido com base no CUDA, oferece a capacidade de executar pipelines de ciência de dados e análise de ponta a ponta inteiramente em GPUs, e usa interfaces familiares como Pandas e APIs Scikit-Learn.

Pipelines de ciência de dados e análise de ponta a ponta em GPUs

Próximas Etapas

Para consultar informações técnicas e novidades sobre outros assuntos de visão computacional, incluindo CNNs, confira nosso site para desenvolvedores.

Mais assuntos:

Mais informações técnicas: