Показатель

Что такое эмоция?

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

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

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

[Перейти к индексу]

План работы по решению проблемы

  • На этапе предварительной обработки изображения обрезаются вокруг лиц и нормализуются по интенсивности.
  • Вычислить локальные дескрипторы и извлечь функции из обработанных изображений.
  • Кластеризация функций с использованием алгоритма K-средних для создания векторного представления изображения Пакет слов (BOW). ИЛИ
  • Вычислить представление Вектор локально агрегированных дескрипторов (VLAD).
  • Наконец, обучите помеченный набор данных классам эмоций с помощью классификатора SVM.

Давайте углубимся в каждый шаг.

[Перейти к индексу]

Шаг 1. Предварительная обработка изображений

  • Определите лицо по изображению с помощью классификатора хааркаскад . Обрежьте изображение до разрешения (256 x 256). Примените фильтр шумоподавление.
Note: haarcascades are trained classifiers for detecting objects of a particular type, e.g. faces (frontal, profile), pedestrians etc.

[Перейти к указателю] [Перейти к рабочему плану]

Шаг 2. Извлечение элементов из лиц

Теперь у нас есть лица, отделенные от избыточного содержимого изображения. Пришло время выделить некоторые важные черты лица.

Краткое введение в SIFT:

Функции BoW полагаются на предварительное вычисление локальных дескрипторов изображений. Мы будем использовать дескриптор Масштабно-инвариантное преобразование признаков (SIFT) для захвата черт лица. Их вычисления основаны на гауссовом масштабном пространстве изображения и соответствующей разнице гауссианов (DoG), которая обнаруживает ключевые точки изображения, такие как края.

SIFT определяется как 128-мерный вектор, описывающий интенсивность изображения путем вычисления локальных участков градиента в этих ключевых точках.

Очень интересными свойствами этого дескриптора по отношению к нашей проблеме являются его инвариантность к аффинным преобразованиям и устойчивость к изменениям освещения, шума и небольшим изменениям точки обзора.

Таким образом, они могут запечатлеть выражение лица , даже если голова испытуемого видна под некоторым углом.

[Перейти к указателю] [Перейти к рабочему плану]

Шаг 3. Кластеризация функций

Кодировка:

Он квантует участки изображения, которые составляют изображение, которое нужно классифицировать. Он работает путем первого запуска K-средних на наборе всех пиксельных патчей, которые мы собираем с помощью дескрипторов SIFT.

Это строит так называемый словарь / кодовую книгу, представленную центроидами, полученными в результате кластеризации. В конце этого процесса вы получаете K-репрезентативные «визуальные слова».

Эти «визуальные слова» представляют то, что обычно понимается как ваш визуальный словарь.

Когда у вас есть эти визуальные слова, кодирование - это процесс присвоения каждому из этих участков в вашем изображении ближайшему соседу в словаре.

Объединение:

Характеристики BoW: представление BoW популярно для приложений индексации и категоризации. Кроме того, эти векторные представления можно сравнивать со стандартными расстояниями и впоследствии использовать надежными методами классификации, такими как опорные векторные машины.
Это относится к процессу представления изображения как «пакета визуальных слов».

Слово «мешок» здесь означает, что после того, как мы закодировали каждый фрагмент с помощью слова (число от 1 до K), мы создаем новое представление, которое отбрасывает пространственные отношения между словами, составляющими изображение.
Это процесс построения вектора признаков, который представляет собой гистограмму визуальных слов (в отличие от помещения полного «изображения» в вектор признаков). Дескриптор будет инвариантным к изменениям в «порядке слов / исправлений».

В контексте компьютерного зрения это означает «инвариантность относительно поворотов и искажений изображения».

Каждый дескриптор измерения d изображения строго закреплен за кластером. Окончательное представление BoW получается в виде гистограммы, в которой подсчитывается количество вхождений каждого визуального слова в изображении. Следовательно, он создает k-мерный вектор.

[Перейти к индексу] [Перейти к рабочему плану] [Перейти к кодированию]

VLAD Featurization: в этом представлении мы предлагаем векторное представление изображения, которое объединяет дескрипторы на основе критерия местоположения в пространстве функций. Его можно рассматривать как расширение представления BOW. размерность 𝙳 нашего представления равна D = k * d.
где k = визуальные слова (центроиды) с k-средними
d = размерность локального дескриптора

Давайте разберемся с VLAD визуально

  • Изучите кодовую книгу C = {c1,… ck} k центроидов с k-средними.
  • ① Каждый локальный дескриптор x связан со своим ближайшим центроидом cᵢ = NN (x)

  • ② Идея состоит в том, чтобы накопить для каждого центроида c разности x - cᵢ векторов x, присвоенных cᵢ .

  • Это характеризует распределение векторов относительно центроида.

  • ③ Компонент 𝚟 получается как сумма по всем дескрипторам изображения
  • Вектор впоследствии L2-нормирован.

Сводка этапов вычислений VLAD

размер D = k * 128, здесь d = 128

Основное преимущество VLAD перед BoW состоит в том, что мы добавляем больше различительных свойств в наш вектор признаков, добавляя разницу каждого дескриптора со средним значением в его ячейке.

[Перейти к индексу] [Перейти к рабочему плану] [Перейти к кодированию] [Перейти к объединению]

Шаг 4: обучение набора данных и заключение

Используемый набор данных:

Мы использовали подмножество набора данных CK + (расширенный Cohn-Kanade) с 1125 изображениями лиц. Каждое изображение имеет ярлык из набора из 8 эмоций:

0 = neutral, 1 = anger, 2 = contempt, 3 = disgust, 
4 = fear, 5 = happy, 6 = sadness and 7 = surprise

Обработка набора данных:

В папке каждого объекта содержатся разные эмоции от нейтральных до сильных. Для каждого субъекта (человека) мы извлекли 4 изображения с соответствующими помеченными выражениями и 1 изображение с нейтральным выражением.

Для каждой метки эмоции у нас есть 4 изображения с разной интенсивностью выражения лица. Мы реплицировали метку 4 раза, чтобы соответствовать длине списка имен файлов изображений, а нейтральные файлы и метки (0 = нейтральные) добавляются в конец списков.

Обучение :

Классификатор SVM обучен по 5 классам эмоций из-за отсутствия некоторых данных. 80% набора данных используется как обучающий набор, а остальные 20% - как тестовый набор. Расчетная точность на тестовом наборе с использованием обеих характеристик выглядит следующим образом:

Максимальная точность для BoW (79,89%) достигается при K = 100, а для VLAD (97,35%) - при K = 40.

При использовании вектора VLAD можно значительно повысить точность по сравнению с простым вектором BoW.

Он неплохо работает и в реальном времени.

У этой модели есть несколько ограничений, и ее можно еще улучшить. Читателям предоставляется возможность сравнить этот подход с Deep CNN и выявить ограничения этого подхода.