Введение в естественно-интуитивное взаимодействие с компьютером

Модуль анализа мимики лица Intel Perceptual Computing SDK

Показывать лекцию целиком

Основы распознавания лиц

Презентацию к лекции можно скачать здесь.

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

По сути, отслеживание и распознавание лиц является практическим применением теории распознавания образов, в задачу которого входит автоматическая локализация лица на фотографии или видеопотоке и, в случае необходимости, идентификация персоны по лицу. В настоящее время функцию идентификации людей на фотографиях уже активно используют в программном обеспечении для управления фотоальбомами (Picasa, iPhoto и др.) [, , ].

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

  • Обеспечение безопасности:
  • Транспортные узлы: аэропорты, вокзалы, автостанции, метро
  • Места массового пребывания людей: стадионы, развлекательные центры, бизнес-центры, кинотеатры
  • Усиление контроля:
  • Пограничные паспортно-визовые контрольные пункты
  • Проходные и КПП на режимных, стратегических и коммерческих объектах
  • Бесконтактный контроль состояния человека:
  • Диспетчеров и охранников
  • Пилотов, машинистов, водителей
  • Реклама и маркетинговые исследования:
  • Интерактивные сервисы, реагирующие на мимику
  • Интерактивная реклама
  • Оценка удовлетворенности потребителя
  • Индустрия развлечений:
  • Создание 3D-фильмов
  • Моделирование виртуальной реальности
  • 3D-медицина:
  • Обучение на 3D-моделях
  • 3D-телемедицина
  • Современный рынок систем

    Уже более сорока лет разрабатываются автоматизированные, а сейчас и автоматические системы распознавания человеческих лиц.

    Существует несколько классов таких систем:

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

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

    Для решения задач отслеживания и распознавания лиц были предложены различные методы. Среди таких методов можно выделить подходы, основанные на нейронных сетях, на преобразовании Карунена-Лоэва (или метод главных компонет), скрытых марковских сетях, метод Виолы–Джонса, вейвлет преобразованиях [, , ].

    Метод Виолы-Джонса

    В настоящее время метод Виолы–Джонса является самым популярным методом для поиска области лица на изображении в силу своей высокой скорости и эффективности. Пол Виола и Майкл Джонс разработали и представили этот метод в 2001. В основе метода Виолы–Джонса по поиску лица лежат идеи: интегральное представление изображения по признакам Хаара, метод построения классификатора на основе алгоритма адаптивного бустинга, и метод комбинирования классификаторов в каскадную структуру. Эти идеи позволяют осуществлять поиск лица в режиме реального времени [].

    Признак Хаара состоит из смежных прямоугольных областей. Эти области позиционируются на изображении, далее происходит суммирование интенсивности пикселей в областях, затем между суммами вычисляется разность. Значение полученной разности и является значением определенного признака, определенного размера, определенным образом расположенного на изображении. На ].

    На этапе обнаружения в методе Виолы—Джонса используется окно, определенного размера, которое движется по изображению. Признак Хаара рассчитывается для каждой области изображения, над которой проходит окно. Наличие или отсутствие предмета в окне определяется разницей между значением признака и обучаемым порогом. Поскольку признаки Хаара мало подходят для обучения или классификации, для описания объекта с достаточной точностью необходимо большее число признаков. Поэтому в методе Виолы—Джонса признаки Хаара организованы в каскадный классификатор [].

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

    (рис 8.1) Признаки Хаара (рис 8.2) Примеры использования признаков Хаара

    Методу Виолы–Джонса присуща высокая вероятность точного обнаружения лица, даже при наблюдении объекта под небольшим углом, примерно до 30°. Но при большем угле наклона вероятность обнаружения лица резко падает. В стандартной реализации метода указанная особенность не позволяет обнаруживать лицо человека, повернутое под произвольным углом, что в значительной мере затрудняет или делает невозможным использование данного метода в современных системах [].

    Метод главных компонент

    Метод главных компонент (Principal Component Analysis, PCA) – один из наиболее распространенных методов для уменьшения размерности данных, потери наименьшего количества информации. Метод позволяет выделять характерные признаки лица и использовать их для реконструкции и восстановления. Данный метод основан на преобразовании Карунена – Лоэва.

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

    (рис 8.3) Пример изображений собственных векторов

    Для каждого изображения лица вычисляются его главные компоненты. Обычно берётся от 5 до 200 главных компонент. Остальные компоненты кодируют мелкие различия между лицами и шумами. Процесс распознавания заключается в сравнении главных компонент неизвестного изображения с компонентами всех известных изображений. При этом предполагается, что изображения лиц, соответствующих одному человеку, сгруппированы в кластеры в собственном пространстве. Из базы данных выбираются изображения кандидаты, имеющие наименьшее расстояние от входного (неизвестного) изображения [, , ].

    Так же выделяют антропометрический метод, суть которого заключается в выделении набора ключевых точек (или областей) лица и последующем выделении набора признаков. Каждый признак является либо расстоянием между ключевыми точками, либо отношением таких расстояний. Кроме количественных признаков существуют качественные признаки, которые полнее описывают объект принятия решений: пол, тип, телосложение, рост. В свою очередь каждый признак может принимать одно из нескольких возможных значений. Для того, чтобы представить количественные признаки в бинарном виде необходимо, основываясь на статистические данные, разбить диапазон допустимых значений признака на интервалы. Таким образом, каждая личность, изображенная на фотопортрете, может быть описана массивом признаков в виде последовательности нулей и единиц, порцией знаний.

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

    SDK для создания приложений по отслеживанию и распознаванию лиц

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

  • Intel Perceptual Computing SDK – включает в себя набор алгоритмов для анализа человеческого лица, включающих определения местоположения лица, его ориентации в пространстве, выделение контрольных точек, и распознавание лица в базе данных;
  • Kinect for Windows SDK – включает в себя библиотеку Face Tracking, которая позволяет отслеживать лицо человека в кадре с построением 87-ми узловой схемы лица, не поддерживает распознавание лиц;
  • OpenCV – эта библиотека включает в себя модуль opencv_objdetec, который позволяет обнаруживать объекты на изображении, включая нахождение лиц и обнаружение людей;
  • IIT Face Recognizer SDK - представляет собой алгоритмическо-программный комплекс, решающий задачи верификации и идентификации пользователя на основе сравнительного анализа предъявляемого лица. Процедура верификации предусматривает сравнение предъявляемого лица с выбранным лицом, хранящимся в текущей базе данных. Процедура идентификации предусматривает проверку принадлежности предъявляемого лица ко всей базе данных лиц или заранее оговоренной ее части. Предлагаемое решение хорошо зарекомендовало себя в системах персонального доступа, игровых системах, системах доступа к данным и ряде других приложений [].
  • Возможности модуля анализа лица Intel Perceptual Computing SDK

    Модуль анализа лица Intel Perceptual Computing SDK предоставляет набор алгоритмов, которые позволяют определять местоположения лица, его ориентации в пространстве, выделение контрольных точек, и распознавание лица в базе данных [, ].

    Как показано на рис 8.4, алгоритм обнаружения лиц выявляет прямоугольную плоскость положения лица или нескольких лиц из изображения или видео последовательности. Это может быть полезным, когда необходимо определить, сколько лиц на изображении и их расположение.

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

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

    (рис 8.4) Операции слежения за лицом

    Общий алгоритм создания приложений по отслеживанию лица

    Приложение использует следующую процедуру для создания экземпляра модуля анализа лица и предоставления из него данных:

    1) Расположение модуля реализации:

    Приложение использует функцию PXCSession::CreateImpl для создания экземпляра интерфейса PXCFaceAnalysis, как показано в примере 8.1.

    PXCFaceAnalysis *face=0;
    session->CreateImpl(PXCFaceAnalysis::CUID,(void**)face);
    

    2) Инициализация модуля:

    Для инициализации модуля используются две функции QueryProfile и SetProfile. Первая функция возвращает доступные конфигурации. Последняя содержит одну конфигурацию в качестве текущей активной конфигурации. В примере 8.2, приложение запрашивает первую поддерживаемую конфигурацию, использует ее, чтобы найти устройство ввода, которое может предоставить данные, а затем инициализирует модуль с конфигурацией. Следует отметить, что требования входного модуля задаются как часть структуры ProfileInfo, которая может быть как глубинным изображением, и/или цветным изображением. Служебный класс UtilCapture обнаружит устройство ввода, соответствующее входным характеристикам модуля.

    PXCFaceAnalysis::ProfileInfo pinfo;
    face->QueryProfile(0,pinfo);
    UtilCapture capture(session); 
    capture.LocateStreams(pinfо.inputs);
    face->SetProfile(pinfo);
    

    3) Инициализация элементов анализа лица:

    Дополнительно к инициализации модуля приложению необходимо инициализировать каждый элемент анализа лица, такой как отслеживание лица и его контрольных точек. Каждый элемент имеет собственные конфигурационные параметры. Приложение вызывает функции QueryProfile и SetProfile для интерфейса каждого элемента, например, PXCFaceAnalysis::Detection, PXCFaceAnalysis::Landmark, как показано в примере 8.3.

    PXCFaceAnalysis::Detection *det=face->DynamicCast
      <PXCFaceAnalysis::Detection>();
    PXCFaceAnalysis::Detection::ProfileInfo dinfo;
    det->QueryProfile(0,dinfo);
    det->SetProfile(0,dinfo);
    

    4) Цикл обработки данных:

    В цикле приложение передает данные от устройства ввода модулю анализа лица. Для передачи данных приложение вызывает функцию ProcessImageAsync, как показано в примере 8.4. Следует отметить, что данные из устройства ввода могут содержать комбинированные изображения, такие как цветные и глубиные изображения. Приложение может использовать набор функций PXCSmartArray<PXCImage> для упрощения программирования.

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

    PXCSmartArray<PXCImage> images;
    PXCSmartSPArray sps(2);
    for (;;) {
      // Get samples from input device and pass to the module capture.
      ReadStreamAsync(images.ReleaseRefs(),sps.ReleaseRef(0)) 
      face->ProcessImageAsync(images,sps.ReleaseRef(1));
      sps.SynchronizeEx();
      // Tracking or recognition results are ready. Now process them
      ...
    }
    

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

    class MyPipeline: public UtilPipeline {
    public:
      MyPipeline() {
        EnableFaceLandmark();
      }
      virtual bool OnNewFrame() {
        PXCFaceAnalysis *face=QueryFace(); 
        ... // Face tracking operations
      }
    };
    int wmain(int argc, wchar_t* argv[]) {
      MyPipeline mp;
      mp.LoopFrames(); 
      return 0;
    }
    

    Данные отслеживания лица

    Приложение может использовать функцию QueryData интерфейса PXCFaceAnalysis::Detection для нахождения данных по отслеживанию лица. Также это может быть множество лиц на любом изображении. Приложение может использовать функцию QueryFace для нахождения определителей доступных лиц на изображении, как показано в примере 8.6.

    PXCFaceAnalysis::Detection *detector=face->DynamicCast
                <PXCFaceAnalysis::Detection>();
    for (int i=0;;i++) {
      pxcUID fid; pxcU64 ts;
      if (face->QueryFace(i,fid,ts)<PXC_STATUS_NO_ERROR) break;
      PXCFaceAnalysis::Detection::Data data;
      detector->QueryData (fid, data);
      // Process data
    }
    

    Данные контрольных точек лица

    При нахождении данных по контрольным точкам подобно как и при отслеживании лица приложение может использовать функции QueryLandmarkData и QueryPoseData интерфейса PXCFaceAnalysis::Landmark для нахождения данных связанных с контрольными точками, как показано в примере 8.7. Структура LandmarkData предоставляет данные о позиции для каждой определенной контрольной точки (или характерных чертах лица). Структура PoseData предоставляет информацию об ориентации головы.

    PXCFaceAnalysis::Landmark *landmark=face->DynamicCast
                <PXCFaceAnalysis::Landmark>();
    for (int i=0;;i++) {
      pxcUID fid; pxcU64 ts;
      if (face->QueryFace(i,fid,ts)<PXC_STATUS_NO_ERROR) break;
      PXCFaceAnalysis::Landmark::LandmarkData ldata;
      landmark->QueryLandmarkData (fid,
            PXCFaceAnalysis::Landmark::LABEL_NOSE_TIP, 
            0, data);
      PXCFaceAnalysis::Landmark::PoseData pdata; 
      landmark->QueryPoseData (fid,pdata);
      // Process data
    }
    

    Распознавание лица

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

    Пример 8.8 демонстрирует простой пример вычисления сходства двух неподвижных изображений. Приложение создает два экземпляра Model из двух входных изображений, выполнив функцию ProcessImageAsync, а затем функцию CreateModel. Здесь экземпляр Model является выделением главных признаков набора данных, которые представляют лицо на изображении для сравнения. Затем приложение использует функцию Compare для вычисления сходства между этими двумя моделями.

    В более сложных сценариях приложение может обрабатывать эталонные изображения в рабочем порядке и сохранять эталонные данные в базу данных. Во время выполнения приложение получает эталонные данные из базы данных и воссоздает эталонный список. Две функции Serialize и DeserializeModel предназначены для такого использования.

    PXCFaceAnalysis::Recognition::Model *createModelFromImage(PXCImage *image) {
      PXCSmartSP sp;
      face->ProcessImageAsync(image,sp);
      sp->Synchronize();
      pxcUID fid;
      face->QueryFace(0,fid);
      PXCFaceAnalysis::Recognition::Model *ml=0;
      face->DynamicCast<PXCFaceAnalysis::Recognition>()->CreateModel(fid,ml);
      return ml;
    }
    bool IsSimilar(PXCImage *imagel, PXCImage *image2) {
      PXCFaceAnalysis::Recognition::Model *ref=createModelFromImage(image1);
      PXCFaceAnalysis::Recognition::Model *cur=createModelFronInage(image2);
      pxcU32 index;
      return cur->Conpare(ref,1,0,index)>=PXC STATUS NO ERROR;
    }
    

    Примеры приложений, представленных в Intel Perceptual Computing SDK

    Приложение Face_recognition

    Приложение Face_recognition демонстрирует, как использовать анализ интерфейса SDK анализ лица для распознавания лица.

    Образец отображает цветное изображение от устройства ввода. Если человек распознан, приложение выводит его/ее имя на прямоугольника вокруг лица, как показано на рис 8.5. Чтобы добавить имя в базу данных, пользователь может нажать клавишу 'a' и затем ввести имя человека (рис 8.6). Добавление более одного вида одного и того же человека увеличивает надежность распознавания [8].

    (рис 8.5) Результат работы приложения Face_recognition (рис 8.6) Добавление человека в базу

    Приложение face_tracking

    Приложение ).

    (рис 8.7) Главное окно приложения face_tracking

    В меню пользователи могут выбрать следующие опции:

  • Device: Выбранное из списка предложенных устройств ввода будет подключено к модулю распознавания лица (рис 8.8).
  • Module: Здесь выбираются модули (рис 8.9).
  • Landmark: Указывается количество контрольных точек 6 или 7 (рис 8.10).
  • Mode: Здесь из списка выбирается режим воспроизведения: в реальном времени, запись видео или из записанного видео (рис 8.11).
  • С помощью кнопок расположенных в правой части пользовательского интерфейса возможно установить следующие параметры:

  • Scale: Устанавливается размер воспроизведения видео: действительный размер или по размерам пользовательского окна.
  • Mirror: Повернуть изображение как показывает камера или пользовательский вид.
  • Location: Отображение прямоугольной области вокруг распознанных лиц.
  • Start: Запуск работы приложения для нахождения лица и его контрольных точек. Если выбран режим записи, то приложение попросит ввести имя файла и выбрать место для записи. При режиме проигрывания записанного видео приложение попросит выбрать необходимый файл.
  • Stop: Прекращение работы приложения.
  • На рис 8.12 представлено приложение в работе, находятся 7 контрольных точек и область распознанного лица.

    (рис 8.8) Выбор устройства ввода из списка (рис 8.9) Выбор модуля распознавания (рис 8.10) Выбор количества контрольных точек (рис 8.11) Выбор режима работы приложения (рис 8.12) Работа приложения face_tracking

    Контрольные вопросы:

  • В чем заключается задача отслеживания и распознавания лиц?
  • В каких областях применяются алгоритмы распознавания и отслеживания лиц?
  • Какие алгоритмы и методы существуют для отслеживания и распознавания лиц
  • Какие программные продукты вы знаете, где уже применяются алгоритмы отслеживания и распознавания лиц?
  • Какие библиотеки для разработчиков существуют, которые поддерживают возможности отслеживание и распознавания лиц?
  • Основные назначения SDK модуля анализа лица?
  • В чем заключается основной принцип программ по отслеживанию и распознаванию лиц?
  • Из каких шагов состоит общий алгоритм создания приложений по отслеживанию лица в Intel Perceptual Computing SDK?
  • Какой интерфейс используется для нахождения данных по отслеживанию лица в Intel Perceptual Computing SDK?
  • Какой интерфейс используется для нахождения данных по отслеживанию контрольных точек лица в Intel Perceptual Computing SDK?
  • Вернуться к учебному плану