Сценарии использования
В данном разделе представлены возможные сценарии использования и схематично показана взаимосвязь объектов / процессинг-блоков Face SDK. Синим цветом обозначены входные данные, зеленым – объекты-обработчики данных, фиолетовым – результаты обработки.
Оценка лиц на видеопотоке

Стандартный сценарий определения пола, возраста и эмоций лица на видеопотоке реализуется с помощью объекта VideoWorker. Кадры (Frames), получаемые с камеры (Camera), передаются для обработки в VideoWorker. Результаты обработки (данные о поле, возрасте и эмоциях) поступают в коллбэк VideoWorker::TrackingCallbackU.
Оценка лиц с изображений
- Legacy API
- Processing Block API

Если Вам не подходит вариант оценки лиц с использованием объекта VideoWorker (например, если требуется оценка лиц с изображений), можно воспользоваться данным сценарием. Изображения (Images) передаются в объект Capturer, который служит для детекции лиц. Найденные лица и информация о них (RawSample) передаются для обработки в объекты AgeGenderEstimator и EmotionsEstimator, которые возвращают пол и возраст лица и эмоции лица соответственно.

Если Вам не подходит вариант оценки лиц с использованием объекта VideoWorker (например, если требуется оценка лиц с изображений), можно воспользоваться данным сценарием. Контейнер-контекст(Context) изображений формируется и передаётся в процессинг-блок детекции лиц (FACE_DETECTOR). Результат детекции сохраняется в исходный контейнер-контекст и передаётся в последующие процессинг-блоки для оценки возраста (AGE_ESTIMATOR), пола (GENDER_ESTIMATOR) и эмоций (EMOTION_ESTIMATOR).
Создание базы лиц
- Legacy API
- Processing Block API

Для идентификации лиц требуется единократно создать базу биометрических шаблонов. Изображения (Images) передаются в объект Capturer, который служит для детекции лиц. Найденные лица и информация о них (RawSample) передаются в объект Recognizer, который возвращает биометрические шаблоны (Template). Операция получения шаблонов для больших баз занимает длительное время, поэтому предусмотрен механизм сохранения шаблона в долговременную память (см. методы Template::save, Recognizer::loadTemplate).

Для идентификации лиц требуется единократно создать базу биометрических шаблонов. Контейнер-контекст(Context) изображений формируется и передаётся в процессинг-блок детекции лиц (FACE_DETECTOR). Результат детекции сохраняется в исходный контейнер-контекст и передаётся в процессинг-блок фиттера(FACE_FITTER) для получения антропометрических точек лица. Результат передаётся в процессинг-блок (FACE_TEMPLATE_EXTRACTOR), который возвращает контекст, содержащий биометрические шаблоны. Операция получения шаблонов для больших баз занимает длительное время, поэтому полученные шаблоны можно сохранять в долговременную память.
Идентификация лиц на видеопотоке

Стандартный сценарий идентификации лиц на видеопотоке реализован с помощью объекта VideoWorker. Кадры (Frames), получаемые с камеры (Camera), передаются для обработки в VideoWorker. В случае, если Вы используете 3D-сенсор, для обработки в VideoWorker также передается карта глубины (Depth Map). Данные о найденных и распознанных лицах, а также созданные шаблоны возвращаются посредством коллбэков.
Идентификация лиц (RGB-камера)
- Legacy API
- Processing Block API

Кадры (Frames), получаемые с камеры (Camera), поступают в объект Capturer, который служит для детекции лиц. Найденные лица и информация о них (RawSample), а также готовая база лиц (TemplatesIndex, см. пункт Создание базы лиц) передаются в объект Recognizer. Recognizer строит биометрические шаблоны по данным из RawSample и сравнивает их с шаблонами из базы лиц.

Кадры (Frames) с камеры (Camera), поступают в процессинг-блоки детекции лиц (FACE_DETECTOR), фиттера (FACE_FITTER) и экстрактора (FACE_TEMPLATE_EXTRACTOR) для получения контекста-контейнера с шаблоном лица. Полученный шаблон, а также готовая база лиц (TEMPLATE_INDEX, см. пункт Создание базы лиц) передаются в процессинг-блок матчера MATCHER_MODULE, который сравнивает шаблон с шаблонами из базы лиц.
Идентификация лиц (с проверкой Liveness)

Данная схема идентификации аналогична предыдущей, однако в данном случае дополнительно используется карта глубины (Depth Map), полученная от 3D-сенсора (3D Sensor). Карта глубины передается в объект DepthLivenessEstimator для определения принадлежности лица живому человеку. Если возвращен статус REAL, найденное лицо и информация о нем (RawSample) передаются для последующей идентификации в объект Recognizer.