O que iremos discutir?
[Pages:23]5/14/2019
Apresentacao_QCon
Deep Learning com Keras e Tensor Flow
O que iremos discutir?
- Como construir uma CNN usando Keras + Tensorflow - Usando TransferLearning - Alguns desafios encontrados
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
1/23
5/14/2019
Apresentacao_QCon
Por que Tensorflow + Keras?
Continuam sendo as bibliotecas mais usadas e mais pesquisadas para Deep Learning
Fonte () Muito mais simples do que usar Tensorflow puro e mais completo do que o Pytorch.
Convolutional Neural Network
Usadas principalmente para classifica??o de imagens.
Como elas funcionam?
Filtros convolucionais s?o usados para extrair features de imagens.
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
2/23
5/14/2019
Apresentacao_QCon
Nas redes convolucionais esses filtros s?o aplicados em v?rias camadas:
Os valores dos filtros s?o aprendidos, portanto a pr?pria rede aprende quais caracter?sticas s?o relevantes.
Construindo uma CNN pra predizer lateralidade do raio-X
Nosso desafio ? criar uma rede para aprender se um raio X ? lateral ou de frente:
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
3/23
5/14/2019
In [1]:
import warnings warnings.filterwarnings('ignore')
import numpy as np import matplotlib.pyplot as plt %matplotlib inline
import time import os import datetime
Apresentacao_QCon
from keras import datasets, Model from keras.layers.convolutional import Conv2D from keras.layers.convolutional import MaxPooling2D from keras.layers import Flatten from keras.layers.core import Dropout from keras.layers.core import Dense from keras.optimizers import Adam from keras import Sequential from keras.utils import to_categorical from keras.callbacks import ModelCheckpoint, EarlyStopping from keras.applications import VGG16 from keras.preprocessing.image import ImageDataGenerator from keras.models import load_model from keras import backend import tensorflow as tf
from keras.preprocessing.image import load_img, img_to_array
Using TensorFlow backend.
Input de dados
Existem v?rias formas de inputar os dados para treinamento, vamos usar o Image Data Generator para ler as imagens a partir do disco
In [2]: # aqui definimos as transforma??es que ser?o aplicadas na imagem e a % de dados # que ser?o usados para valida??o data_generator = ImageDataGenerator(rescale=1./255, validation_split=0.30)
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
4/23
5/14/2019
Apresentacao_QCon
In [3]:
# para criar os generators precisamos definir o path da pasta raiz com as imagen s e o tamanho da BATCH SIZE path = 'images-chest-orientation/train/' BATCH_SIZE = 50
train_generator = data_generator.flow_from_directory(path, shuffle=True, seed=13 ,
class_mode='categorical', batch_size=BATCH_S IZE, subset="training")
validation_generator = data_generator.flow_from_directory(path, shuffle=True, se ed=13,
class_mode='categorical', batch_size=BATCH_S IZE, subset="validation")
Found 1549 images belonging to 2 classes. Found 662 images belonging to 2 classes.
Construindo o modelo:
Vamos criar uma rede pequena que consiga identificar corretamente essas imagens:
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
5/23
5/14/2019
Apresentacao_QCon
In [6]:
def build_model(shape=(256,256)): ''' Constroi as camadas da rede :return: modelo construido '''
model = Sequential()
# primeira camada adiciona o shape do input # tamb?m ? poss?vel alterar a inicializacao, bias, entre outros -- https://k eras.io/layers/convolutional/#conv2d model.add(Conv2D(filters=64, kernel_size=2, activation='relu', input_shape=s hape)) #Tamanho do downsampling model.add(MaxPooling2D(pool_size=2)) # Fracao das unidades que serao zeradas model.add(Dropout(0.3))
# Segunda camada model.add(Conv2D(filters=128, kernel_size=2, activation='relu')) model.add(MaxPooling2D(pool_size=2)) model.add(Dropout(0.3))
# Da um reshape no output transformando em array model.add(Flatten())
# Camada full-connected model.add(Dense(256, activation='relu')) model.add(Dropout(0.5))
#Camada de saida com o resultado das classes model.add(Dense(2, activation='sigmoid'))
return model
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
6/23
5/14/2019
Apresentacao_QCon
In [7]:
model = build_model(shape) model.summary()
_________________________________________________________________
Layer (type)
Output Shape
Param #
=================================================================
conv2d_1 (Conv2D)
(None, 256, 256, 64)
832
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 128, 128, 64)
0
_________________________________________________________________
dropout_1 (Dropout)
(None, 128, 128, 64)
0
_________________________________________________________________
conv2d_2 (Conv2D)
(None, 128, 128, 128)
32896
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 64, 64, 128)
0
_________________________________________________________________
dropout_2 (Dropout)
(None, 64, 64, 128)
0
_________________________________________________________________
flatten_1 (Flatten)
(None, 524288)
0
_________________________________________________________________
dense_1 (Dense)
(None, 256)
134217984
_________________________________________________________________
dropout_3 (Dropout)
(None, 256)
0
_________________________________________________________________
dense_2 (Dense)
(None, 2)
514
=================================================================
Total params: 134,252,226
Trainable params: 134,252,226
Non-trainable params: 0
_________________________________________________________________
Compila??o
Precisamos definir como a rede ir? aprender: fun??o de loss e otimizador
In [8]: # Compila o modelo definindo: otimizador, metrica e loss function pile(loss='binary_crossentropy',
optimizer='adam', metrics=['accuracy'])
Treinamento
Como lemos os dados usando um generator, o fit do keras tamb?m ser? usando um fit_generator . Tamb?m usaremos alguns callbacks :
ModelCheckPoint para salvar o modelo que tiver o melhor loss durante o treinamento e, EarlyStop para interromper o treinamento caso a rede pare de aprender.
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
7/23
5/14/2019
Apresentacao_QCon
In [9]:
checkpoint = ModelCheckpoint('chest_orientation_model.hdf5', monitor='val_loss', verbose=1, mode='min', save_best_only=True)
early_stop = EarlyStopping(monitor='val_loss', min_delta=0.001, patience=5, mode='min', verbose=1)
localhost:8889/nbconvert/html/Apresentacao_QCon.ipynb?download=false
8/23
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- getting started with x cube ai expansion package for
- data brief x cube ai artificial intelligence ai
- convolutional neural networks github pages
- building powerful image classification models using very
- recurrent neural networks long short termed memory
- diktya documentation
- deepregression fitting deep distributional regression
- deep learning with keras cheat sheet
- o que iremos discutir
- deep learning by example on biowulf
Related searches
- customer relationship management o que e
- f o g o h calculator
- alimentos que afectan la tiroide
- que es la tiroides sintomas
- que es tiroides
- que es un verbo copulativo
- que son los verbos copulativos
- que son oraciones copulativas
- correio24horas o que a bahia quer saber
- o que fazer com inhame
- o que dar de presente para amiga
- o que comer para emagrecer