Liveness как автономный сервис¶
Вы можете использовать распознавание живых лиц отдельно, в виде автономного сервиса findface-liveness-api
. Сервис берет определенное количество кадров из видеофрагмента и возвращает изображение лица наилучшего качества и десятичный результат liveness, усредненный по взятым кадрам. Если заданы соответствующие настройки, сервис также может возвращать полнокадровые и нормализованные изображения лиц и сохранять результат детекции в кэше findface-sf-api
, возвращая detection_id
.
В этом разделе:
Установка и настройка findface-liveness-api
¶
Для установки сервиса findface-liveness-api
выполните следующие действия:
Установите APT-репозиторий FindFace Security.
Из APT-репозитория установите сервис следующим образом:
sudo apt update sudo apt install findface-liveness-api
При необходимости настройте параметры
findface-liveness-api
:sudo vi /etc/findface-liveness-api.ini listen: :18301 liveness-threshold: 0.75 fullframe-jpeg-quality: 75 max-decoded-frames: 30 min-selected-frames: 10 extraction-api: request-batch-size: 16 timeouts: connect: 5s response_header: 30s overall: 35s idle_connection: 10s extraction-api: http://127.0.0.1:18666 sf-api: timeouts: connect: 5s response_header: 30s overall: 35s idle_connection: 10s sf-api: http://127.0.0.1:18411 limits: video-size: 10485760 video-length-sec: 60 video-fps: 30 video-width-px: 1920 video-height-px: 1080
Параметр Описание fullframe-jpeg-quality
Качество JPEG полных кадров в поле photo
.max-decoded-frames
Завершить декодирование после получения указанного количества кадров. min-selected-frames
Минимальное количество финальных кадров, успешно прошедших декодирование и извлечение liveness. Должно быть равным или меньшим max-decoded-frames
.extraction-api
->request-batch-size
Размер пакета с кадрами для извлечения liveness. limits
->video-size
Максимальный размер видео, байты. limits
->video-length-sec
Максимальная длина видео, секунды. limits
->video-fps
Максимальное количество FPS видео. limits
->video-width-px
Максимальная ширина видео, пиксели. limits
->video-height-px
Максимальная высота видео, пиксели. В файле конфигурации
findface-extraction-api
укажите модель нейронной сети, предоставляющей автономный сервис liveness:liveness.alleyn.cpu.fnk
/liveness.alleyn.gpu.fnk
.sudo vi /etc/findface-extraction-api.ini extractors: ... models: ... liveness: faceattr/liveness.alleyn.cpu.fnk ... ... extractors: ... models: ... liveness: faceattr/liveness.alleyn.gpu.fnk ... ...
Запустите сервис
findface-liveness-api
и добавьте его в автозагрузку.sudo systemctl enable findface-liveness-api.service && sudo systemctl start findface-liveness-api.service
Использование Liveness API¶
Для взаимодействия с сервисом findface-liveness-api
используйте запросы HTTP API. В примере ниже запрос POST отправляется со следующими опциональными параметрами:
return_detection
(default=False
): сохранить лучшее лицо в кэшеfindface-sf-api
и вернуть егоdetection_id
.return_normalized
(default=False
): вернуть нормализованное изображение лица в полеnormalized
.return_photo
(default=False
): вернуть полный кадр в полеphoto
.
Пример
Запрос
curl -i -X POST \
'http://127.0.0.1:18301/v1/video-liveness?return_detection=true&return_normalized=true&return_photo=true' \
-H 'Content-Type: video/mp4' \
--data-binary '@/home/my_video.mp4'
Ответ
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: LA:WSP2NcHc
Date: Mon, 07 Sep 2020 15:30:05 GMT
Transfer-Encoding: chunked
{
"alive": true,
"average_liveness": 0.8706386,
"best_face": {
"liveness": 0.74768883,
"quality": 0.89638597,
"bbox": {
"left": 0,
"top": 578,
"right": 307,
"bottom": 1154
},
"detection_id": "btb53vbp688s1njt3bv0",
"photo": "/9j/2wCEAAgGBgcGBQgHBwcJ...",
"normalized": "iVBORw0KGgoAAAANSUhEU...",
"frame_no": 1,
"frame_ts": 0.033275817
}
}