Анализ настроения посетителей в кафе. Сфера услуг. Например, для улучшения обслуживания в публичных местах. Люди часто могут сказать не совсем то, что они почувствовали на самом деле, но микровыражения и эмоции будут видны на лицах. Видеонаблюдение с функцией распознавания эмоций поможет отследить изменение настроения посетителей и влиять на причины этого.
Задача в том, чтобы научить нейронную сеть обрабатывать изображения и добавлять к ним новые атрибуты или изменять исходные. Это просто проверить на фотографиях людей, которые в итоге будут улыбаться. Для этого достаточно несложной архитектуры и доступных мощностей. Внутри нейронной сети происходит нечто поинтереснее, чем попиксельное рисование. Она создает высокоуровневое описание лица и работает с этими данными. Входные данные для сети — набор фотографий с вырезанным фоном. На выходе они будут восстановленными.
В исходных данных для нейросети содержится примерно 50 000 параметров. Как информация передается по сети? Входные нейроны получают данные, передают их дальше по связям друг между другом, и так информация доходит до выхода. В процессе происходит обработка.
Автоэнкодер и функция ошибки. Имея значения пикселей на выходе и на входе, мы возводим разницу в квадрат — это и есть отклонение, которое нужно минимизировать. Когда изображения в результате только похожи на входные, задача не решается. Если бы вектор фич был полным, то есть для каждого атрибута существовал бы отдельный нейрон, сеть разрослась бы до невероятных объемов и уровень сложности потребовал бы серьезного увеличения технических мощностей.
Что такое “улыбка” в машинном понимании? Данные лиц с улыбками и лиц без них подаются на вход энкодера и мы получаем два вектора скрытых параметров. Среднее значение первого минус среднее значение второго равно улыбка.
Используем это знание для нашей нейросети и получаем местами ожидаемые, а местами совсем нет результаты. В чем дело? В полносвязных слоях. Не стоит строить всю систему только из них. На входе и выходе эффективнее заменить на сверточные слои, а в середине можно оставить все как было. Что изменилось? Результат стал гораздо лучше при прежнем времени, потраченном на обучение нейросети. Неплохо.
Но это не все проблемы. Картинки на выходе мутные. Решение — взять другую архитектуру. VGG19, например, умеет классифицировать образы. Вместо среднеквадратичного отклонения в нее зашит подход на основе евклидова расстояния. Это значит, что фокус с пикселей перемещается на характеристики в многомерном пространстве. Так нейросеть лучше понимает суть изображения лица в целом.
Ну а мутность решается использованием генеративно-состязательной сети. Генератор и дискриминатор. Первый берет рандомные параметры и генерирует фейковую картинку. Второй занимается сверкой результата с реальностью. Опустим некоторые подробности. Нюанс работы этой сети в том, что она не может остановиться сама. Мы человеческим взглядом отслеживаем момент, когда фейковое изображение достаточно похоже на настоящее.
Если объединить все, что мы узнали в ходе эксперимента, то получим результат с решенной проблемой мутности и непохожести. Это была интересная встреча. Слушатели задавали вопросы, Иван пояснял важные запутанные моменты. Хорошо, когда кто-то делится опытом и хорошо, когда это полезно.
Новые встречи, онлайн-семинары, совместные проекты.