Нейронные сети и Keras. Часть 1

PyNSK 1,383 views 21 slides Oct 23, 2017
Slide 1
Slide 1 of 21
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21

About This Presentation

Докладчик: Данил Руденко

О докладе:
По некоторым оценкам, больше половины профессий будет автоматизировано – это и есть максимальный объём, на который может быть �...


Slide Content

Python. Нейросети.
Keras.

Часть 1

Руденко Данил
Backend - разработчик
Немного GOlang
Немного Python (нейросети + аугментация данных)
Немного Embedded

Задача
классификации
Классифицировать объект — значит, указать номер (или наименование класса), к
которому относится данный объект.
киса 0
киса 1
киса 2

Программный нейрон

Нейронные сети

Сверточная нейронная сеть

Операция pooling

Визуализация фильтров

Задачи, плюсы
-идентификация объектов
-семантическая сегментация
-распознавание лиц
-распознавание частей тела человека
-семантическое определение границ
-выделение объектов внимания
-выделение нормалей к поверхностям

Множество NN - фреймворков

Keras

Топологии нейросетей
model = Sequential()
model.add(Conv2D(32, (3, 3),
input_shape=(3, 150, 150)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(
2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(
2, 2)))

….
model.add(Dense(1))
model.add(Activation('sigmoid'))


●Xception
●VGG16
●VGG19
●ResNet50
●InceptionV3
●InceptionResNetV2
●MobileNet

Dataset и уже готовые
веса

Keras. Применение встроенной нейронки
from keras.applications.vgg16 import VGG16
model = VGG16(weights='imagenet')
im = read_image('cat.jpg')
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) # https://goo.gl/jSWjvU
model.compile(optimizer=sgd, loss='categorical_crossentropy') # https://goo.gl/u9AfzF
out = model.predict(im) # произошел вывод номера класса, например 281

Проблемы

Аугментация данных

https://github.com/aleju/imgaug
https://github.com/mdbloice/Augmentor

datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
-Поворот на произвольный градус
-Цветовая коррекция
-“Выбивание” квадратами
-Масштабирование
-“Склейка” сцен
-Аффинные преобразования
-Применение различных фильтров

Deep learning - это процесс рекурсивный

Fine-tuning

Fine - tuning в Keras
x = base_model.output
predictions = Dense(<количество_видов_кошечек>,
activation='softmax')(x)
model = Model(inputs=base_model.inputs, outputs=predictions)

for layer in model.layers:
if layer.name == 'activation_40':
break
layer.trainable = False


train_generator =
train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical')

Нейросети идут в каждый дом. Example.