Convolutional Neural Network Tutorial
A Inteligência Artificial percorreu um longo caminho e tem feito uma ponte sem problemas entre o potencial dos humanos e das máquinas. E entusiastas de dados em todo o mundo trabalham em inúmeros aspectos da IA e transformam visões em realidade – e uma dessas áreas incríveis é o domínio da Visão Computacional. Este campo visa permitir e configurar máquinas para ver o mundo como os humanos o fazem, e usar o conhecimento para várias tarefas e processos (tais como Reconhecimento de Imagem, Análise e Classificação de Imagem, e assim por diante). E os avanços em Computer Vision com Aprendizagem Profunda têm sido um sucesso considerável, particularmente com o algoritmo Convolutional Neural Network.
Neste tutorial, você estará aprendendo sobre:
- Introdução à CNN
- O que é uma rede neural convolucional?
- Como as CNNs reconhecem imagens?
- Camadas na CNN
- Utilizar implementação de casos usando CNN
Introdução à CNN
Yann LeCun, diretor do Grupo de Pesquisa AI do Facebook, é o pioneiro das redes neurais convolucionais. Ele construiu a primeira rede neural convolucional chamada LeNet, em 1988. LeNet foi usada para tarefas de reconhecimento de caracteres como leitura de códigos postais e dígitos.
Você já se perguntou como o reconhecimento facial funciona nas mídias sociais, ou como a detecção de objetos ajuda na construção de carros auto dirigidos, ou como a detecção de doenças é feita usando imagens visuais na área da saúde? Tudo isso é possível graças às redes neurais convolucionais (CNN). Aqui está um exemplo de redes neurais convolucionais que ilustra como elas funcionam:
Imagine que há uma imagem de uma ave, e você quer identificar se ela é realmente uma ave ou algum outro objeto. A primeira coisa que você faz é alimentar os pixels da imagem na forma de arrays para a camada de entrada da rede neural (redes multicamadas usadas para classificar as coisas). As camadas ocultas realizam a extracção de características através de diferentes cálculos e manipulações. Existem várias camadas ocultas como a camada de convolução, a camada ReLU, e a camada pooling, que realizam a extracção de características da imagem. Finalmente, há uma camada totalmente conectada que identifica o objeto na imagem.
Fig: Rede Neural Convolucional para identificar a imagem de uma ave
>
Curso de Aprendizagem Profunda (com TensorFlow & Keras)
Curso de Aprendizagem Profunda (com TensorFlow Keras)Curso de Aprendizagem Profunda (com TensorFlow Keras)
>
>
>
O que é Rede Neural Convolucional?
Uma rede neural convolucional é uma rede neural feed-forward que é geralmente usada para analisar imagens visuais através do processamento de dados com topologia tipo grade. É também conhecida como ConvNet. Uma rede neural convolucional é usada para detectar e classificar objetos em uma imagem.
Below é uma rede neural que identifica dois tipos de flores: Orchid e Rose.
Na CNN, cada imagem é representada na forma de uma matriz de valores de pixel.
A operação de convolução forma a base de qualquer rede neural convolucional. Vamos entender a operação de convolução usando duas matrizes, a e b, de 1 dimensão.
a =
b =
>Na operação de convolução, as matrizes são multiplicadas por elementos, e o produto é somado para criar uma nova matriz, que representa a*b.
Os três primeiros elementos da matriz a são multiplicados com os elementos da matriz b. O produto é somado para obter o resultado.
Os três elementos seguintes da matriz a são multiplicados pelos elementos da matriz b, e o produto é somado.
Este processo continua até que a operação de convolução esteja completa.
Como a CNN reconhece as imagens?
Consulte as seguintes imagens:
As caixas coloridas representam um valor de pixel de 1, e 0 se não forem coloridas.
Quando você pressiona a barra invertida (\), a imagem abaixo é processada.
>
Ao pressionar a barra invertida (/), a imagem abaixo é processada:
Aqui está outro exemplo para representar como a CNN reconhece uma imagem:
Como pode ver no diagrama acima, apenas os valores que têm o valor 1 são acesos.
Layers in a Convolutional Neural Network
Uma rede neural de convolução tem múltiplas camadas ocultas que ajudam na extração de informações de uma imagem. As quatro camadas importantes na CNN são:
- Camada de convolução
- Camada de ReLU
- Camada de depuração
- Camada totalmente conectada
Camada de convolução
Este é o primeiro passo no processo de extração de recursos valiosos de uma imagem. Uma camada de convolução tem vários filtros que realizam a operação de convolução. Cada imagem é considerada como uma matriz de valores de pixel.
Considere a seguinte imagem 5×5 cujos valores de pixel são 0 ou 1. Há também uma matriz de filtros com uma dimensão de 3×3. Deslize a matriz do filtro sobre a imagem e calcule o produto de ponto para obter a matriz de característica giratória.
ReLU layer
ReLU significa a unidade linear retificada. Uma vez extraídos os mapas de características, o próximo passo é movê-los para uma camada ReLU.
ReLU realiza uma operação no sentido dos elementos e define todos os pixels negativos como 0. Introduz a não-linearidade na rede, e a saída gerada é um mapa de características retificado. Abaixo está o gráfico de uma função ReLU:
A imagem original é digitalizada com múltiplas convoluções e camadas ReLU para localizar as características.
Pooling Layer
Pooling é uma operação de amostragem para baixo que reduz a dimensionalidade do mapa de características. O mapa de recursos retificado agora passa por uma camada de pooling para gerar um mapa de recursos agrupados.
A camada de pooling usa vários filtros para identificar diferentes partes da imagem como bordas, cantos, corpo, penas, olhos e bico.
Aqui está como a estrutura da rede neural de convolução parece até agora:
O próximo passo no processo é chamado de achatamento. O achatamento é usado para converter todas as matrizes bidimensionais resultantes de mapas de características combinadas em um único vetor linear longo e contínuo.
A matriz achatada é alimentada como entrada para a camada totalmente conectada para classificar a imagem.
Aqui está como exatamente a CNN reconhece um pássaro:
- Os pixels da imagem são alimentados à camada convolutiva que realiza a operação de convolução
- Resulta num mapa rotativo
- O mapa rotativo é aplicado a uma função ReLU para gerar um mapa de características retificado
- A imagem é processada com múltiplas convoluções e camadas ReLU para localizar as características
- Diferentes camadas de agrupamento com vários filtros são usadas para identificar partes específicas da imagem
- O mapa de características agrupadas é achatado e alimentado com uma camada totalmente conectada para obter a saída final
Curso de Aprendizagem de MáquinaFREE
Aprender em…Exigir Habilidades de Aprendizagem de Máquina e FerramentasAprendizagem Inicial
Usar implementação de casos usando CNN
Usaremos o conjunto de dados CIFAR-10 do Instituto Canadense de Pesquisa Avançada para classificar imagens em 10 categorias usando CNN.
1. Baixar o conjunto de dados:
2. Importar o conjunto de dados CIFAR:
>
3. Ler os nomes das etiquetas:
>
>
4. Exibir as imagens usando matplotlib:
>
>
>
>>
>
>>
>
5. Use a função helper para manipular dados:
6. Crie o modelo:
7. Aplique as funções helper:
8. Crie as camadas para convolução e pooling:
9. Crie a camada achatada remodelando a camada de pooling:
10. Criar uma camada totalmente conectada:
11. Definir a saída como variável y_pred:
12. Aplique a função de perda:
13. Criar o otimizador:
14. Criar uma variável para inicializar todas as variáveis globais:
15. Executar o modelo criando uma sessão gráfica:
Build deep learning models in TensorFlow e aprender o framework open-source TensorFlow com o curso Deep Learning (com Keras &TensorFlow). Inscreva-se agora!
Aprenda mais sobre CNN e Aprendizagem Profunda
É assim que você constrói uma CNN com múltiplas camadas ocultas e como identificar um pássaro usando seus valores de pixel. Você também completou uma demonstração para classificar as imagens em 10 categorias usando o conjunto de dados CIFAR.
Você também pode se inscrever no Programa de Pós-Graduação em IA e Aprendizagem de Máquina com a Universidade Purdue e em colaboração com a IBM, e se transformar em um especialista em técnicas de aprendizagem profunda usando TensorFlow, a biblioteca de software de código aberto projetada para conduzir aprendizagem de máquina e pesquisa profunda de redes neurais. Este programa em AI e Machine Learning cobre Python, Machine Learning, Processamento de Linguagem Natural, Reconhecimento de Fala, Aprendizagem Profunda Avançada, Visão Computadorizada e Aprendizagem Reforçada. Ele irá prepará-lo para uma das fronteiras tecnológicas mais excitantes do mundo.