Este documento fornece uma introdução às redes neurais convolucionais (CNNs), descrevendo como elas funcionam para classificar imagens de maneira mais eficiente do que redes neurais tradicionais. O documento explica como as CNNs são inspiradas no cérebro e como elas extraem características relevantes de imagens usando convoluções. Também fornece instruções passo a passo para implementar e treinar uma CNN usando TensorFlow e Keras.
3. Rede Neural Convolucional
• Problema: Entrada pode ter uma dimensão muito alta.
Utilizando uma MLP (Multi Layer Perceptron), precisamos
de uma quantidade muito grande de parâmetros
• Inspirado nos experimentos de neurofisiologia de Hubel &
Weisel (1962), CNN (Convolutional Neural Network) são um
tipo especial de redes neurais que usam o conceito de
campo receptivo local
Exemplo: Imagem
200x200px
MLP - 40.000 hidden units =
1,6 bilhões de parâmetros
CNN - 5x5 kernel, 100
campos receptivos = 2500
parâmetros
4. Rede Neural Convolucional
• Yann LeCun - Professor of Computer
Science The Courant Institute of
Mathematical Sciences
• Atualmente, diretor de IA do Facebook
• Em 1995, Yann LeCun e Yoshua Bengio
introduziram o conceito de redes neurais
convolucionais
5. CNN’s
• CNN’s foram inspiradas pela sensibilidade local e
orientação seletiva do cérebro
• Projetaram uma rede neural que implicitamente extraíam
as características relevantes de entrada
• É uma rede feed-forward que extrai propriedades
topológicas a partir da imagem
• Capaz de reconhecer padrões com muita variabilidade
(Ex. Caracteres escritos à mão)
16. Implementando
• Python - Linguagem de Programação
• Google TensorFlow - Biblioteca para ML e Deep
Learning
• Keras - Biblioteca Alto Nível para TensorFlow
• Colaboratory - Ambiente on line para implementações
de scripts ML
• Google Drive - Disco virtual
17. Passo 1 - Ambiente
• Criar uma pasta “DeepLearning" dentro de seu Google
Drive
• Dentro da pasta DeepLearning", criar um documento do
Colaboratory (notebook)
• Configurar para utilizar a linguagem Python3 e GPU
(Edit >> notebook settings >> python3 e GPU)
• Baixe o repositório:
https://github.com/smoreira/OficinaRedesConvolucionais
18. Passo 2 - Ambiente
#criar um notebook a partir do google drive.
#configurar edit >> notebook settings >> python3 e GPU
#comandos para autenticacao do Google Drive e Google Cloud
Platform com o Colaboratory
!apt-get install -y -qq software-properties-common
python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa
2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse
fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds =
GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -
id={creds.client_id} -secret={creds.client_secret}
< /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -
id={creds.client_id} -secret={creds.client_secret}
#montar o drive para acesso pelo python
!mkdir -p drive
!google-drive-ocamlfuse drive
#instalando o keras
!pip install -q keras
#exemplo de execucao de scripts que criamos em python
!python3 drive/DeepLearning/meus_scripts.py
Arquivo:
config_drive_colab.txt
no repositório
19. Executando
• Rede Neural Convolucional Inception - modelo criado pela Google
• Treinamento:
!python3 drive/DeepLearning/oficinaConvNet/image_retraining/retrain.py
--bottleneck_dir=bottlenecks
--how_many_training_steps 500
--model_dir=inception
--output_graph=retrained_graph.pb
--output_labels=retrained_labels.txt
--image_dir=drive/DeepLearning/oficinaConvNet/data
• Executando:
!python3 drive/DeepLearning/oficinaConvNet/label_image.py drive/
DeepLearning/oficinaConvNet/homer.jpg
20. Considerações finais
• Modelo pode ser retreinado para reconhecer qualquer
grupo de imagens
• Existem outros modelos prontos para serem utilizados
via TensorFlow
• Vários modelos de Redes Convolucionais podem ser
replicados, você também pode criar seu próprio modelo
21. Referências
Soares, Anderson; Redes Neurais Profundas –DeepLearning - Aula
4 - Convolutional Neural Network; Instituto de Informática;
Universidade Federal de Goiás; 2017
https://medium.com/@curioushruti/how-to-guide-cnns-using-
tensorflow-keras-tensorflow-serving-in-google-
colaboratory-878e5884d03
Moreira, Sandro; Oficina de TensorFlow e Keras; Deep Learning
Brasil Summer School; 2018