Компоненты Face SDK
Face SDK состоит из набора компонентов, которые используются для решения основных функциональных задач: детекции, оценки лиц и позы человека, распознавания лиц и обработки видеопотоков. Компоненты Face SDK реализованы в виде объектов Face SDK API и/или процессинг-блоков Processing Block 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