Компоненты Face SDK
Face SDK состоит из набора компонентов, которые используются для решения основных функциональных задач: детекции, оценки лиц и позы человека, распознавания лиц и обработки видеопотоков. Компоненты Face SDK реализованы в виде объектов Face SDK API] и/или API процессинг-блоков.
Детекция лиц, тел и объектов
Face Detector
Face Detector предназначен для обнаружения лиц на изображениях. Результат работы компонента - список задетектерованных лиц, для каждого из которых определяются значения следующих атрибутов:
- Bounding Box (bbox) - координаты ограничивающего прямоугольника вокруг лица на исходном изображении
- Face Landmarks - 2D/3D-координаты антропометрических точек лица
- Iris Landmarks - координаты 40 точек глаз (зрачки и веки)
- Pitch, Yaw, Roll - углы поворота головы
Реализация компонента:
- Face SDK API: в виде объекта Capturer
- Processing Block API: в виде процессинг-блока Face Detector
Для детекции лиц на видео или упорядоченных по времени последовательностях изображений рекомендуется использовать компонент Video Engine].
Body Detector
Body Detector используется для обнаружения силуэтов людей на изображении, что увеличивает возможность обнаружения человека в кадре даже тогда, когда лица не видно.
Результатом детекции являются координаты ограничивающего прямоугольника (bbox) вокруг обнаруженного силуэта.
Реализация компонента:
- Processing Block API: в виде процессинг-блока Human Body Detector
Object Detector
Object Detector используется для обнаружения объектов различных типов на изображении.
Результатом обнаружения являются координаты ограничивающего прямоугольника (bbox) вокруг обнаруженного объекта с классом объекта: "body"
- человеческое тело, "bicycle"
- велосипед, "car"
- автомобиль, "motorcycle"
- мотоцикл, "bus"
- автобус, "train"
- поезд, "truck"
- грузовик, "traffic_light"
- светофор, "fire_hydrant"
- пожарный гидрант, "stop_sign"
- сигнал "стоп", "bird"
- птица, "cat"
- кошка, "dog"
- собака, "horse"
- лошадь, "sheep"
- овца, "cow"
- корова, "bear"
- медведь, "backpack"
- рюкзак, "umbrella"
- зонт, "handbag"
- сумка, "suitcase"
- чемодан, "sports_ball"
- спортивный мяч, "baseball_bat"
- бейсбольная бита, "skateboard"
- скейтборд, "tennis_racket"
- теннисная ракетка, "bottle"
- бутылка, "wine_glass"
- бокал вина, "cup"
- чашка, "fork"
- вилка, "knife"
- нож, "laptop"
- ноутбук, "phone"
- телефон, "book"
- книга, "scissors"
- ножницы.
Реализация компонента:
- Processing Block API: в виде процессинг-блока Object Detector
Оценка лиц и позы человека
Face SDK предоставляет набор инструментов для оценки изображений, полученных от компонента Face Detector.
Gender-Age Estimator
Gender-Age Estimator позволяет определить пол и возраст лица на изображении.
Реализация компонента:
- Face SDK API: в виде объекта AgeGenderEstimator
- Processing Block API: в виде процессинг-блоков Gender Estimator и Age Estimator
Emotions Estimator
Emotions Estimator позволяет получить оценку преобладающего эмоционального состояния лица:
- Радость
- Удивление
- Спокойствие
- Гнев
- Отвращение
- Грусть
- Страх
Реализация компонента:
- Face SDK API: в виде объекта EmotionsEstimator
- Processing Block API: в виде процессинг-блока Emotion Estimator
Quality Estimator
Quality Estimator производит оценку качества изображения лица. Результатом оценки является список обнаруженных лиц с подробным анализом качества.
Реализация компонента:
- Face SDK API: в виде объектов QualityEstimator и FaceQualityEstimator
- Processing Block API: в виде процессинг-блока Quality Assessment Estimator
Mask Estimator
Mask Estimator определяет наличие/отсутствие маски на изображении лица.
Реализация компонента:
- Face SDK API: в виде объекта FaceAttributesEstimator
- Processing Block API: в виде процессинг-блока Mask Estimator
Eyes Openness Estimator
Eyes Openness Estimator служит средством оценки состояния глаз на изображении лица и возвращает результат “открыт” или ”закрыт” для правого и левого глаза.
Реализация компонента:
- Face SDK API: в виде объекта FaceAttributesEstimator
- Processing Block API: в составе процессинг-блока Quality Assessment Estimator
Liveness Estimators
Набор компонентов Liveness предназначен для определения “живости” - принадлежности обнаруженного лица реальному человеку. Применение этих компонентов обеспечивает защиту от злонамеренных действий (спуфинг-атак) с использованием распечатанного изображения лица, фото или видео лица с экранов мобильных устройств и мониторов, а также разного рода масок (бумажных, силиконовых и др.).
Active Liveness Estimator анализирует выполнение человеком определенных действий - сценария проверки, например: “моргнуть”, “улыбнуться”, “повернуть голову”.
Реализация компонента:
- Face SDK API: в виде объекта VideoWorker
2D / RGB Liveness Estimator позволяет выполнить оценку “живости” лица на RGB-изображении. Для выполнения проверки достаточно появления лица в поле зрения камеры.
Реализация компонента:
- Face SDK API: в виде объекта Liveness2DEstimator
- Processing Block API: в виде процессинг-блока Liveness Estimator
3D / Depth Liveness Estimator защищает от попыток использовать изображение вместо реального лица, анализируя поверхность лица по карте глубины, полученной от 3D (RGBD) сенсора.
Реализация компонента:
- Face SDK API: в виде объекта DepthLivenessEstimator
IR Liveness Estimator определяет "живость" лица на основании снимка, полученного от инфракрасной камеры, в комбинации с цветным изображением.
Реализация компонента:
- Face SDK API: в виде объекта IRLivenessEstimator
Human Pose Estimator
Human Pose Estimator используется для вычисления ключевых точек скелета тела человека на изображении.
Реализация компонента:
- Processing Block API: в виде процессинг-блока Human Pose Estimator
Распознавание лиц
Face SDK предоставляет набор компонентов и алгоритмов для распознавания лиц. Основой этой функциональности являются операции с использованием биометрического шаблона лица.
Encoder
Encoder извлекает биометрический шаблон из изображения лица, полученного от Face Detector.
Биометрический шаблон лица - уникальный набор биометрических признаков лица, извлеченных из изображения лица. Шаблоны позволяют сравнить два изображения лица и определить степень их схожести.
Ключевые особенности биометрического шаблона лица:
- не содержит персональных данных
- не может быть использован для восстановления изображения лица
- может быть сериализован и сохранен в файл, базу данных или отправлен по сети
- может быть проиндексирован для ускорения процесса сопоставления шаблонов лиц с помощью специального индекса.
В Face SDK есть несколько алгоритмов извлечения шаблона с различными соотношениями скорости и точности, охватывающими все возможные сферы применения - от embedded-устройств до экспертных систем распознавания лиц.
Извлечение биометрического шаблона - одна из самых ресурсоемких операций, поэтому Face SDK предоставляет возможность использовать ускоритель GPU для повышения производительности.
Реализация компонента:
- Face SDK API: в виде объекта Recognizer
Matcher
Matcher позволяет выполнять операции сравнения биометрических шаблонов лиц, полученных с помощью компонента Encoder:
- верификация 1:1 - сравнение двух биометрических шаблонов (лиц) между собой, оценка совпадения
- идентификация 1:N - сравнение одного биометрического шаблона (лица) с другими шаблонами (лицами), поиск и оценка совпадений
При сравнении шаблонов лиц Matcher вычисляет разницу между биометрическими признаками лиц. Результат вычислений является мерой соответствия изображений лиц и отражает вероятность принадлежности одному человеку.
Шаблоны, извлеченные с помощью различных алгоритмов, обладают различными свойствами и не могут сравниваться между собой.
Реализация компонента:
- Face SDK API: в виде объекта Recognizer
Обработка видеопотоков
Video Engine
Video Engine предназначен для realtime-обработки видеопотоков и решает следующие задачи:
- детекция и трекинг лиц
- распознавание лиц (опционально)
- проверка Liveness (опционально)
- оценка пола, возраста и эмоций лица (опционально)
Video Engine работает в многопоточном режиме. Каждый поток - это последовательность изображений (кадров), получаемых из одного источника (например камеры или видео).
Все потоки обрабатываются в Video Engine одновременно. Потоки, кадры и обнаруженные лица в кадре получают собственные идентификаторы. В процессе отслеживания лица на последовательности изображений потока формируется трек этого лица, который также обозначается собственным ID (track_id).
Совокупный набор идентификаторов позволяет точно фиксировать генерируемые события по каждому потоку. Для обработки событий в Video Engine реализован интерфейс коллбэков, который предоставляет данные о событии.
Реализация компонента:
- Face SDK API: в виде объекта VideoWorker