SlideShare a Scribd company logo
1 of 63
Artisto: опыт запуска
нейросетей в production
Тянтов Эдуард, Mail.ru Group
Artisto
1-е мобильное приложение стилизации видео в мире
Уникальная технология стабилизации видео
Приложение с технологией разработаны за 1 месяц
Кратко про нейронные сети
1. Многослойный
персептрон, 1960
2. Обратное распространение
ошибки, 1974
3. Сверточная сеть,
1990-е
Нейронные сети
Color image (RGB) Feature maps3 channels
Convolutions
Input
output
Операция свертки
Профит:
• уменьшение кол-ва вычислений
• относительная устойчивость к сдвигу и повороту изображения
Операция pooling
edges object parts (combination of edges) object models
ImageNet Challenge
Архитектура
популярной
VGG-сети
Архитектура сверточной сети
Перенос стиля на фото
Изображение Стиль
Стилизованное
изображение
+ =
Перенос стиля: цель
Перенос стиля: история
A Neural Algorithm of Artistic Style
Texture Networks: Feed-forward Synthesis of Textures and Stylized Images
Perceptual Losses for Real-Time Style Transfer and Super-Resolution
Запуск Prisma
Vinci
Artisto
Sept 2015
10 Mar 2016
27 Mar 2016
11 June 2016
28 Jul 2016
29 Jul 2016
t
в
Используем VGG-сеть как feature extractor
x
c
Feature maps
Feature maps
Восстановление контента
Target
output
Error back propagation
Оптимизируем изображение x по целевой функции L(x,c).
x
x
Восстановление контента
Различные
итерации
слой: conv4_2
Восстановление контента
• Первые слои хорошо восстанавливают изображение
• На более глубоких:
• нечеткие линии, т.к. меньше информации о пространственных координатах
• теряются цвета
conv1_1 conv2_1 conv3_1 conv4_1 conv5_1
Восстановление контента
• Надо избавиться от пространственного положения фич
• Простое решение: посчитать среднее
• Сложное: матрица ковариации между картами признаков
Feature maps
Попарные ковариации
F
Width
Height
Depth
Ковариационная
матрица
Feature maps
F
Width
Height
Depth
Среднее по
Width&Height
Mean vector
Восстановление стиля
Error back propagation
Feature maps
Feature maps
Восстановление стиля
Различные итерации
Восстановление стиля
• Получился шум в стиле Ван Гога: цвета, мазки
• Пространственные координаты полностью потеряны
conv1_1
conv1_1
conv2_1
conv1_1
conv2_1
conv3_1
conv4_1
conv1_1
conv2_1
conv3_1
conv4_1
conv5_1
conv1_1
conv2_1
conv3_1
Восстановление стиля
Комбинированный loss
s
c
x
Error back propagation
Детали контента сохраняют позицию, но перерисовываются нужным стилем.
Комбинированный loss: результат
+ Мерджит две любые картинки
+ Не требует обучения сети
+ Код на различных DL-библиотеках: TensorFlow, Torch, Theano
- Долгая работа алгоритма для онлайна
• CPU: 5min
• GPU: 10-15 sec
Artistic Style: резюме
Вместо оптимизации изображения
обучаем сеть, которая трансформирует его в стилизованное.
Real-Time Style Transfer
Обучение сети-генератора
s
X
«Пирамида»: сеть видит исходное изображение в разных
разрешениях.
Convolution
block
Join block
Структура сети-генератора
+ Скорость: можно сделать онлайн-обработку фото/видео
• Inference: 20-100 ms на GPU
- Требует обучения модели под каждый стиль.
- Длительность: 1-4h (GPU, Titan X)
- Тяжело экспериментировать
- Код только на Torch (на момент разработки приложения)
Real-Time Style Transfer: резюме
Эксперименты
«Жертва» экспериментов
Artistic style: из коробки
• Хорошо передает стиль (мазки, цвета)
• Трудно добиться «чистых» изображений
• Удалось оптимизировать до 100 мс/фото под один из стилей
Итог: не подходит из-за скорости.
Artistic style: резюме
Content Style Expected result
+ =
Ожидание
Real-Time Style Transfer
Реальность
Style
Real-Time Style Transfer: из коробки
• Из коробки плохая стилизация
• Трудно экспериментировать из-за долгих итераций обучения
• Хороший результат:
• код на Torch Ульянова
• + модель генератора Johnson’а
• + патчи
Real-Time Style Transfer: результат
Стиль
Результат
Real-Time Style Transfer: результат
Улучшения алгоритма для видео
Недостатки решения: лица
• Алгоритму выгодно накладывать текстуру
на «пустые» области
• Рябь сильно ухудшает качество видео
Недостатки решения: рябь на видео
Heatmap loss
То, что не может математика, может дизайнер.
Designer loss
Zoom интересной
области
Designer loss
Можно изменять исходные изображения при обучении, чтобы сеть
была устойчива к освещению/шуму/…
+noise
Augmentation
Super-resolution – улучшение разрешения фото.
+ Отлично подходит, чтобы убрать мелкий шум
+ Есть предобученная сеть waifu2x
- Скорость: дополнительный прогон через сеть
Super-resolution
Super-resolution: waifu
1. Heatmap loss
2. Designer loss
3. Augmentation
4. Super-resolution
Стабилизация видео: резюме
Генерация стилей
• Большое кол-во параметров и их значений
• слои, веса, размеры картинок, …
• Оценка результата – «на глаз»
• Loss плохо коррелирует с качеством выходного изображения
• алгоритмы итеративны – много результатов => «глаз замыливается»
Итерация обучения
Красота
Сложности подбора стиля
• Обратный брутфорс проще,
чем прямой
• Надо найти несколько
наборов «рабочих»
параметров
• Дотюнивать кандидатов
руками
• Коробочное решение – FGLab
Интерфейс подбора стиля
Интерфейс подбора стиля
1. Берем много стилевых картинок
2. Рабочие сеты гипер-параметров
3. Много GPU
4. Redbull/Monster
5. ???
6. PROFIT
Штамповка стилей
Результаты
• Пользователям легче работать с фото, чем с видео
• Больше нравятся лайт трансформации
User experience
• Пользователи юзали MSQRD/Snapchat + Artisto
• Добавили такой функционал из ICQ
• Перерисованные маски гармоничнее выглядят
Маски
Спасибо за внимание!
Вопросы?
Appendix
• Нейросети на Torch (LUA)
• Пробовали переписать на TensorFlow (Python)
• наткнулись на баг с выделением памяти на GPU
• Backend
• Docker-контейнер Ubuntu на centos7
• C + luajit
• Быстродействие на GPU
• 24ms, видео 350x350
• 75ms, фото 1024x1024
Технические детали
• Игровые карты Geforce Titan X и 1080
• серверные значительно дороже
• amazon: дорого, слабые карты (на момент запуска)
• На launch’е ставили PC из-за отсутствия серверов в продаже
• Большинство GPU-карт требуют особую материнскую плату
• Сервера: 4 x Titan X
Сервера
руководит процессом
Бэкенд
Модель генератора Johnson’а

More Related Content

Similar to Artisto App, Highload 2016

Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновTrueConf__
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2Uralcsclub
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеруМихаил Кокорев
 
Как мы храним 75 млн пользователей (Денис Бирюков)
Как мы храним 75 млн пользователей  (Денис Бирюков)Как мы храним 75 млн пользователей  (Денис Бирюков)
Как мы храним 75 млн пользователей (Денис Бирюков)Ontico
 
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (..."Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...AvitoTech
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеруmiiihus
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеруМихаил Кокорев
 
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt) “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)Alina Vilk
 
Растровая и векторная графика
Растровая и векторная графикаРастровая и векторная графика
Растровая и векторная графикаSergey Kolodin
 
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Yandex
 
Modern neural net architectures - Year 2019 version
Modern neural net architectures - Year 2019 versionModern neural net architectures - Year 2019 version
Modern neural net architectures - Year 2019 versionGrigory Sapunov
 
ВТ-2015 Лекция 3. Кодирование, часть 2
ВТ-2015 Лекция 3. Кодирование, часть 2ВТ-2015 Лекция 3. Кодирование, часть 2
ВТ-2015 Лекция 3. Кодирование, часть 2Denis Korolev
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишеньAnton Ignatov
 
Steel monkeys: Unity3D глазами программиста графики
Steel monkeys: Unity3D глазами программиста графикиSteel monkeys: Unity3D глазами программиста графики
Steel monkeys: Unity3D глазами программиста графикиDevGAMM Conference
 

Similar to Artisto App, Highload 2016 (20)

Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 
Как мы храним 75 млн пользователей (Денис Бирюков)
Как мы храним 75 млн пользователей  (Денис Бирюков)Как мы храним 75 млн пользователей  (Денис Бирюков)
Как мы храним 75 млн пользователей (Денис Бирюков)
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
 
JavaFX 2.0 overview
JavaFX 2.0 overviewJavaFX 2.0 overview
JavaFX 2.0 overview
 
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (..."Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 
Дополненная реальность через веб камеру
Дополненная реальность через веб камеруДополненная реальность через веб камеру
Дополненная реальность через веб камеру
 
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt) “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 
Растровая и векторная графика
Растровая и векторная графикаРастровая и векторная графика
Растровая и векторная графика
 
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
 
Modern neural net architectures - Year 2019 version
Modern neural net architectures - Year 2019 versionModern neural net architectures - Year 2019 version
Modern neural net architectures - Year 2019 version
 
ВТ-2015 Лекция 3. Кодирование, часть 2
ВТ-2015 Лекция 3. Кодирование, часть 2ВТ-2015 Лекция 3. Кодирование, часть 2
ВТ-2015 Лекция 3. Кодирование, часть 2
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишень
 
Steel monkeys: Unity3D глазами программиста графики
Steel monkeys: Unity3D глазами программиста графикиSteel monkeys: Unity3D глазами программиста графики
Steel monkeys: Unity3D глазами программиста графики
 
рр
рррр
рр
 
Lenincraft
LenincraftLenincraft
Lenincraft
 

More from Eduard Tyantov

Эксплуатация ML в Почте Mail.ru
Эксплуатация ML в Почте Mail.ruЭксплуатация ML в Почте Mail.ru
Эксплуатация ML в Почте Mail.ruEduard Tyantov
 
Опыт моделеварения от команды ComputerVision Mail.ru
Опыт моделеварения от команды ComputerVision Mail.ruОпыт моделеварения от команды ComputerVision Mail.ru
Опыт моделеварения от команды ComputerVision Mail.ruEduard Tyantov
 
Саморазвитие: как я не усидел на двух стульях и нашел третий
Саморазвитие: как я не усидел на двух стульях и нашел третийСаморазвитие: как я не усидел на двух стульях и нашел третий
Саморазвитие: как я не усидел на двух стульях и нашел третийEduard Tyantov
 
Project Management 2.0: AI Transformation
Project Management 2.0: AI TransformationProject Management 2.0: AI Transformation
Project Management 2.0: AI TransformationEduard Tyantov
 
Kaggle Google Landmark recognition
Kaggle Google Landmark recognitionKaggle Google Landmark recognition
Kaggle Google Landmark recognitionEduard Tyantov
 
Face Recognition: From Scratch To Hatch
Face Recognition: From Scratch To HatchFace Recognition: From Scratch To Hatch
Face Recognition: From Scratch To HatchEduard Tyantov
 
Deep Learning: Advances Of The Last Year
Deep Learning: Advances Of The Last Year Deep Learning: Advances Of The Last Year
Deep Learning: Advances Of The Last Year Eduard Tyantov
 
Kaggle review Planet: Understanding the Amazon from Space
Kaggle reviewPlanet: Understanding the Amazon from SpaceKaggle reviewPlanet: Understanding the Amazon from Space
Kaggle review Planet: Understanding the Amazon from SpaceEduard Tyantov
 

More from Eduard Tyantov (8)

Эксплуатация ML в Почте Mail.ru
Эксплуатация ML в Почте Mail.ruЭксплуатация ML в Почте Mail.ru
Эксплуатация ML в Почте Mail.ru
 
Опыт моделеварения от команды ComputerVision Mail.ru
Опыт моделеварения от команды ComputerVision Mail.ruОпыт моделеварения от команды ComputerVision Mail.ru
Опыт моделеварения от команды ComputerVision Mail.ru
 
Саморазвитие: как я не усидел на двух стульях и нашел третий
Саморазвитие: как я не усидел на двух стульях и нашел третийСаморазвитие: как я не усидел на двух стульях и нашел третий
Саморазвитие: как я не усидел на двух стульях и нашел третий
 
Project Management 2.0: AI Transformation
Project Management 2.0: AI TransformationProject Management 2.0: AI Transformation
Project Management 2.0: AI Transformation
 
Kaggle Google Landmark recognition
Kaggle Google Landmark recognitionKaggle Google Landmark recognition
Kaggle Google Landmark recognition
 
Face Recognition: From Scratch To Hatch
Face Recognition: From Scratch To HatchFace Recognition: From Scratch To Hatch
Face Recognition: From Scratch To Hatch
 
Deep Learning: Advances Of The Last Year
Deep Learning: Advances Of The Last Year Deep Learning: Advances Of The Last Year
Deep Learning: Advances Of The Last Year
 
Kaggle review Planet: Understanding the Amazon from Space
Kaggle reviewPlanet: Understanding the Amazon from SpaceKaggle reviewPlanet: Understanding the Amazon from Space
Kaggle review Planet: Understanding the Amazon from Space
 

Artisto App, Highload 2016