Как на­учить ней­рон­ную сеть до­бав­лять улыб­ку на ли­ца?

26 сентября 2018
Как научить нейронную сеть добавлять улыбку на лица?

Вы знаете, что творится у вас в голове? У каждого из нас есть прекрасный механизм самозагрузки, который обеспечивают обратные связи между мозгом и окружающим миром. Это нужно для отладки процесса эволюции. Простейшие компьютерные модели нейросетей способны за короткое время разрастись до невероятного уровня сложности при условии, что их запрограммировали на удаление непригодных для выживания конфигураций и воспроизведение выгодных. Это называется нейродарвинизмом. В Воронеже также занимаются компьютерными нейросетями, но только в связке с машинным обучением. И пусть сообщество заинтересованных людей только зарождается, им уже есть чем поделиться. Недавно мы провели свой первый meetup по теме генерации изображений с применением доменной адаптации. Исследователь и инженер Иван Брагин рассказал, как обучал свою нейронную сеть на конкретном примере.


ЗАЧЕМ

Анализ настроения посетителей в кафе. Сфера услуг. Например, для улучшения обслуживания в публичных местах. Люди часто могут сказать не совсем то, что они почувствовали на самом деле, но микровыражения и эмоции будут видны на лицах. Видеонаблюдение с функцией распознавания эмоций поможет отследить изменение настроения посетителей и влиять на причины этого.

Задача в том, чтобы научить нейронную сеть обрабатывать изображения и добавлять к ним новые атрибуты или изменять исходные. Это просто проверить на фотографиях людей, которые в итоге будут улыбаться. Для этого достаточно несложной архитектуры и доступных мощностей. Внутри нейронной сети происходит нечто поинтереснее, чем попиксельное рисование. Она создает высокоуровневое описание лица и работает с этими данными. Входные данные для сети — набор фотографий с вырезанным фоном. На выходе они будут восстановленными.

ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ

В исходных данных для нейросети содержится примерно 50 000 параметров. Как информация передается по сети? Входные нейроны получают данные, передают их дальше по связям друг между другом, и так информация доходит до выхода. В процессе происходит обработка.

Автоэнкодер и функция ошибки. Имея значения пикселей на выходе и на входе, мы возводим разницу в квадрат — это и есть отклонение, которое нужно минимизировать. Когда изображения в результате только похожи на входные, задача не решается. Если бы вектор фич был полным, то есть для каждого атрибута существовал бы отдельный нейрон, сеть разрослась бы до невероятных объемов и уровень сложности потребовал бы серьезного увеличения технических мощностей.

Что такое “улыбка” в машинном понимании? Данные лиц с улыбками и лиц без них подаются на вход энкодера и мы получаем два вектора скрытых параметров. Среднее значение первого минус среднее значение второго равно улыбка.

Используем это знание для нашей нейросети и получаем местами ожидаемые, а местами совсем нет результаты. В чем дело? В полносвязных слоях. Не стоит строить всю систему только из них. На входе и выходе эффективнее заменить на сверточные слои, а в середине можно оставить все как было. Что изменилось? Результат стал гораздо лучше при прежнем времени, потраченном на обучение нейросети. Неплохо.

Но это не все проблемы. Картинки на выходе мутные. Решение — взять другую архитектуру. VGG19, например, умеет классифицировать образы. Вместо среднеквадратичного отклонения в нее зашит подход на основе евклидова расстояния. Это значит, что фокус с пикселей перемещается на характеристики в многомерном пространстве. Так нейросеть лучше понимает суть изображения лица в целом.

Ну а мутность решается использованием генеративно-состязательной сети. Генератор и дискриминатор. Первый берет рандомные параметры и генерирует фейковую картинку. Второй занимается сверкой результата с реальностью. Опустим некоторые подробности. Нюанс работы этой сети в том, что она не может остановиться сама. Мы человеческим взглядом отслеживаем момент, когда фейковое изображение достаточно похоже на настоящее.

ИТОГИ

Если объединить все, что мы узнали в ходе эксперимента, то получим результат с решенной проблемой мутности и непохожести. Это была интересная встреча. Слушатели задавали вопросы, Иван пояснял важные запутанные моменты. Хорошо, когда кто-то делится опытом и хорошо, когда это полезно.

ЧТО И ГДЕ

ДАЛЬШЕ

Новые встречи, онлайн-семинары, совместные проекты.