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.
Нейронные сети и Keras. Часть 1

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