Python. Нейросети.
Keras.
Часть 2
Руденко Данил
Backend - разработчик
Немного GOlang
Немного Python (нейросети + аугментация данных)
Немного Embedded
Текущие задачи
- “Удаление” дефектов с фотографий котэ
- Генерирование котиков
Множество видов
нейронных сетей
- Автоэнкодеры, автокодировщики(Autoencoders)
- Генеративные состязательные сети,
порождающие соперничающие сети,
порождающие соревнующиеся сети (Generative
Adversarial Networks, GANs)
Dataset
Cats vs dogs:
https://www.kaggle.com/c/dogs-vs-cats
- Удалим собак из выборки
- Для обучения автоэнкодера преобразуем
к размерности: 224 X 224 X 3
- Для обучения GAN’а преобразуем к
размерности: 32 X 32 X 3
12 500 изображений котов
Keras
Jupyter Notebook и Anaconda
Anaconda
Jupyter
- Разработка
- Документирование
- Выполнение кода
- Сохранение кода
- Экспорт в HTML и PDF
Решим задачу
номер раз
(Убираем дефекты с фотографий котиков)
Автоэнкодеры(AE)
- Сети прямого распространения
- Скрытый слой(слои) - описывает
модель
- Старается восстановить входной
сигнал на выходе
- Учится создавать компактное
описание входных данных
Автоэнкодеры. Матан.
Энкодер - g и декодер - f .
Энкодер переводит входной сигнал в его представление(код): h = g(x), а декодер
восстанавливает сигнал по его коду: x = f(h) .
Автоэнкодер, изменяя f и g, стремится выучить тождественную функцию x =
f(g(x)), минимизируя функционал ошибки: L(x, f(g(x))).
Автоэнкодеры.
Keras.
input_img = Input(shape=(28, 28, 1))
encoding_dim = 49
flat_img = Flatten()(input_img)
encoded = Dense(encoding_dim, activation='relu')(flat_img)
input_encoded = Input(shape=(encoding_dim,))
flat_decoded = Dense(28*28, activation='sigmoid')(input_encoded)
decoded = Reshape((28, 28, 1))(flat_decoded)
encoder = Model(input_img, encoded, name="encoder")
decoder = Model(input_encoded, decoded, name="decoder")
autoencoder = Model(input_img, decoder(encoder(input_img)),
name="autoencoder")
decoded_imgs = decoder.predict(encoded_imgs, batch_size=n)
plot_digits(imgs, decoded_imgs)
Много видов
- Глубокий
- Разреженный
- Сжимающий
- Сверточный
- Шумоподавляющий
Keras blog: https://goo.gl/TSx1yb
Deep learning book: https://goo.gl/oHNZkM
Habr: https://goo.gl/P6J4sf
Конструирование своего автокодировщика
Сложные нелинейные закономерности - больше слоев
Пространственная инвариантность - свертка и пулинг
Убрать дефекты - шумоподавление
Шумоподавляющий(denoising) автоэнкодер
Получает на входе искаженные данные и обучается предсказывать истинные, неискаженные данные
Оригинал с дефектами 9 эпоха обучения 45 эпоха обучения 90 эпоха обучения
Решим задачу
номер два
(Посмотрим как можно нагенерировать котов)
Генеративно-состязательные сети
Оригинальная статья: https://goo.gl/7DkbGw
Идея
Генератор и дискриминатор
UpSampling2D - Keras (Transposed
convolution)
Оригинальная статья: https://goo.gl/y2Cnb1
Как это все работает?
Области применения
- Получение фотореалистичных изображений(дизайн одежды, сцены
компьютерных игр)
- Улучшение изображений(применение в астрономии)
- Подготовка кадров фильмов и мультипликации
- Аугментация изображений
- И многое другое...
Вопросы?

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