Сценарии использования
В данном разделе представлены возможные сценарии использования и схематично показана взаимосвязь объектов / процессинг-блоков 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
.