IA 101
O que são CNNs (Redes Neurais Convolucionais)?

Talvez você tenha se perguntado como o Facebook ou o Instagram consegue reconhecer automaticamente faces em uma imagem, ou como o Google permite que você pesquise a web por fotos semelhantes apenas carregando uma foto sua. Esses recursos são exemplos de visão computacional, e são impulsionados por redes neurais convolucionais (CNNs). No entanto, o que exatamente são redes neurais convolucionais? Vamos mergulhar fundo na arquitetura de uma CNN e entender como elas operam.
O que são Redes Neurais?
Antes de começarmos a falar sobre redes neurais convolucionais, vamos definir o que é uma rede neural comum. Há outro artigo sobre o tópico de redes neurais disponível, então não vamos nos aprofundar muito nelas aqui. No entanto, para defini-las brevemente, elas são modelos computacionais inspirados no cérebro humano. Uma rede neural opera ao receber dados e manipulá-los ajustando “pesos”, que são suposições sobre como as características de entrada estão relacionadas entre si e à classe do objeto. À medida que a rede é treinada, os valores dos pesos são ajustados e eles esperam convergir para pesos que capturem com precisão as relações entre as características.
Essa é a forma como uma rede neural feed-forward opera, e as CNNs são compostas por duas metades: uma rede neural feed-forward e um grupo de camadas convolucionais.
O que são Redes Neurais Convolucionais (CNNs)?
O que são as “convoluções” que acontecem em uma rede neural convolucional? Uma convolução é uma operação matemática que cria um conjunto de pesos, essencialmente criando uma representação de partes da imagem. Esse conjunto de pesos é referido como um núcleo ou filtro. O filtro criado é menor do que a imagem de entrada completa, cobrindo apenas uma subseção da imagem. Os valores no filtro são multiplicados pelos valores na imagem. O filtro é então movido para formar uma representação de uma nova parte da imagem, e o processo é repetido até que a imagem completa tenha sido coberta.
Outra forma de pensar sobre isso é imaginar uma parede de tijolos, com os tijolos representando os pixels na imagem de entrada. Uma “janela” está sendo deslizada para trás e para frente ao longo da parede, que é o filtro. Os tijolos que são visíveis através da janela são os pixels que estão tendo seu valor multiplicado pelos valores dentro do filtro. Por essa razão, esse método de criar pesos com um filtro é frequentemente referido como a técnica “janelas deslizantes”.
A saída dos filtros sendo movidos ao redor da imagem de entrada completa é uma matriz bidimensional representando a imagem completa. Essa matriz é chamada de “mapa de características”.
Por que as Convoluções são Essenciais
Qual é o propósito de criar convoluções afinal? As convoluções são necessárias porque uma rede neural precisa ser capaz de interpretar os pixels em uma imagem como valores numéricos. A função das camadas convolucionais é converter a imagem em valores numéricos que a rede neural possa interpretar e então extrair padrões relevantes. O trabalho dos filtros na rede convolucional é criar uma matriz bidimensional de valores que possa ser passada para as camadas posteriores de uma rede neural, que aprenderão os padrões na imagem.
Filtros e Canais

Foto: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)
As CNNs não usam apenas um filtro para aprender padrões a partir das imagens de entrada. Múltiplos filtros são usados, pois as diferentes matrizes criadas pelos diferentes filtros levam a uma representação mais complexa e rica da imagem de entrada. Números comuns de filtros para CNNs são 32, 64, 128 e 512. Quanto mais filtros houver, mais oportunidades a CNN terá para examinar os dados de entrada e aprender com eles.
Uma CNN analisa as diferenças nos valores dos pixels para determinar as bordas dos objetos. Em uma imagem em preto e branco, a CNN apenas consideraria as diferenças em preto e branco, de claro para escuro. Quando as imagens são imagens coloridas, não apenas a CNN considera o escuro e o claro, mas também tem que considerar os três canais de cor diferentes – vermelho, verde e azul. Nesse caso, os filtros possuem 3 canais, assim como a imagem em si. O número de canais que um filtro tem é referido como sua profundidade, e o número de canais no filtro deve corresponder ao número de canais na imagem.
Arquitetura da Rede Neural Convolucional (CNN)
Vamos dar uma olhada na arquitetura completa de uma rede neural convolucional. Uma camada convolucional é encontrada no início de cada rede convolucional, pois é necessário transformar os dados da imagem em matrizes numéricas. No entanto, as camadas convolucionais também podem vir após outras camadas convolucionais, o que significa que essas camadas podem ser empilhadas umas sobre as outras. Ter múltiplas camadas convolucionais significa que as saídas de uma camada podem sofrer convoluções adicionais e serem agrupadas em padrões relevantes. Na prática, isso significa que à medida que os dados da imagem passam pelas camadas convolucionais, a rede começa a “reconhecer” recursos mais complexos da imagem.
As camadas iniciais de uma ConvNet são responsáveis por extrair os recursos de baixo nível, como os pixels que compõem linhas simples. As camadas posteriores de uma ConvNet unirão essas linhas em formas. Esse processo de passar da análise de superfície para a análise profunda continua até que a ConvNet esteja reconhecendo formas complexas como animais, faces humanas e carros.
Depois que os dados passam por todas as camadas convolucionais, eles prosseguem para a parte densamente conectada da CNN. As camadas densamente conectadas são o que uma rede neural feed-forward tradicional parece, uma série de nós dispostos em camadas que estão conectados entre si. Os dados prosseguem por essas camadas densamente conectadas, que aprendem os padrões que foram extraídos pelas camadas convolucionais, e ao fazer isso a rede se torna capaz de reconhecer objetos.












