BT

A sua opinião é importante! Por favor preencha a pesquisa do InfoQ!

Como as Redes Neurais Convolucionais realizam o reconhecimento de imagem

| por Savaram Ravindra Seguir 1 Seguidores , Poliana Reis Seguir 2 Seguidores em 22 set 2017. Tempo estimado de leitura: 10 minutos |

Para melhorar a experiência das pessoas que acessam o InfoQ Brasil, nós criamos uma série de funcionalidades que te permitem ficar pode dentro das últimas tendências e das novidades de seu interesse, sem que você seja incomodado por coisas irrelevantes. Receba e-mails periódicos e notificações sobre seus tópicos favoritos!

Artigo originalmente publicado por Savaram Ravindra na kdnuggets

O reconhecimento de imagens é um campo de estudo desafiador. Neste artigo, explicaremos conceitos, aplicações e técnicas de reconhecimento de imagem utilizando Redes Neurais Convolucionais (CNN).

O que é reconhecimento de imagem e por que é usado?

No contexto da visão de máquina, o reconhecimento de imagem é a capacidade de um software identificar pessoas, lugares e objetos. Para reconhecer imagens, os computadores podem utilizar tecnologias de visão de máquina e softwares de inteligência artificial juntamente com uma câmera.

Embora seja muito fácil para o cérebro dos seres humanos e dos animais reconhecer objetos, os computadores têm certa dificuldade com a mesma tarefa. Quando olhamos para algo como uma árvore, um carro ou uma pessoa, geralmente não precisamos estudá-lo conscientemente antes de podermos dizer o que é. No entanto, para um computador, identificar qualquer coisa (seja um relógio, uma cadeira, seres humanos ou animais) representa um problema muito difícil e as apostas para encontrar uma solução para esse problema são muito altas.

Imagem 1: Classificação de Imagem.

O reconhecimento de imagens é um método de aprendizagem de máquina projetado para se assemelhar à maneira como o cérebro humano funciona. Com este método, os computadores ensinam a reconhecer os elementos visuais dentro de uma imagem. Ao confiar em bancos de dados grandes e observar padrões emergentes, os computadores podem analisar imagens e formular tags e categorias relevantes que fazem sentido.

Aplicação do reconhecimento de imagem

Podemos utilizar o reconhecimento de imagens para diversas finalidades, sendo a mais popular a organização de fotos pessoais. Quem não gostaria de gerenciar melhor uma enorme biblioteca de memórias fotográficas de acordo com temas visuais, de objetos particulares a paisagens amplas?

A experiência do usuário em aplicativos de organização de fotos está sendo fortalecida pelo reconhecimento de imagem. Além de fornecer um armazenamento de fotos, os aplicativos querem avançar, proporcionando às pessoas uma melhor experiência e melhores mecanismos de busca.

Isto pode ser atingido com a capacidade de organização de imagens de forma automatizada fornecidas pela aprendizagem por máquinas. A interface dos aplicativos de reconhecimento de imagem classifica as imagens com base em padrões identificados e os agrupa tematicamente.

Outras aplicações do reconhecimento de imagem incluem sites de fotografia e vídeo, marketing interativo, campanhas criativas, reconhecimento de rosto e imagem em redes sociais e classificação de imagem para sites com enormes bancos de dados visuais.

A complexa tarefa de implementação do reconhecimento de imagem

O reconhecimento de imagens não é uma tarefa fácil. Uma boa maneira de realizá-lo para dados não estruturados é através da utilização de metadados. A contratação de especialistas para categorização manual de bibliotecas de músicas e filmes seria uma tarefa complicada, e torna-se altamente inviável quando se trata de um cenário com milhões de fotos e vídeos adicionados pelos usuários diariamente nas mídias sociais ou em atividades como o ensino do sistema de navegação de um carro sem motorista que precisa diferenciar os pedestres que atravessam a estrada de vários outros veículos .

Uma maneira de resolver esse problema seria através da utilização de Redes Neurais Artificiais (ANN). Em teoria, podemos fazer uso de Redes Neurais convencionais para analisar imagens, mas na prática, analisando através da perspectiva computacional é altamente dispendioso. Por exemplo, uma rede neural convencional tentando processar uma imagem pequena (30x30 pixels) ainda precisaria de 0,5 milhões de parâmetros e 900 entradas. Uma máquina razoavelmente poderosa pode lidar com isso, mas uma vez que as imagens se tornam muito maiores (por exemplo, 500x500 pixels), o número de parâmetros e entradas aumentaria para níveis muito altos.

Existe outro problema associado à aplicação de redes neurais ao reconhecimento de imagens: sobreposição. Em termos simples, a superposição ocorre quando um modelo se adapta muito bem aos dados em que foi treinado. Geralmente, isso é conseguido a partir da adição de parâmetros (aumentando ainda mais os custos computacionais) , sendo que a exposição do modelo a novos dados resulta em uma perda no desempenho geral.

Redes Neurais Convolucionais (CNN)

Imagem 2 : Modelo arquitetural de uma rede neural convolucional

Dependendo da forma de como uma rede neural é estruturada, uma mudança relativamente direta pode tornar mesmo as imagens gigantes mais gerenciáveis. O resultado é o que chamamos de Redes Neurais Convolucionais conhecidas também como CNN ou ConvNet.

A aplicabilidade geral das Redes Neurais é uma das vantagens, mas essa vantagem se transforma em responsabilidade quando se trata de imagens. As Redes Neurais Convolucionais fazem uma compensação consciente: se uma rede foi projetada para manipular especificamente as imagens, alguma generalização deve ser sacrificada para uma solução muito mais viável.

Se você considerar uma imagem, a proximidade dos pixels tem uma forte relação com a semelhança e as Redes Neurais Convolucionais usam especificamente esse fato. Isso implica que, em uma determinada imagem, dois pixels que estão mais próximos uns dos outros são mais propensos a estar relacionados do que os dois pixels que estão separados um do outro. No entanto, em uma rede neural usual, cada pixel está ligado a cada neurônio. Neste caso, a carga computacional adicionada torna a rede menos precisa.

Ao matar muitas dessas conexões que são menos significativas, a convolução resolve esse problema. Em termos técnicos, as Redes Neurais Convolucionais tornam o processamento de imagens computacionalmente gerenciável através da filtragem das conexões por proximidade. Em uma determinada camada, em vez de ligar cada entrada a cada neurônio, as Redes Neurais Convolucionais restringem as conexões intencionalmente para que qualquer neurônio aceite as entradas apenas a partir de uma pequena subseção da camada anterior (como por exemplo 5x5 px ou 3x3 px ). Portanto, cada neurônio é responsável por processar apenas uma certa porção de uma imagem. (Aliás, isso é quase como os neurônios corticais individuais funcionam em seu cérebro. Cada neurônio responde apenas a uma pequena porção do seu campo visual completo).

O processo de trabalho de uma Rede Neural Convolucional

Imagem 3 : Deep Learning

Da esquerda para a direita na imagem acima, podemos observar:

  • Input layer - A imagem de entrada real que é digitalizada.
  • O filtro que passa sobre a imagem de entrada é o retângulo da luz.
  • SI - Os mapas de ativação estão dispostos em uma pilha em cima um do outro, um para cada filtro utilizado.
  • O retângulo maior é 1 trecho para ser amostrado.
  • CI - Os mapas de ativação condensados ​​através de amostragem descendente.
  • S2 - Um novo grupo de mapas de ativação gerado passando os filtros sobre a pilha que é amostrada em primeiro lugar.
  • C2- A segunda amostra - que condensa o segundo grupo de mapas de ativação.
  • Uma camada totalmente conectada que designa saída com 1 rótulo por nó.

Como uma CNN filtra as conexões por proximidade? O segredo está na adição de 2 novos tipos de camadas: camada de agrupamento e camadas convolucionais.

Vamos explicar o processo, utilizando o exemplo de uma rede que é projetada para fazer apenas uma coisa, ou seja, para determinar se uma imagem contém um vovô ou não.

O primeiro passo no processo é a camada de convolução que, por sua vez, tem várias etapas em si:

  1. Em primeiro lugar, vamos dividir a imagem do vovô em uma série de quadros sobrepostos de 3x3 pixels.
  2. Depois disso, vamos executar cada um desses quadros através de uma rede neural simples, de camada única, mantendo os pesos inalterados. Isso mudará a coleção de quadros em uma matriz. À medida que mantivemos cada uma das imagens pequenas (3x3 px neste caso), a rede neural necessária para processá-las permanece gerenciável e pequena.
  3. Em seguida, os valores de saída serão tomados e dispostos em uma matriz que representa numericamente o conteúdo de cada área na fotografia, com os eixos que representam canais de cor, largura e altura. Então, para cada quadro, teríamos uma representação 3x3x3 px nesse caso. (Nós precisaríamos uma quarta dimensão para o tempo se estivéssemos falando sobre os vídeos do vovô).

O próximo passo é a camada de agrupamento. Isso utiliza essas matrizes de 3 ou 4 dimensões e aplica uma função de amostragem descendente juntamente com dimensões espaciais. O resultado é uma matriz agrupada que contém apenas as partes da imagem que são importantes descartando o restante, o que minimiza os cálculos que precisam ser feitos, evitando o problema de superposição.

A matriz de amostragem descendente é utilizada como a entrada da rede neural completamente conectada.

Uma vez que o tamanho da entrada foi reduzido drasticamente usando o agrupamento e convolução, agora devemos ter algo que uma rede normal será capaz de manipular ao mesmo tempo em que preserva as partes mais significativas de dados. A saída do passo final representará a confiança do sistema em termos da imagem de um vovô.

Na vida real, o processo de funcionamento de uma CNN é complicado envolvendo numerosas camadas ocultas de agrupamento e convolução. Além disso, as CNN reais geralmente envolvem centenas ou milhares de rótulos, em vez de apenas um único rótulo.

Como construir uma Rede Neural Convolucional?

Construir uma CNN a partir do zero pode ser uma tarefa cara e demorada. Dito isto, foram desenvolvidas recentemente uma série de APIs que visam permitir que as organizações obtenham insights sem necessidade de aprendizado automático em computador ou experiência em visão por computador.

Google Cloud Vision

O Google Cloud Vision é a API de reconhecimento visual do Google que utiliza uma API REST. Esta API é baseada na estrutura TensorFlow de código aberto. Ele detecta os rostos e objetos individuais e contém um conjunto de rótulos bastante abrangente.

IBM Watson Visual Recognition

IBM Watson Visual Recognition é uma parte do Watson Developer Cloud e vem com um enorme conjunto de classes embutidas, e foi construído para treinar classes personalizadas com base nas imagens que você fornece. Ele também suporta uma série de características astutas, incluindo a detecção de NSFW e OCR, como o Google Cloud Vision.

Clarif.ai

O Clarif.ai é um serviço de reconhecimento de imagens que também utiliza uma API REST. Um aspecto interessante em relação ao Clarif.ai é que ele vem com uma série de módulos que ajudam a adaptar seu algoritmo a assuntos específicos, como alimentos, viagens e casamentos.

Embora as APIs acima sejam adequadas para aplicações comuns, você pode obter melhores resultados desenvolvendo uma solução personalizada para tarefas específicas. Felizmente, estão disponíveis várias bibliotecas que tornam a vida dos desenvolvedores e cientistas de dados um pouco mais fácil ao lidar com os aspectos de otimização e computação, permitindo que eles se concentrem nos modelos de treinamento. Muitas dessas bibliotecas, incluindo Theano, Torch, DeepLearning4J e TensorFlow, foram utilizadas com sucesso em uma ampla variedade de aplicações.

Uma aplicação interessante de Redes Neurais Convolucionais

Adicionando sons a filmes silenciosos

Para adicionar um som à um vídeo silencioso, é necessário que o sistema sintetize sons. O sistema é treinado utilizando milhares de exemplos de vídeos com o som de um bastão atingindo superfícies distintas e gerando sons distintos. Um modelo de aprendizagem profunda associa os quadros de vídeo com um banco de dados de sons pré-gravados para escolher um som para jogar que combina perfeitamente com o que está acontecendo na cena. O sistema será então avaliado com a ajuda de uma configuração que se assemelhe a um teste de turing onde os seres humanos têm que determinar qual vídeo possui sons falsos (sintetizados) ou reais. Esta é uma aplicação muito legal de Redes Neurais Convolucionais e Redes Neurais Recorrentes LSTM. Confira o vídeo aqui.

Sobre o Autor

Savaram Ravindra nasceu e cresceu em Hyderabad, na Índia e atualmente é contribuidor de conteúdo para a Mindmajix.com. Anteriormente, foi desenvolvedor na Cognizant Technology Solutions. Possui mestrado em Nanotecnologia pela Universidade VIT. Pode ser contatado no endereço de email savaramravindra4@gmail.com e no LinkedIn.  

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT