Задание 2. Распознавание пола и возраста по фотографии лица человека (2012)

Введение

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

Описание задания

Обязательная часть

Реализовать алгоритм распознавания пола человека на основе фронтальной фотографии лица. Алгоритм должен быть реализован в виде функции на MATLAB со следующей сигнатурой:
res = recognize_gender(img, model), где img - входное изображение, размером 110x115 пикселей (как в базе), model - libsvm модель классификатора, res - 0 (если на изображении мужчина) или 1 (если на изображении женщина).

Описание алгоритма:

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

Улучшение точности работы классификатора за счёт добавления собственных признаков - приветствуется.

Реализация

Извлечение LBP-гистограмм необходимо реализовать самостоятельно.
Для обучения SVM-классификатора воспользоваться библиотекой libsvm . Для MATLAB есть обёртка, которая распространяется вместе с основным пакетом .

Советы по реализации

  • Внимательно прочитайте Readme файл для MATLAB-обёртки libsvm
  • При компилировании mex-файлов libsvm на 64х архитектуре необходимо поставить флаг -largeArrayDims, как сказано в make.m
  • Для обучения классификатора воспользуйтесь техникой скользящего контроля
  • В прилагаемых базах классы несбалансированы, поэтому при обучении с помощью libsvm имеет смысл воспользоваться флагом -wi
  • При объединении признаков разного рода не забывайте о нормализации

Бонусная часть

В качестве бонусной части вам предлагается на основе тех же признаков и того же классификатора реализовать регрессию возраста человека по фронтальной фотографии лица. Для обучения регрессии в libsvm воспользуйтесь флагами -s 3 или -s 4. Функция определения возраста должна иметь следующую сигнатуру:
res = recognize_age(img, model), где img - входное изображение, размером 110x115 пикселей (как в базе), model - libsvm модель классификатора, res - число double, указывающее возраст человека.

Описание тренировочных данных

Тренировочные данные для распознавания пола находятся в архиве gender_recognition.zip и содержат две папки - male и female.
Тренировочные данные для распознавания возраста находятся в архиве age_recognition.zip и содержат картинки и файл ages.mat, в котором имя картинки сопоставляется возрасту человека на ней.
Все картинки имеют размер 110x115 пикселей. Линия, соединяющая зрачки строго горизонтальная.

Оценка результатов

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

Содержание архива с выполненным заданием

Архив должен содержать код и файл readme, со следующей информацией:

Общая информация:

  • ФИО: <Фамилия Имя Отчество>
  • Задание: <название задания>
  • Система: <система программирования> ОС: <операционная система>
  • Комментарии: <комментарии по реализации / пожелания / впечатления и т.д.>

Базовая и бонусная часть:

  • Функция реализации алгоритма
  • Файл model.mat, содержащий обученную модель libsvm, сохранённый с помощью команды save('model.mat', 'model')
  • Какие признаки вы использовали для распознавания пола? Возраста?
  • Какие проценты получились на скользящем контроле и с какими параметрами?

Литература

  1. Multi-View Gender Classification Using Local Binary Patterns and Support Vector Machine
  2. Face Description with Local Binary Patterns: Application to Face Recognition
  3. Gender Classification of Face Images

Данные

  • gender_recognition.zip - архив с тренировочными данными для распознавания пола
  • age_recognition.zip - архив с тренировочными данными для распознавания возраста
© Лаборатория компьютерной графики при ВМиК МГУ