Студенческая практика 2016-2017

Пузырев Дмитрий Александрович, группа 154, тема проекта "Анализ изображений лиц для определения эмоциональных реакций человека"

Описание и актуальность текущей задачи

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

Обзор технологических решений

Инструменты

Основным инструментом реализации будет являться язык программирования Python3 -- в данном языке имеется ряд полезных библиотек для машинного обучения и компьютерного зрения, позволяющих охватить больший спект задачи и существенно выиграть в скорости, в частности:

  1. PsychoPy -- создание экспериментов по неврологии и психологии (т.е. различных аудио- или визуальных раздражителей)
  2. PyGame -- создание мультимедиа-интерфейса для работы с пользователем
  3. Numpy -- работа с линейной алгеброй
  4. Theano и Tensorflow -- обучение нейронных сетей

Некоторые существующие open-source решения

В рамках первичной работы были рассмотрены некоторые готовые решения, опыт которых может помочь в реализации проекта

  1. OpenFace (https://www.cl.cam.ac.uk/research/rainbow/projects/openface/wacv2016.pdf)

Полезные фичи:

-- определение положения зрачка

-- направление взгляда

-- определение положения головы

-- определение лица

-- определение положения и движения основных "сегментов" лица

Возможные направления модификации:

-- оценка расстояния до пользователя (например, с помощью отношения размера зрачка в натуральную величину и на картинке)

-- определение, смотрит ли человек в экран или нет и если да, то в какую часть (если мы знаем, в какую сторону взгляд, то можно продлить его вектор и посмотреть, в какую часть экрана он попадёт)

-- сопоставить положение сегментов лица с основными эмоциями и на основе этого натренировать нейронную сеть, определяющую эмоции

  1. PyGaze (https://github.com/esdalmaijer/PyGaze)

Полезные фичи:

-- определние положения зрачка

-- составление "тепловой карты" взгляда

-- составление "пути взгляда" по экрану (последние две фичи, к большому сожалению, работают либо со специальным оборудованием, либо с мышью (в dummy mode) Возможные направления модификации:

-- использование "тепловых карт" и пути для определения наиболее интересующей студента информации (возможно, в виде нейросети)

Основные направления работы

  1. Определение, смотрит ли человек в экран или нет
  2. Если да, то в какую часть экрана
  3. Определить, куда чаще смотрел студент в течение видео
  4. Определить базовые эмоции
  5. Сопоставить направление взгляда и эмоции с успеваемостью студента
  6. Научиться подбирать сложность тестов в зависимости от "показателей" студента