Показатель
- Что такое эмоция
- Рабочий план по решению проблемы
- Шаг 1. Предварительная обработка изображений
- Шаг 2: извлечение элементов из лиц
- Краткое введение в SIFT
- Шаг 3. Кластеризация функций
- Кодировка
- Объединение
- BoW Featurization
- ВЛАД Особенности
- Шаг 4: Обучение набора данных и заключение
- Используемый набор данных
- Обработка набора данных
- "Обучение"
Что такое эмоция?
Эмоция - это психическое и физиологическое состояние, которое является субъективным и частным. Он включает в себя множество моделей поведения, действий, мыслей и чувств. Выражение лица можно рассматривать не только как наиболее естественную форму выражения человеческих эмоций, но и как ключевой прием невербального общения.
В 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 и выявить ограничения этого подхода.