Глоссарий#
Термин | Значение термина |
---|---|
Батч | Группа данных, обрабатываемых одновременно. |
Биометрический образец | Изображения, содержащие лицо или тело и соответствующие стандарту VisionLabs. Используется при работе с LUNA PLATFORM. |
Биометрический шаблон | Набор уникальных свойств, получаемых в LUNA PLATFORM из биометрического образца. |
Детекция | Сущность FaceStream, содержащая координаты лица или тела и оценочное значение объекта, по которому определяется лучший кадр. |
Лучший кадр | Кадр видеопотока, на котором лицо/тело зафиксировано в оптимальном ракурсе для дальнейшей обработки. |
Портрет | Изображение лица или тела, трансформированное под определенный формат. Портрет имеет два типа — "warp" (изображение трансформируется в формат биометрического образца), "gost" (из исходного кадра вырезается детекция с учетом отступов). |
Ракурс | Степень поворота головы (в градусах) по каждой из трех осей вращения (наклон вверх/вниз относительно горизонтальной оси; наклон влево/вправо относительно вертикальной оси; поворот относительно вертикальной оси). |
Событие | Сущность LUNA PLATFORM, которая содержит информацию (город, пользовательские данные, номер трека и т.д.) об одном лице и/или теле. Данная информация передается в LUNA PLATFORM приложением FaceStream. Полный перечень передаваемой информации см. в документации OpenAPI LUNA PLATFORM. |
Трек | Информация о положении объекта (лица) одного человека на последовательности кадров. Если объект покидает зону кадра, то трек прерывается не сразу. Некоторое время он ожидает возвращения объекта в кадр. Если объект вернулся, то трек продолжается. |
Трекинг | Функция отслеживания объекта (лица) на последовательности кадров. |
LUNA Streams | Сервис для создания и управления потоками, которые содержат политики обработки видеопотока/видеофайла/набора изображений. |
Аббревиатура | Расшифровка |
---|---|
БД, DB | База данных |
LP | LUNA PLATFORM |
Введение#
Данный документ описывает:
- аппаратные и программные требования
- общее описание работы приложения и рекомендации по настройке
- процесс взаимодействия с LUNA Streams
- перечень основных настроек, необходимых для запуска FaceStream
- детальное описание всех настроек
- использование FaceStream с LUNA Configurator
- использование FaceStream с конфигурационными файлами
- ошибки API для FaceStream и LUNA Streams
- информацию о совместимости с моделями камер
Подробную информацию по запуску приложения см. в руководстве по установке FaceStream.
Обзор#
Приложение FaceStream осуществляет несколько функций:
- Чтение потоков
В качестве источников данных могут выступать веб-камеры, USB и IP-камеры (посредством протокола RTSP), видеофайлы и фотоизображения.
- Обработка потоков
Выполняется поиск и сопровождение лиц или тел в потоке, пока они не покинут кадр или не будут перекрыты.
- Проверка на Liveness
Выполняется проверка на Liveness по одному или нескольким кадрам трека.
- Отсылка лучших снимков лиц или тел в виде HTTP-запросов во внешний сервис
В качестве внешнего сервиса выступает ПО компании VisionLabs LUNA PLATFORM 5.
Работа FaceStream зависит от пяти настроек.
-
Настройки управления потоками, задаваемые в LUNA Streams.
Здесь задаются настройки, касающиеся источников потоков, такие как тип источника, адрес источника, настройки фильтрации и др. Настройки задаются с помощью отправки запросов с телом в формате JSON в сервис LUNA Streams. FaceStream забирает настройки из LUNA Streams для дальнейшей обработки. Подробное описание работы FaceStream с LUNA Streams приведено в разделе "Взаимодействие FaceStream с LUNA Streams".
-
Настройки FaceStream, задаваемые в LUNA Configurator.
Здесь задаются общие настройки FaceStream, такие как логирование, настройка отправки готовых изображений из FaceStream во внешние сервисы, отладка и т.п.
-
Настройки TrackEngine, задаваемые в LUNA Configurator.
Здесь задаются настройки, касающиеся детекции и трекинга лица или тела.
-
Настройки LUNA Streams, задаваемые в LUNA Configurator.
Здесь задаются общие настройки сервиса LUNA Streams, такие как логирование, настройки БД, адрес сервиса LUNA Licenses и т.п.
-
Настройки FaceEngine, задаваемые в конфигурационном файле "faceengine.conf" и передаваемые во время запуска контейнера FaceStream.
Здесь задаются параметры, касающиеся глубокой настройки распознавания лица и тела. Изменять параметры рекомендуется только по согласованию с сотрудниками VisionLabs.
При работе с FaceStream также доступны следующие возможности:
- Динамическое создание, изменение, удаление источников потоков посредством запросов API
- Просмотр потоков в браузере с указанными параметрами в режиме реального времени
- Получение метрик по потоку (количество потоков, количество ошибок, количество необработанных кадров, FPS)
FaceStream можно настроить на работу:
- только с лицами
- только с телами
- с лицами и телами (см. раздел "Совместный режим детектирования лиц и тел")
Работа FaceStream с лицами и телами#
FaceStream может обрабатывать как лица, так и тела. Для каждого объекта предусмотрена своя схема работы и свой набор параметров, описанных ниже.
Необходимый минимум параметров для работы с обоими объектами можно найти в разделе "Перечень приоритетных настроек".
Работа с лицами#
Схема работы FaceStream с лицами представлена на рисунке ниже.
-
В FaceStream отправляется видео с камеры видеонаблюдения, веб-камеры, видеофайл или фотоизображения. FaceStream может работать сразу с несколькими источниками потока (количество задается лицензией). Источники и дополнительные настройки обработки потока указываются в теле HTTP-запроса к сервису LUNA Streams. Затем данные настройки извлекаются приложением FaceStream.
-
FaceStream выполняет декодирование кадров видео.
-
Из кадра вырезается зона ROI, если задан параметр "roi" (настройки управления потоками).
-
Полученное изображение масштабируется до размера "scale-result-size" (настройки TrackEngine) если задан параметр "detector-scaling" (настройки TrackEngine).
-
Выполняется детекция лиц на кадре.
-
Вместо детекции может выполняться редетекция лица в кадре, если задан параметр "detector-step" (настройки TrackEngine).
-
Для каждого нового лица в потоке создается трек, который подкрепляется новыми детекциями данного лица с последующих кадров. Трек прерывается, если лицо исчезает из кадра. Можно задать параметр "skip-frames" (настройки TrackEngine), чтобы трек не прерывался сразу. Система будет ждать появления лица в области указанное количество кадров. http://git.visionlabs.ru/facestream/fs-extras/-/jobs/3952748/artifacts/browse
-
FaceStream отсекает кадры плохого качества и выбирает лучшие снимки. Существует несколько алгоритмов выбора лучшей детекции/детекций в треке. См. описание группы параметров в разделе "Фильтрация кадров" (настройки управления потоками).
-
Если кадр является лучшим снимком, он добавляется в коллекцию лучших снимков. В зависимости от настройки "face_bestshots_to_send" (настройки управления потоками) для каждого трека выбирается лучшая детекция в треке или несколько детекций.
-
Опционально. Если в настройке "portrait_type" (настройки управления потоками) указан параметр "warp", то лучшие снимки приводятся к формату LUNA PLATFORM и создаются биометрические образцы. Биометрический образец лучше подходит для обработки с помощью LUNA PLATFORM.
-
Лучшие снимки, исходные изображения (опционально) и дополнительная информация из настроек управления потоком отправляется в LUNA PLATFORM в виде HTTP-запроса к ресурсу "/6/handlers/{handler_id}/stream_events" для генерации события.
Основные параметры видеопотока (протокол передачи данных, путь к источнику, область интереса на кадре и др.) задается в разделе "data" (настройки управления потоками).
Адрес LUNA PLATFORM задается в разделе "lunaplatform" (настройки FaceStream).
Частота отправки кадров задаётся в секции "sending" (настройки управления потоками).
Работа с телами#
Схема работы FaceStream с телами представлена на рисунке ниже.
-
В FaceStream отправляется видео с камеры видеонаблюдения, веб-камеры, видеофайл или фотоизображения. FaceStream может работать сразу с несколькими источниками потока (количество задается лицензией). Источники и дополнительные настройки обработки потока задаются с помощью отправки HTTP-запроса в сервис LUNA Streams, которые в дальнейшем извлекаются приложением FaceStream.
-
FaceStream выполняет декодирование кадров видео.
-
Полученное изображение масштабируется до размера "scale-result-size" (настройки TrackEngine) если задан параметр "detector-scaling" (настройки TrackEngine).
-
Выполняется детекция тел на кадре.
-
Вместо детекции может выполняться редетекция тела в кадре, если задан параметр "detector-step" (настройки TrackEngine).
-
Для каждого нового тела в потоке создается трек, который подкрепляется новыми детекциями данного тела с последующих кадров. Трек прерывается, если тело исчезает из кадра. Можно задать параметр "skip-frames" (настройки TrackEngine), чтобы трек не прерывался сразу. Система будет ждать появления тела в области указанное количество кадров.
-
FaceStream отсекает кадры плохого качества и выбирает лучшие снимки. См. описание параметра "min_score_body" (настройки управления потоками).
-
Если кадр является лучшим снимком, он добавляется в коллекцию лучших снимков. В зависимости от параметра "body_bestshots_to_send" (настройки управления потоками) для каждого трека выбирается лучшая детекция в треке или несколько детекций.
-
Лучшие снимки приводятся к формату LUNA PLATFORM и создаются биометрические образцы.
-
Лучшие снимки, исходные изображения (опционально) и дополнительная информация из настроек управления потоком отправляется в LUNA PLATFORM в виде HTTP-запроса к ресурсу "/6/handlers/{handler_id}/stream_events" для генерации события. Вместе с лучшими снимками отправляются детекции с координатами тела человека. Количество отправляемых детекций задается в параметре "minimal_body_track_length_to_send" (настройки управления потоками).
Основные параметры видеопотока (протокол передачи данных, путь к источнику, область интереса на кадре и др.) задается в разделе "data" (настройки управления потоками).
Адрес LUNA PLATFORM задается в разделе "lunaplatform" (настройки FaceStream).
Частота отправки кадров задаётся в секции "sending" (настройки управления потоками).
Взаимодействие FaceStream с LUNA Streams#
Для работы FaceStream необходимо предварительно запускать дополнительный сервис — LUNA Streams (порт по умолчанию — 5160). В теле запроса "create stream" к сервису LUNA Streams задаются настройки для управления потоками. После отправки запроса создается поток, чьи настройки забирает FaceStream для дальнейшей обработки. Примеры запросов можно найти в спецификации OpenAPI LUNA Streams.
LUNA Streams имеет две версии API. В данной документации описывается вторая версия API. См. описание первой версии API в документации FaceStream v.5.1.49 и ниже.
LUNA Streams имеет собственный пользовательский интерфейс, предназначенный для работы с потоками. См. подробную информацию в разделе "Пользовательский интерфейс сервиса LUNA Streams".
Для использования сервиса LUNA Streams необходимо использовать сервисы LUNA PLATFORM 5 — LUNA Licenses и LUNA Configurator, а также базы данных PostgreSQL или Oracle и Influx.
База данных Influx нужна для целей мониторинга состояния сервисов LUNA PLATFORM. При необходимости мониторинг может быть отключен.
В документации FaceStream не описывается использование базы данных Oracle.
При необходимости можно запустить LUNA Streams без LUNA Configurator. Данный способ не описывается в документации.
FaceStream лицензируется с помощью ключа LUNA PLATFORM 5, в котором содержится информация о максимальном количестве потоков, которые может обработать LUNA Streams. Лицензия регулируется сервисом LUNA Licenses.
См. подробную информацию по активации лицензии LUNA Streams в руководстве по установке FaceStream.
В базе данных PostgreSQL/Oracle хранятся все данные потоков LUNA Streams.
Диаграмма последовательности создания и обработки потока#
Диаграмма последовательности создания и обработки потока приведена ниже:
1․ Пользователь задает настройки FaceStream, TrackEngine и настройки сервиса LUNA Streams в сервисе LUNA Configurator.
Настройки сервиса LUNA Streams содержат только настройки сервиса (адрес БД LUNA Streams, адрес InfluxDB и пр.) и не содержат настроек управления видеопотоком (параметры отправки лучших снимков, адрес LP, идентификаторы обработчиков и др.). Такие настройки задаются с помощью отдельного HTTP-запроса после запуска FaceStream (см. п.4).
При необходимости пользователь может задать настройки FaceEngine в отдельном конфигурационном файле.
2․ При запуске FaceStream, приложение считывает настройки из сервиса LUNA Configurator.
3․ FaceStream переходит в режим ожидания появления потока.
4․ Пользователь отправляет HTTP-запрос "create stream" к сервису LUNA Streams, содержащий настройки управления потоком в теле запроса.
5․ Сервис LUNA Streams проверяет наличие лицензируемой функции, регулирующей количество потоков для работы LUNA Streams, в сервисе LUNA Licenses. Если на данный момент уже обрабатываются какие-либо потоки, то дополнительно проверяется количество уже обрабатываемых потоков на момент запроса с помощью отчета FaceStream (не отражено на диаграмме, см. п. 17).
6․ Сервис LUNA Licenses возвращает ответ.
7․ Если лицензируемая функция отсутствует или на момент создания потока обрабатывается максимальное количество доступных потоков, то пользователю возвращается соответствующая ошибка.
8․ Если лицензируемая функция присутствует и на момент создания потока еще не обрабатывается максимальное количество доступных потоков то сервис LUNA Streams создает поток и записывает настройки управления потоком в БД LUNA Streams.
9․ Сервис LUNA Streams получает идентификатор "stream_id".
10․ Сервис LUNA Streams возвращает пользователю уникальный идентификатор "stream_id".
11․ Сервис LUNA Streams добавляет поток во внутреннюю очередь.
Очередь реализована в самом сервисе LUNA Streams и не является внешней.
12․ Сервис LUNA Streams обновляет статус потока на "pending".
13․ Сервис LUNA Streams обновляет статус потока в БД LUNA Streams.
14․ Сервис LUNA Streams получает ответ.
Если на момент создания потока FaceStream отключен, то может быть создано только то количество потоков со статусом "pending", которое оговорено лицензией. После запуска FaceStream будут приняты в обработку потоки, созданные в порядке очереди.
Посмотреть потоки в очереди, отфильтровав их определенным образом, можно с помощью GET-запроса к ресурсу "streams/processing/queue".
Потоки можно создавать со статусом "pause". В таком случае они будут добавлены в базу данных и будут ожидать ручного обновления статуса до "pending".
15․ FaceStream извлекает поток(и) из очереди со статусом "pending".
16․ FaceStream начинает оправлять данные в основные сервисы LUNA PLATFORM 5 для дальнейшей обработки кадров по заданному обработчику и генерации событий.
17․ FaceStream начинает отправку отчетов об обработке потоков в LUNA Streams.
Время отправки отчетов является фиксированным и не может быть изменено.
18․ Сервис LUNA Streams обновляет статус обрабатываемых потоков на "in_progress".
19․ Сервис LUNA Streams удаляет обрабатываемый поток из очереди.
20․ Сервис LUNA Streams обновляет статус потока в БД LUNA Streams.
21․ Сервис LUNA Streams получает ответ.
Завершение обработки для набора изображений, видеофайла или конечного видеопотока:
22․ FaceStream прекращает отправлять данные в LUNA PLATFORM.
Если необходимо, чтобы видеопоток воспринимался как конечный, то необходимо включить параметр "endless".
23․ FaceStream отправляет последний отчет в сервис LUNA Streams.
Если в отчёте сказано, что какой-то поток был обработан, то FaceStream забирает следующие параметры потока со статусом "pending" из очереди LUNA Streams, и сервис меняет статус потока с "pending" на "in_progress", удаляя из очереди. Если по неизвестным причинам отчет не был передан, то потоки заново помещаются в очередь.
24․ Сервис LUNA Streams обновляет статус потока на "done" в БД Streams.
25․ Сервис LUNA Streams обновляет статус потока в БД LUNA Streams.
26․ Сервис LUNA Streams получает ответ.
Бесконечный видеопоток:
27․ FaceStream будет отправлять данные в LUNA PLATFORM и отчеты в LUNA Streams до тех пор, пока видеопоток не будет прерван.
Более подробное описание обработки потока LUNA Streams см. в разделе "Процесс обработки потоков в LUNA Streams".
Запросы к сервису LUNA Streams#
Доступны следующие запросы к сервису LUNA Streams для работы с потоками:
- задание настроек для управления потоком (запрос "create stream")
- получение существующих потоков по их "stream_id" с описанием данных каждого потока (запрос "get streams")
- получение всей информации по потоку по его "stream_id" (запрос "get stream")
- удаление существующих потоков по их "stream_id" (запрос "delete streams")
- удаление потока по его "stream_id" (запрос "remove stream")
- получение числа созданных потоков (запрос "count streams")
- обновление полей "description" и "status" потока по его "stream_id" (запрос "update stream")
- замена всех данных потока на новые по его "stream_id" (запрос "put stream")
- получение ссылки на последний кадр (запрос "get last frame preview")
- получение ссылки на поток, запущенный в реальном времени (запрос "get live preview")
- получение логов потока (запрос "get streams logs")
- удаление логов потока (запрос "delete streams logs")
Подробное описание запросов и примеры запросов можно найти в спецификации OpenAPI LUNA Streams.
Распределение потоков в LUNA Streams#
Как было сказано ранее, доступна возможность обработки нескольких потоков одновременно.
Для каждого потока предполагается его текущий статус:
- pending — поток взят в работу, но пока не найдено ни одного "рабочего процесса"
- in_progress — поток обрабатывается
- done — поток полностью обработан (актуально для типов передачи потока "videofile"/"images" или ["tcp/udp"] с параметром "endless" равным "false")
- pause — пользователь остановил обработку потока (не применимо для типов передачи потока "videofile" или "images")
- restart — сервер перезапустил обработку потока
- cancel — пользователь отменил обработку потока
- failure — при обработке потока произошла ошибка
- handler_lost — "рабочий процесс" FaceStream потерян, следует передать другому (не применимо для типов передачи потока "videofile" или "images")
- not_found — поток был в обработке, но в процессе выполнения был удалён
- deleted — намеренное удаление потока
Статусы "pause" и "cancel" можно указать при обновлении потока с помощью запроса "update stream".
Статусы "restart", "handler_lost" являются временными. При данных статусах невозможно получить поток, однако переход через эти статусы регистрируется в обычном режиме. Статус "restart" может появиться только при использовании группы настроек "autorestart" (см. раздел "Автоматический перезапуск потоков" ниже).
Статус "not_found" является внутренним и будет отправлен для обратной связи, если поток был удален во время обработки. При данном статусе невозможно получить поток.
Статус "deleted" является виртуальным. Поток с таким статусом не может существовать, но этот статус можно увидеть в логах потоков.
Таблица переходов от статуса к статусу#
Следующая таблица показывает статусы, которые могут быть получены после каждого из перечисленных статусов.
Символ «+» означает, что статус, указанный в первой строке, может стоять после статуса в первом столбце. Пустое поле означает, что нет случаев, когда может возникнуть данный статус.
Символ «-» означает, что в системе нет потока (он не создан или уже удален).
Нет | pending | in_progress | done | restart | pause | cancel | failure | handler_lost | |
---|---|---|---|---|---|---|---|---|---|
Нет | + | + | |||||||
pending | + | + | + | + | + | ||||
in_progress | + | + | + | + | +* | + | + | + | |
done | + | + | + | + | |||||
restart | + | + | |||||||
pause | + | + | + | + | |||||
cancel | + | + | + | + | |||||
failure | + | + | + | + | |||||
handler_lost | + |
* не поддерживается для типов передачи потока "videofile" или "images"
Процесс обработки потоков в LUNA Streams#
По умолчанию новый поток создается со статусом "pending" и сразу же попадает в очередь обработки. Обработку потока можно отложить, указав статус "pause" при создании.
Как только появляется "рабочий процесс" свободного потока с запросом на пул из очереди, поток принимается к обработке и ему присваивается статус "in_progress".
После того, как поток был обработан "рабочим процессом" FaceStream, ему присваивается статус "done" в случае успеха (актуально для типов передачи потока "videofile"/"images" или "tcp/udp" с параметром "endless" равным "false") или "failure", если произошли какие-либо ошибки. Однако статус обработки потока может быть понижен с "in_progress" по следующим причинам:
-
отсутствие обратной связи от "рабочего процесса" потока: сервер понизит рейтинг процесса, а запись со статусом "handler_lost" будет добавлена в логи потока
-
замена потока: запись со статусом "restart" будет добавлена в логи потока
Для типов передачи потока "tcp" или "udp" с параметром "endless" равным "true", статус не может измениться на "done".
Во время процедуры обработки любое изменение статуса потока регистрируется. Таким образом, можно восстановить процесс обработки потоков из логов.
Количество одновременных обработок потоков (статусы "pending" и "in_progress") регулируется лицензией, однако в БД LUNA Streams может храниться бесконечное множество потоков, имеющих иной статус, например, "pause".
Потоки со статусом "failure" могут быть автоматически перезапущены.
Автоматический перезапуск потоков#
Возможность автоматического перезапуска потоков актуальна только для потоков со статусом "failure". Параметры автоматического перезапуска (возможность перезапуска, максимальное количество попыток перезапуска, задержка между попытками) задаются пользователем для каждого потока в разделе "autorestart" настроек управления потоками. Параметры и статус автоматического перезапуска можно получить с помощью запроса "get stream".
Ниже перечислены статусы автоматического перезапуска:
- "disabled" — автоматический перезапуск отключен пользователем (отключен параметр "restart")
- "enabled" — автоматический перезапуск включен, но в данный момент не активен поскольку поток не находится в статуса "failure"
- "in_progress" — автоматический перезапуск в процессе
- "failed" — превышено допустимое количество попыток автоматического перезапуска и ни одна попытка не увенчалась успехом
- "denied" — автоматический перезапуск разрешен пользователем, но не разрешен из-за критической ошибки*, полученной в отчете FaceStream.
* критической ошибкой считается ошибка Failed to authorize in Luna Platform
. В будущих версиях список критических ошибок может пополняться.
Ниже описан процесс обработки потоков с включенным автоматическим перезапуском.
Когда происходит попытка автоматической перезагрузки потока данных, происходят следующие изменения:
- статус потока изменяется сначала на "restart", а затем на "pending";
- счетчик попыток автоматической перезагрузки "current_attempt" увеличивается на 1;
- запись времени последней попытки "last_attempt_time" обновляется, чтобы отразить актуальное время.
Для того чтобы произошла перезагрузка, должны соблюдаться следующие условия:
- статус потока должен находиться в состоянии "failure";
- должен быть включен автоматический перезапуск потока (параметр "restart");
- значение текущей попытки автоматической перезагрузки "current_attempt" должно быть равно "null" или меньше, чем максимальное число попыток "attempt_count";
- время последней попытки автоматической перезагрузки "last_attempt_time" должно быть равно "null" или разница между текущим временем и временем последней попытки должна быть больше или равна задержке "delay".
Если соблюдаются условия ниже, то произойдет сбой автоматического перезапуска потока (прекращение попыток перезапуска):
- статус потока находится в состоянии "failure";
- статус автоматического перезапуска потока находится в состоянии "in_progress";
- значение текущей попытки автоматической перезагрузки "current_attempt" равно значению максимального числа попыток "attempt_count".
Если соблюдаются условия ниже, то произойдет завершение работы автоматического перезапуска потока:
- статус потока не равен статусу "failure";
- статус автоматической перезагрузки потока находится в состоянии "in_progress";
- время последней попытки автоматической перезагрузки "last_attempt_time" равно "null" или разница между текущим временем и временем последней попытки больше или равна задержке "delay".
Завершение работы автоматического перезапуска потока означает смену статуса автоматической перезагрузки потока на "enabled" и сброс значений текущей попытки автоматической перезагрузки "current_attempt" и времени последней попытки автоматической перезагрузки "last_attempt_time".
Автоматическое удаление логов потоков#
При необходимости можно запустить автоматическое удаление логов потоков. Автоматическое удаление логов помогает очистить таблицу "log" базы данных LUNA Streams от большого количества ненужных логов.
Самая последняя запись для каждого потока удалена не будет.
Автоматическое удаление логов потоков настраивается с помощью нижеописанных параметров из группы параметров "LUNA_STREAMS_LOGS_CLEAR_INTERVAL":
- "interval". Задает интервал удаления логов. Логи, старше чем данный интервал, будут удалены.
- "interval_type". Задает тип интервала (недели, дни, часы, минуты, секунды).
- "check_interval". Задает частоту проверки логов на удаление (секунды).
- "active". Включает/выключает автоматическое удаление логов потоков.
По умолчанию автоматическое удаление логов выключено ("active" = false).
Значения настроек по умолчанию включают автоматическое удаление логов ("active" = true) с проверкой потоков логов в базе данных каждые 180 секунд ("check_interval" = 180) и удаляют логи старше 7 дней ("interval" = 7 и "interval_type" = days).
Пример проверки логов на удаление каждые 5 минут и удаления логов старше 4 недель:
{
"interval": 4,
"interval_type": "weeks",
"check_interval": 300,
"active": true
}
Группировка потоков#
Потоки можно группировать. Группировка призвана объединять потоки с множеством камер в логические группы. Например, можно группировать потоки по территориальному признаку.
Поток может привязан к нескольким группам.
Группа создается с помощью запроса "create group". Для создания группы нужно указать обязательные параметры "account_id" и "group_name". При необходимости можно указать описание группы.
Поток может быть привязан к группе двумя способами:
- с помощью параметров "group_name" или "group_id" во время создания потока (запрос "create stream").
- с помощью запроса "linker". В запросе необходимо указать идентификаторы потоков и группу, к которой их необходимо привязать.
С помощью запроса "linker" также можно отвязать потоки от группы.
Если поток был привязан к группе, то при запросе "get stream" или "get streams" группа будет отражена в поле "groups".
Описание базы данных LUNA Streams#
Общая схема базы данных LUNA Streams приведена ниже.
Описание данных приведено в разделе "Настройки управления потоками".
Рекомендации по настройке FaceStream#
Данный раздел содержит общие рекомендации по настройке FaceStream.
В разделе указаны названия настроек, в которых настраиваются описываемые параметры.
Рекомендации перед началом настройки#
Настройку FaceStream следует выполнять для каждой используемой камеры отдельно. FaceStream должен работать с потоком камеры, находящейся в стандартных рабочих условиях. Данные требования обусловлены следующими причинами:
- Кадры с разных видеокамер могут отличаться по:
- уровню шума,
- размеру кадра,
- освещённости,
- размытости и т. п.
- Настройки FaceStream зависят от условий освещения, поэтому будут отличаться для камер, расположенных в тёмном и светлом помещении;
- Производительность FaceStream зависит от количества лиц или тел, одновременно находящихся в кадре. Поэтому настройки для камеры, которая детектирует одно лицо в 10 секунд, будут отличаться от настроек для камеры, которая детектирует 10 лиц в секунду;
- Количество детекций лиц или тел и качество этих детекций зависят от правильного расположения камеры. Если камера расположена под неправильным углом, то объекты не будут детектироваться на кадрах или не могут быть использованы для дальнейшей обработки, например, из-за слишком больших углов поворота головы на кадрах;
- Лица или тела в зоне видимости камеры могут быть частично или полностью перекрыты посторонними предметами или на фоне могут располагаться объекты, мешающие алгоритмам распознавания.
Камера может быть расположена так, что освещение или условия съёмок изменяются в течение дня. Рекомендуется протестировать работу FaceStream при разных условиях и выбрать оптимальный режим, обеспечивающий надёжную работу FaceStream при любых условиях.
Скорость обработки кадров для видео можно задать с помощью параметра "real_time_mode_fps".
Настройка производительности FaceStream#
Описанные ниже настройки оказывают наибольшее влияние на производительность FaceStream.
Уменьшение области поиска лиц#
Не все области кадра содержат лица. Кроме того, не все лица в кадре имеют необходимый размер и качество. Например, размер лиц на заднем фоне может быть меньше допустимого, а лица по краям кадра могут иметь слишком большие углы поворота.
Параметр "roi" (настройки управления потоками, группа параметров "data"), позволяет задать прямоугольную область, в которой будет выполняться поиск лиц.
Указанная прямоугольная область вырезается из кадра и именно это изображение в дальнейшем обрабатывает FaceStream.
Чем меньше зона поиска, тем меньше ресурсов потребляется на обработку каждого кадра.
Правильное использование параметра "roi" существенно повышает производительность работы FaceStream.
Параметр необходимо использовать только при работе с лицами.
Масштабирование кадра#
Масштабирование кадра перед началом обработки позволяет значительно увеличить производительность FaceStream. Масштабирование кадра можно включается в следующих настройках:
Режим работы | Название параметра | Значение по умолчанию | Состояние по умолчанию |
---|---|---|---|
Только с детектором лиц | "minFaceSize" настроек FaceEngine | 50 (уменьшить в 2.5 раза) | Включено |
Только с детектором тел | "imageSize" настроек FaceEngine | 640 (уменьшить до 640 пикс. по наибольшей стороне) | Включено |
С детектором лиц и с детектором тел | "detector-scaling" и "scale-result-size" настроек TrackEngine | 640 (уменьшить до 640 пикс. по наибольшей стороне) | Включено |
Определение области с движением#
За определение области с движением отвечают три параметра, задаваемые в настройках TrackEngine:
- frg-subtractor — включение режима учёта перемещений в кадре;
- frg-regions-alignment — задание выравнивания для областей с движением;
- frg-regions-square-alignment — установка равных ширины и высоты области с движением.
Ниже приведены рекомендуемые значения для данных параметров при использовании CPU и GPU:
frg-subtractor | frg-regions-alignment | frg-regions-square-alignment | |
---|---|---|---|
Рекомендованное значение при использовании CPU | 1 | 0 | 0 |
Рекомендованное значение при использовании GPU | 1 | 360 | 0 |
Обработка пакетов кадров#
За пакетную обработку кадров отвечают три параметра, задаваемые в настройках TrackEngine:
- batched-processing — включение пакетной обработки кадров;
- min-frames-batch-size — минимальное количество кадров, которое следует накопить со всех камер перед обработкой;
- max-frames-batch-gather-timeout — время между обработкой пакетов кадров.
Общая информация о настройке#
Работа с треком#
Для каждого найденного лица или тела создаётся новый трек. В рамках этого трека определяются и отправляются лучшие кадры.
В общем случае трек прерывается, когда объект больше не может быть найден на кадре.
Если трек был прерван, а человек вновь появился в кадре, то для него будет создан новый трек.
Возможна ситуация, когда два лица или тела пересекаются в кадре (один человек проходит за спиной другого). В этом случае треки для обоих людей обрываются и создаются новые треки.
Возможна ситуация, когда человек отворачивается или его лицо или тело временно перекрывается. В этом случае трек можно не обрывать сразу, а указать параметр "skip-frames" в настройках TrackEngine. Он задаёт количество кадров, в течение которых система будет ожидать повторного появления объекта в области, где он исчез.
При работе с треком также полезно использовать параметр "detector-step", позволяющий указать количество кадров, на которых будет выполняться редетекция лица или тела в заданной области до выполнения детекции лица или тела.
Отправка лучшего кадра#
Группа параметров "sending" (настройки управления потоками) позволяет задать параметры для отправки лучшего кадра. FaceStream отправляет полученные лучшие снимки в LUNA PLATFORM (см. "Перечень приоритетных настроек").
Для увеличения точности распознавания можно отправлять для одного лица или тела не один, а сразу несколько лучших снимков. Для этого нужно включить параметр "face_bestshots_to_send" или "body_bestshots_to_send" (настройки управления потоками).
LUNA PLATFORM позволяет агрегировать данные лучшие снимки и создавать на их основе биометрический шаблон более высокого качества.
Если за указанный период или до окончания трека не набралось необходимое количество лучших снимков, то отправляются только те лучшие снимки, которые были собраны.
Значения параметров "time_period_of_searching" (настройки управления потоками) и "silent_period" (настройки управления потоками) могут быть заданы в секундах или кадрах. Для выбора единиц измерения используется параметр "type".
Примечание. Параметр "silent_period" работает только при включенном режиме работы с лицами. При работе с телами или в совместном режиме параметр не будет работать.
Далее перечислены основные варианты настроек параметров "time_period_of_searching" и "silent_period" группы "sending" из настроек управления потоками при работе с лицами.
-
Лучший снимок отправляется только после того, как трек закончился и человек вышел из зоны видимости камеры.
Таким образом анализируются все кадры с лицом или телом человека и выбирается лучший кадр.
time_period_of_searching = -1 silent_period = 0
-
Требуется получить лучший кадр как можно быстрее и отправлять лучшие снимки с указанной периодичностью.
Например, если злоумышленник зашёл в супермаркет, требуется сразу отправить лучший кадр для сравнения с чёрным списком.
Данный режим так же используется для демонстрации работы FaceStream в реальном времени.
В конце трека лучший кадр будет отправлен, даже если заданный период не закончился.
time_period_of_searching = 3 silent_period = 0
-
Требуется быстро отправить лучший кадр, а потом отправить заново, только если человек долго находится в кадре.
time_period_of_searching = 3 silent_period = 20
-
Требуется быстро отправить лучший кадр и больше никогда не отправлять с этого трека лучший кадр.
time_period_of_searching = 3 silent_period = -1
Фильтрация кадров#
Фильтрация кадров лиц выполняется по трём основным критериям (задаются в настройках для управления потоками"):
- Углам наклона головы ("detection_yaw_threshold", "detection_pitch_threshold", "detection_roll_threshold").
Для угла поворота (yaw) задаются два дополнительных параметра "yaw_number" и "yaw_collection_mode", которые позволяют уменьшить вероятность возникновения ошибки, когда вместо большого угла наклона возвращается угол "0";
-
Качеству кадра для его дальнейшей обработки ("min_score_face");
-
Перекрытию области рта ("mouth_occlusion_threshold").
Если кадр не прошёл фильтрацию хотя бы по одному из указанных фильтров, то он не может быть выбран в качестве лучшего кадра.
Если задан параметр "face_bestshots_to_send", то кадр, прошедший фильтрацию, добавляется в массив лучших снимков для отправки. Если уже набрано необходимое количество лучших снимков для отправки, то один из этих снимков, имеющий худшее качество кадра (score), будет заменён новым лучшим кадром, если его качество выше.
Фильтрация кадров тел выполняется только по одному критерию - "min_score_body".
Работа со СКУД#
Работа со СКУД ведется только с лицами.
При работе со СКУД используются настройки "primary_track_policy" из настроек управления потоками. Они позволяют включить режим работы только с одним лицом, размер которого является самым большим. Предполагается, что интересующее лицо находится близко к камере.
Трек самого большого лица в кадре становится главным треком. Все остальные лица в кадре детектируются, но не обрабатываются. Лучшие снимки для них не отправляются.
Как только другое лицо достигнет большего размера, чем лицо главного трека, трек этого лица станет новым главным треком и обработка будет выполняться для него.
Включение режима выполняется настройкой "use_primary_track_policy".
Определение лучшего кадра начинается только когда лицо достигает размера (по вертикали), заданного в параметре "best_shot_min_size". Кадры с лицами меньшего размера не могут стать лучшими снимками.
Когда размер детекции лица по вертикали достигает значения установленного в "best_shot_proper_size", сразу же выполняется отправка лучшего кадра.
Значения "best_shot_min_size" и "best_shot_proper_size" задаются в зависимости от используемой видеокамеры и её расположения.
Далее приведены примеры настройки параметров группы "sending" из настроек управления потоками для работы со СКУД.
- Турникет откроется только один раз. Для повторного открытия турникета потребуется оборвать трек (отойти из зоны видимости видеокамер).
time_period_of_searching = -1
silent_period = 0
- Турникет будет открываться с некоторой периодичностью (в данном случае каждые три секунды), если человек встал прямо перед ним.
time_period_of_searching = 3
silent_period = 0
При включённом параметре "use_primary_track_policy" лучший кадр никогда не отправляется при окончании трека.
Форматы, стандарты сжатия видео и протоколы#
FaceStream использует библиотеку FFMPEG для конвертации видео и получения потока с использованием различных протоколов. Далее перечислены все основные форматы, стандарты сжатия видео и протоколы, которые были протестированы при работе с FaceStream.
FFMPEG поддерживает большее количество форматов и стандартов сжатия видео. Они не перечислены в данном разделе, т. к. крайне редко используются при работе с FaceStream.
Форматы видео#
Основные форматы видео, обрабатываемые FaceStream:
- AVI,
- MP4,
- MOV,
- MKV,
- FLV.
Стандарты сжатия видео (кодеки)#
Основные стандарты сжатия видео, с которыми работает FaceStream:
- MPEG1, MPEG2, MPEG3, MPEG4,
- MS MPEG4,
- MS MPEG4v2,
- MJPEG,
- H.264,
- H.265,
- VC1,
- HEVC,
- VP8,
- VP9,
- AV1,
- другие.
Протоколы#
Основные протоколы транспортного уровня, используемые FaceStream для получения данных:
- TCP,
- UDP.
Основные протоколы прикладного уровня, используемые FaceStream для получения данных:
- HTTP (основывается на протоколе транспортного уровня TCP)
- HTTS (основывается на протоколе транспортного уровня TCP)
- RTP (основывается на протоколе транспортного уровня UDP)
- RTSP (основывается на протоколах транспортного уровня TCP или UDP)
- RTMP (основывается на протоколе транспортного уровня TCP)
- HLS (основывается на протоколе транспортного уровня TCP)
Для использования протоколов прикладного уровня, необходимо указать соответствующий протокол транспортного уровня в параметре "type" настроек управления потоками.
Потребление памяти при работе FaceStream#
В данном разделе перечислены причины увеличения потребления оперативной памяти при работе FaceStream.
-
Каждый подключенный поток даёт прирост потребления памяти. Количество потребляемой памяти зависит от настроек, заданных для FaceStream:
-
числа Ffmpeg потоков в параметре "ffmpeg_threads_number" (настройки управления потоками),
- размера кэша изображений в параметре "stream_images_buffer_max_size" (настройки FaceStream),
-
размеров буферов в параметре "frames-buffer-size" (настройки TrackEngine).
-
Если количество потоков, заданных в параметре "ffmpeg_threads_number", больше "1", то значительно увеличивается потребляемая память. При этом прирост потребления происходит крайне медленно и заметен лишь через несколько часов работы.
Для RTSP потоков можно выставить значение параметра "ffmpeg_threads_number" равным "0" или "1". В этом случае рост памяти не выявлен.
-
Потребление памяти растет после запуска FaceStream. Рост происходит в течение 1-2 часов. Это связано с наполнением кэшей (см. пункт 1). Если новые потоки не создаются и не выполняется пункт 2, то потребление памяти перестаёт расти.
-
Потребление памяти растёт при включённых настройках в секции Debug (настройки FaceStream и TrackEngine).
Интерфейс воспроизведения потока#
В FaceStream доступна возможность просмотра потока в режиме реального времени. Для просмотра потока необходимо ввести следующий адрес в браузерную строку после начала обработки потока приложением FaceStream:
http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.
При появлении объектов в поле видимости камеры, FaceStream отображает их определенным образом.
Ограничивающий прямоугольник желтого цвета возникает если для детекции не пройден хотя бы один порог из "detection_yaw_threshold", "detection_pitch_threshold" или "detection_roll_threshold".
Ограничивающий прямоугольник красного цвета возникает если оценка приемлемости детекции ниже, чем значения, заданные в параметрах "min_score_face" или "min_score_body".
Ограничивающий прямоугольник синего цвета возникает при детекции (редетекции) или трекинге объекта.
Ограничивающий прямоугольник зеленого цвета возникает во всех остальных случаях при соблюдении всех условий.
Ограничивающий прямоугольник оранжевого цвета возникает при использовании ROI.
Совместный режим детектирования лиц и тел#
В FaceStream доступен режим одновременного детектирования лиц и тел.
Важно! Функционал находится в состоянии бета-тестирования. Часть функций может не работать.
Совместный режим включается с помощью одновременного включения настроек "use-face-detector" и "use-body-detector". Использование совместного режима регулируется настройкой "data" > "analytics" > "mode" в настройках создания потока.
При включении совместного режима, FaceStream отправляет следующие данные к ресурсу handlers/{handler_id}/stream_events
LUNA PLATFORM:
- Лучшие снимки лиц и тел
- Время детекции
- Время относительно начала видеофайла
- Координаты лиц и тел
- Исходные изображения
В совместном режиме используется порог "min_score_body".
Периодическая отправка лучших снимков в совместном режиме работает аналогично работе с телами. Это значит, что параметр "silent_period" не будет работать.
Неподдерживаемый функционал#
В настоящее время в совместном режиме не поддерживается следующий функционал:
- Политика Главного трека.
- Параметр "data" > "analytics" > "sending" > "full_frame_settings", определяющий какие исходные кадры будут отправлены (лица, тела или лица и тела). В настоящий момент отправляются только исходные кадры лиц и тел.
- Периодическая отправка лиц. В настоящий момент работает по сценарию периодической отправки тел.
- Параметр "data" > "analytics" > "sending" > "bestshot_settings" > "type", определяющий какие лучшие снимки будут отправлены (лица, тела или лица и тела). В настоящий момент будут отправляться только лучшие снимки лиц и тел.
Перечень приоритетных настроек#
Для отправки фотоизображений в LUNA PLATFORM в первую очередь необходимо настроить FaceStream на работу с лицами или телами (см. настройки для переключения режима обнаружения ниже), а также настроить основные параметры, необходимые для корректной работы приложения. Все настройки разделены следующим образом:
-
Настройки FaceStream — задаются в секции "FACE_STREAM_CONFIG" в Configurator или в конфигурационном файле "fs3Config.conf".
-
Настройки управления потоками — задаются в запросе с телом в формате JSON к ресурсу "/streams" в сервис LUNA Streams.
-
Настройки TrackEngine — задаются в секции "TRACK_ENGINE_CONFIG" в Configurator или в конфигурационном файле "trackengine.conf".
См. подробное описание нижеперечисленных параметров в соответствующих разделах.
Доступны следующие общие параметры для отправки и лиц и тел:
Настройки FaceStream
Параметр | Описание |
---|---|
sending > async_requests | Позволяет переключаться между режимами асинхронной и синхронной отправки запросов в LUNA PLATFORM |
sending > send_source_frame | Позволяет включить отправку исходного кадра в LUNA PLATFORM |
sending > jpeg_quality_level | Позволяет задать степень сжатия исходного кадра |
Настройки управления потоками
Параметр | Описание |
---|---|
data > analytics > event_handler > frame_store | Позволяет задать URL сервиса Image Store для отправки исходного кадра |
Настройки для работы с лицами#
Основные параметры, которые должны быть указаны для отправки фотоизображений лиц в соответствующий сервис, указаны ниже.
Настройки TrackEngine
Параметр | Описание |
---|---|
use-face-detector | Позволяет обнаруживать лица — "1" |
use-body-detector | Позволяет обнаруживать тела — "0" |
Настройки FaceStream
Параметр | Описание |
---|---|
lunastreams > api_version | Позволяет задать версию API сервиса LUNA Streams для отправки запросов в LP — "1" |
lunastreams > origin | Полный сетевой путь до сервиса LUNA Streams |
lunaplatform > api_version | Позволяет задать версию API сервиса LUNA API для отправки запросов в LP — "6" |
lunaplatform > origin | Полный сетевой путь до LUNA PLATFORM |
sending > request_type | Тип запроса для отправки изображений в LP — "jpeg" |
sending > portrait_type | Формат передачи изображения — "warp" |
sending > aggregate_attr_requests | Позволяет включать агрегацию лучших кадров для получения одного биометрического шаблона в LUNA PLATFORM — "true" или "false" |
Настройки управления потоками
Параметр | Описание |
---|---|
data > type | Тип источника сигнала (tcp, udp, videofile, images) — "строка" |
account_id | "Luna_account_id", к которому относится выполняемый запрос — "строка в формате UUID" |
data > analytics > event_handler > handler_id | обработчик LP, позволяющий гибко настроить обработку лиц — "строка в формате UUID" |
Подробную информацию об обработчиках можно найти в документации APIReferenceManual.html в комплекте поставки LUNA PLATFORM 5.
Настройки для работы с телами#
Основные параметры, которые должны быть указаны для отправки фотоизображений тел в соответствующий сервис, указаны ниже.
Настройки TrackEngine
Параметр | Описание |
---|---|
use-face-detector | Позволяет обнаруживать лица — "0" |
use-body-detector | Позволяет обнаруживать тела — "1" |
Настройки FaceStream
Параметр | Описание |
---|---|
lunastreams > api_version | Позволяет задать версию API сервиса LUNA Streams для отправки запросов в LP — "1" |
lunastreams > origin | Полный сетевой путь до сервиса LUNA Streams |
lunaplatform > api_version | Позволяет задать версию API сервиса LUNA API для отправки запросов в LP — "6" |
lunaplatform > origin | Полный сетевой путь до LUNA PLATFORM |
sending > aggregate_attr_requests | Позволяет включать агрегацию лучших кадров для получения одного биометрического шаблона в LUNA PLATFORM — "true" или "false" |
sending > minimal_body_track_length_to_send | Данный параметр включает отправку детекций с координатами тела человека — x, y, width и height и устанавливает количество детекций, меньше значения которого они не будут отправляться — "3" |
sending > detection_path_length | Устанавливает максимальное количество детекций для параметра "minimal_body_track_length_to_send" — "100" |
Настройки управления потоками
Параметр | Описание |
---|---|
data > type | Тип источника сигнала (tcp, udp, videofile, images) — "строка" |
account_id | "Luna_account_id", к которому относится выполняемый запрос — "строка в формате UUID" |
data > analytics > event_handler > handler_id | обработчик LP, позволяющий гибко настроить обработку тел — "строка в формате UUID" |
Подробную информацию об обработчиках можно найти в документации APIReferenceManual.html в комплекте поставки LUNA PLATFORM 5.
Настройки управления потоками#
Параметры для управления потоками задаются сервисе LUNA Streams. Сервис позволяет создавать и хранить потоки в базе данных LUNA Streams.
Важно! LUNA Streams имеет две версии API. В данной документации описывается вторая версия API. См. описание первой версии API в документации FaceStream v.5.1.49 и ниже.
Важно! Настройки управления потоками не хранятся в сервисе LUNA Configurator и могут быть заданы только с помощью HTTP запросов к сервису LUNA Streams. Настройки сервиса LUNA Streams, задаваемые в LUNA Configurator, описаны в разделе "Настройки LUNA Streams".
Базовое описание параметров приведено в спецификации OpenAPI сервиса LUNA Streams. В данном разделе приводится расширенное описание для некоторых параметров.
Фактически, все настройки управления потоками можно разделить на следующие категории:
- общие настройки потока — имя потока, описание, политика перезапуска при ошибке и пр.
- настройки обработки потока — информация о типе потока, его адресе и некоторую дополнительную информацию
- настройки аналитики — анализ содержимого потока и настройка фильтрации для отправки во внешнюю систему
- настройки Liveness
- настройки политики Главного трека
Общие настройки потока#
Общие настройки позволяют определить ключевые параметры, необходимые для авторизации, управления и характеризации потока.
Общие настройки потока:
- "account_id" — задает значение обязательного поля "account_id", которое передаётся в заголовке запроса в LUNA PLATFORM 5 в сервис LUNA API. Параметр используется для привязки получаемых данных к конкретному пользователю.
- "name" — имя потока. Служит для идентификации источника отправляемых кадров.
- "description" — пользовательское описание потока
- "location" — задает информацию о расположении источника видеосигнала (город, область, район и т.д.)
- "autorestart" — настойка автоматического перезапуска потока. См. раздел "Автоматический перезапуск потоков" для более подробной информации.
- "status" — статус потока на момент начала обработки
- "group_name" и "group_id" — параметры привязки потока к группе
Также доступна группа параметров "data", задающая основные настройки для обработки потока. См. раздел "Настройки обработки потока" для более подробной информации.
Настройки обработки потока#
Для начала обработки FaceStream должен получить информацию о типе потока, его адресе и некоторую дополнительную информацию. Соответствующие параметры задаются в группе параметров "data".
Основные настройки в группе параметров "data":
- "type" — тип передачи потока:
- сетевой протокол TCP
- сетевой протокол UDP
- набор изображений
- видеофайл
- "reference" — источник потока (ссылка, путь к видеофайлу или набору изображений и др.)
- "roi" — область интереса в которой происходит детекция и сопровождение лица на кадре
- "ffmpeg_threads_number" — количество потоков для декодирования видео с помощью FFMPEG
- "real_time_mode_fps" — количество FPS, с которым будет обработан видеофайл
- "frame_processing_mode" — параметр, определяющий будет ли обрабатываться полный или масштабированный кадр
- "rotation" — угол поворота изображения с источника. Используется в случае, если входящий поток повернут, например, если камера установлена на потолке. Поворот выполняется по часовой стрелке.
- "preferred_program_stream_frame_width" — позволяет автоматически выбирать оптимальный канал из нескольких в потоке
- "endless" — управление перезагрузкой потока при получении ошибки сети
- "mask" — маска имён файлов в директории с изображениями
Также в группе параметров "data" задаются настройки аналитики. См. раздел "Настройки аналитики" для более подробной информации.
type#
Тип передачи потока. После выбора типа передачи потока, необходимо указать путь к источнику/изображениям/USB-устройству и тд. в настройке "reference".
Приложение может использовать один из следующих типов передачи потока:
- tcp — сетевой протокол транспортного уровня для приема видеоданных
- udp — сетевой протокол транспортного уровня для приема видеоданных
- images — набор кадров в виде отдельных файлов изображений
- videofile — видеофайл
В FaceStream указываются только протоколы транспортного уровня (TCP или UDP). Необходимо понимать на каком протоколе транспортного уровня базируется протокол прикладного уровня (HTTP, RTSP, HLS и др.). См. подробную информацию в разделе "Протоколы".
Протокол TCP реализует механизм контроля ошибок, позволяющий минимизировать потерю информации и пропуски опорных кадров ценой увеличения сетевой задержки. Опорные кадры являются основой различных алгоритмов сжатия, используемых в видеокодеках (например, h264). Только опорные кадры содержат достаточное количество информации для полного восстановления (декодирования) изображения, в то время как промежуточные кадры содержат лишь отличия между соседними опорными кадрами.
В условиях вещания по сети существует риск потери пакетов из-за несовершенства каналов связи. В случае потери пакета, содержащего данные опорного кадра, невозможно корректно декодировать фрагмент потока. Как следствие, возникают характерные артефакты, легко различимые визуально. Эти артефакты не позволяют детектору лиц работать в штатном режиме.
Протокол UDP не реализует механизма контроля ошибок, поэтому поток не защищен от повреждения. Использование данного протокола рекомендуется только при наличии высококачественной сетевой инфраструктуры.
При большом количестве потоков (10 и более) настоятельно рекомендуется использовать протокол UDP. При использовании протокола TCP могут возникнуть проблемы с чтением потоков.
FaceStream обрабатывает данные из типов images и videofile только один раз. После обработки всех изображений или видеофайла в логи FaceStream будет выведено сообщение о завершении обработки. Если набор изображений или видеофайлы были изменены, то необходимо перезапустить обработку потока, после чего FaceStream снова единоразово выполнит обработку всех изображений или видеофайла.
reference#
Полный путь к источнику (для типа "tcp"/"udp"):
"reference": "rtsp://some_stream_address"
Номер USB устройства (для типа "tcp"/"udp"):
"reference": "/dev/video0"
Для использования USB устройства, необходимо указать флаг
--device
с адресом USB устройства при запуске Docker-контейнера FaceStream. См. раздел "Ключи запуска" в руководстве по установке FaceStream.
Полный путь к видеофайлу (для типа "videofile"):
"reference": "/example/path/to/video/video.mp4"
Полный путь к директории с изображениями (для типа "images"):
"reference": "/example/path/to/images/"
Для использования видеофайлов и изображений необходимо их предварительно перенести в Docker-контейнер.
roi#
Данный параметр используется только для работы с лицами.
ROI задаёт область интереса в которой происходит детекция и сопровождение лица на кадре.
Указанная прямоугольная область вырезается из кадра и именно это изображение в дальнейшем обрабатывает FaceStream.
Правильное использование параметра "roi" существенно повышает производительность работы FaceStream.
Область интереса ROI на исходном кадре задается параметрами "x", "y", "width", "height" и "mode", где:
- "x" и "y" – координаты верхней левой точки области интереса ROI;
- "width" и "height" – ширина и высота обрабатываемой области кадра;
- "mode" – режим указания "x", "y", "width" и "height". Доступно два режима:
- "abs" – параметры "x", "y", "width" и "height" задаются в пикселях;
- "percent" – параметры "x", "y", "width" и "height" задаются в процентах от текущего размера кадра.
Если поле "mode" не указывается в теле запроса, то будет использовано значение "abs".
При значениях ширины и высоты, равных "0", областью интереса считается весь кадр.
Система координат на изображении задается аналогично рисунку ниже.
Ниже приведен пример расчета ROI в процентах:
frame_processing_mode#
Данный параметр используется для типов "tcp", "udp" и "videofile".
Параметр аналогичен convert_full_frame, но задаётся для конкретного экземпляра FaceStream.
При значении "full" кадр сразу конвертируется в RGB изображение необходимого размера после декодирования. При этом получается изображение лучшего качества, снижается скорость обработки кадров.
При значении "scale" масштабирование изображения выполняется в зависимости от настроек TrackEngine (стандартное поведение для релизов 3.2.4 и ниже).
По умолчанию задано значение "auto". В этом случае один из двух режимов выбирается автоматически.
real_time_mode_fps#
Данный параметр используется только для типа "videofile".
Параметр позволяет задать количество FPS, с которым будет обработан видеофайл.
Если у видео высокое значение FPS и FaceStream не может работать с заданным количеством кадров в секунду, то кадры будут пропускаться.
Таким образом, видеофайл имитирует поток с реальной видеокамеры. Это может быть полезно при настройке производительности. Видео будет проигрываться с выбранной скоростью, что удобно для нагрузочного тестирования и последующего анализа.
Параметр не используется, если выставлено значение "0".
ffmpeg_threads_number#
Параметр позволяет задать количество потоков для декодирования видео с помощью FFMPEG.
При увеличении числа потоков увеличивается число ядер процессора, задействованных в декодировании. Увеличение числа потоков рекомендуется при обработке видео высокого разрешения (4K и выше).
preferred_program_stream_frame_width#
Данный параметр используется для типов "tcp", "udp".
Данный параметр предназначен для работы с протоколами, в которых подразумевается наличие нескольких каналов с разными битрейтами и разрешением (например, HLS).
Если у потока существует несколько таких каналов, то данный параметр позволит выбрать из всех каналов цельного потока тот канал, ширина кадра которого ближе к значению, указанному в данном параметре.
Например, имеется 4 канала, ширины кадров которых равны 100, 500, 1000 и 1400. Если параметр "preferred_program_stream_frame_width" равен "800", то будет выбран канал, ширина кадра которого равняется 1000.
Если у потока всего один канал, то данный параметр будет игнорироваться. Если указывается значение "0", то будет использоваться канал по умолчанию. Можно задать значение очень большим, чтобы заведомо выбрать наибольший канал.
В логах FaceStream (тег "ffmpeg") выбранное значение будет указываться в виде сообщения:
Url: [url] selected preferred stream #[res], [width]x[height] preferred width: [preferredProgramStreamFrameWidth]
Значение по умолчанию равно 800.
endless#
Данный параметр используется для типов "tcp", "udp".
Данный параметр позволяет управлять перезагрузкой потока при получении ошибки сети (ошибка определяется системой как маркер конца файла eof
).
Если параметр endless
принимает значение true
, то в случае получения eof
и успешного переподключения, обработка потока будет продолжена. Если все попытки переподключения не удались (см. группу параметров "healthcheck"), то поток примет статус "failure". Если же параметр принимает значение false
, то обработка потока не будет продолжена и поток примет статус "done".
При трансляции видеофайла предполагается использование значения false
. Это позволит избежать повторной обработки уже обработанного фрагмента видеофайла при получении eof
. Если же при трансляции видеофайла значение параметра endless
будет true
, то после окончания обработки видеофайл начнет обрабатываться с начала.
mask#
Данный параметр используется для типа "images".
Маска имён файлов в директории с изображениями. Маска позволяет FaceStream понять, какие файлы из указанной директории следует использовать и в каком порядке.
Если задать маску “Img_%02d.jpg”, то FaceStream будет обрабатывать файлы, имена которых состоят из: Префикс (Img_) + двузначное число (%02d) + формат (.jpg)
Изображения, подходящие под маску, будут обрабатываться по очереди изображения:
- Img_00.jpg
- Img_01.jpg
- Img_02.jpg
- Img_03.jpg
Другой пример маски – Photo-%09d.jpg. Подходящие под маску файлы:
- Photo-000000000.jpg
- Photo-000000001.jpg
- Photo-000000002.jpg
- Photo-000000003.jpg
FaceStream обрабатывает файлы по порядку нумерации и не пропускает несуществующие файлы. Если следующий по нумерации файл отсутствует, FaceStream прекращает обработку.
Указанная в примере маска “example1_%04d.jpg” приведёт к обработке изображений, название которых состоит из префикса example1_ и порядкового номера кадра размером в 4 символа (например: example1_0001.jpg, example1_0002.jpg и т. д.).
"mask": "example1_%04d.jpg"
Настройки аналитики#
Под аналитикой понимается анализ содержимого видеопотока для извлечения ключевых данных и характеристик. Задание настроек аналитики также предоставляет возможность настройки фильтрации данных и их отправки во внешнюю систему. Соответствующие параметры задаются в группе параметров "analytics".
Основные настройки в группе параметров "analytics":
- "enabled" — включение аналитики
- "mode" — режим аналитики (
1
— только лица,2
— только тела,3
— тела и лица) - "droi" — область выбора исходного кадра
- "filtering" — объекты фильтрации изображений и отправки результирующих лучших кадров
- "sending" — настройка параметров, связанных с составлением коллекции лучших кадров, а также периода, в течении которого будет проводиться анализ кадров для выбора лучшего кадра
- "event_handler" — настройка параметров, связанных с интеграцией с внешней системой для последующей обработки кадров
- "healthcheck" — настройка параметров, отвечающих за повторное подключение к потоку при возникновении ошибок во время потоковой передачи видео
Также в группе параметров "analytics" задаются настройки проверки Liveness и политики Главного трека. Как правило, данные параметры редко используются в кооперативном режиме. См. разделы "Настройка Liveness" и "Настройка политики Главного трека" для более подробной информации
Область выбора лучшего кадра#
Данный параметр используется только для работы с лицами.
Область интереса внутри исходного кадра или ROI задается с помощью параметра "droi". Если используется область ROI, то детектирование лиц выполняется в области ROI, но лучший кадр выбирается только в области DROI. Детекция лица должна полностью находиться внутри области DROI, чтобы кадр рассматривался в качестве лучшего. Ни одна сторона детекции не должна выступать из области DROI даже на миллиметр.
DROI рекомендуется использовать при работе со СКУД и при включённом режиме "use_mask_liveness_filtration".
Например, если рядом стоит несколько турникетов и каждый из них должен искать лицо только в небольшой зоне и одновременно осуществлять проверку Liveness. Использование DROI позволяет ограничить область для определения лучшего кадра и при этом не терять информацию о заднем плане.
Область интереса DROI на исходном кадре задается параметрами "x", "y", "width", "height" и "mode", где:
- "x" и "y" – координаты верхней левой точки области интереса DROI;
- "width" и "height" – ширина и высота обрабатываемой области кадра;
- "mode" – режим указания "x", "y", "width" и "height". Доступно два режима:
- "abs" – параметры "x", "y", "width" и "height" задаются в пикселях;
- "percent" – параметры "x", "y", "width" и "height" задаются в процентах от текущего размера кадра.
Если поле "mode" не указывается в теле запроса, то будет использовано значение "abs".
При расчете DROI нужно учитывать то, что данная область интереса рассчитывается относительно исходного кадра, а не относительно ROI.
Если размер ROI изменяется, а размер DROI остаётся в значении по умолчанию (0, 0, 0, 0), то DROI не учитывается. Если изменить размер DROI, то он будет учитываться при выборе лучшего кадра.
Ниже приведен пример расчета DROI в процентах:
Фильтрация кадров#
Группа параметров "filtering" описывает объекты фильтрации изображений и отправки результирующих лучших кадров.
min_score_face#
Параметр задает порог для фильтрации отправляемых детекций лиц.
Для каждой детекции вычисляется AGS (Approximate Garbage Score) и общее качество.
Детекции, у которых значение AGS меньше, чем значение, указанное в пороге "min_score_face" не будут считаться приемлимыми для дальнейшей работы. Далее по отфильтрованным детекциям будут выбраны лучшие снимки в соответствии с общим качеством детекции.
Если в параметре "min_score_face" задано значение "0", то лучшие снимки будут определены по общему качеству детекций.
Значение по умолчанию – 0.5187.
Рекомендуемое значение порога было выявлено путем проведения исследований и анализа детекций на различных изображениях лиц.
min_score_body#
Параметр задает порог для фильтрации отправляемых детекций тел.
Для каждой детекции вычисляется общее качество.
Детекции, у которых общее качество меньше, чем значение, указанное в пороге "min_score" не будут считаться приемлимыми для дальнейшей работы. Далее по отфильтрованным детекциям будут выбраны лучшие снимки.
Если в параметре "min_score" задано значение "0", то лучшие снимки будут определены по качеству детекций.
Значение по умолчанию – 0.5.
Рекомендуемое значение порога было выявлено путем проведения исследований и анализа детекций на различных изображениях тел.
detection_yaw_threshold#
Данный параметр используется только для работы с лицами.
Параметр задаёт максимальное значение угла поворота головы вправо и влево относительно камеры.
Если угол поворота головы на кадре больше заданного значения, то кадр считается неприемлемым для дальнейшей обработки.
Для отключения фильтрации необходимо задать значение "180".
detection_pitch_threshold#
Данный параметр используется только для работы с лицами.
Параметр задаёт максимальное значение угла наклона головы вниз и вверх относительно камеры.
Если угол наклона головы на кадре больше заданного значения, то кадр считается неприемлемым для дальнейшей обработки.
Для отключения фильтрации необходимо задать значение "180".
detection_roll_threshold#
Данный параметр используется только для работы с лицами.
Параметр задаёт максимальное значение угла наклона головы влево и вправо относительно камеры.
Если угол наклона головы на кадре больше заданного значения, то кадр считается неприемлемым для дальнейшей обработки.
Для отключения фильтрации необходимо задать значение "180".
yaw_number#
Данный параметр используется только для работы с лицами.
Параметр определяет количество кадров, используемых для фильтрации фотоизображений по углу поворота (yaw angle) головы. Фильтрация отсекает изображения с сильно повернутыми от камеры лицами.
Как это работает:
В параметре задаётся количество кадров. Специальный алгоритм анализирует угол поворота головы на каждом из этих кадров. Если угол резко отличается от среднего значения в группе, то кадр не будет рассматриваться в качестве лучшего кадра.
Пример: Установим значение параметра "7", то есть будут рассмотрены 7 кадров. Представим, что на шести кадрах из семи посчитали, что угол поворота головы относительно камеры находится в диапазоне 50 — 60 градусов, а на седьмом кадре значение угла равно 0. Такое резкое изменение угла поворота головы за такой короткий промежуток времени невозможно, и, скорее всего, угол на седьмом кадре определен неверно. Седьмой кадр будет отсечен и не будет отправлен на внешний сервис в качестве лучшего кадра.
По умолчанию параметр выключен, значение равно "1". Рекомендуемое значение – "7".
yaw_collection_mode#
Данный параметр используется только для работы с лицами.
Параметр указывает системе, что необходимо собрать заданное в параметре "yaw_number" количество кадров для анализа угла поворота (yaw angle) головы.
Если параметр "yaw_collection_mode" отключен, то система будет последовательно проводить анализ поступающих кадров, т. е. сначала проводится анализ двух кадров, затем трех и т. д. Максимальное количество кадров этой последовательности задано в "yaw_number".
По умолчанию параметр отключён.
Цель работы параметров "yaw_number" и "yaw_collection_mode" — увеличить точность определения лучшего кадра из всего трека.
mouth_occlusion_threshold#
Данный параметр используется только для работы с лицами.
Параметр определяет максимальную степень перекрытия рта у лица в кадре.
Например, при значении параметра равном "0.5" допускается перекрытие 50% области рта.
Если полученное значение превышает указанный порог, изображение считается неприемлемым для дальнейшей обработки. зк
Фильтрация проводится при значении параметра "0.3" и выше. При значении ниже фильтрация отключена.
min_body_size_threshold#
Параметр задает размер детекции тела, меньше которого она не будет рассматриваться как лучший снимок. Размер высчитывается как квадратный корень из произведения ширины (в пикселях) на высоту (в пикселях) детекции.
Пример: min_body_size_threshold = sqrt (64*128) = 90.5
Если значение равно "0", то фильтрация детекции тела по размеру выполняться не будет.
Отправка во внешнюю систему#
В группе параметров "sending" определяется период, в течении которого будет проводиться анализ кадров для выбора лучшего кадра, а также определяются все параметры, связанные с составлением коллекции лучших кадров.
Настройки отправки данных тел#
Вместе с исходными кадрами тел можно отправлять и детекции с координатами тела человека для того, чтобы можно было отследить путь человека. Настройки отправки данных тел регулируются в группе параметров "body".
Доступно два параметра:
- "delete_track_after_sending" — включить удаление лучших кадров и детекций после отправки данных. Если значение равно "false" (по умолчанию), то данные останутся в памяти.
- "send_only_full_set" — включить отправку данных во внешнюю систему только если набрано определенное количество лучших снимков (параметр "body_bestshots_to_send") и только если набрано определенное количество детекций с координатами тела человека (параметр "minimal_body_track_length_to_send" настроек FaceStream).
Настройки отправки лучших снимков#
Настройки отправки лучших снимков регулируются в группе параметров "bestshot_settings".
Доступны следующие параметры:
- "type" — режим отправки лучших снимков:
- только лучшие снимки лиц
- только лучшие снимки тел
- лучшие снимки лиц и тел в одном запросе
- лучшие снимки лиц и тел в разных запросах
-
"face_bestshots_to_send" и "body_bestshots_to_send" — количество лучших снимков, которое пользователь хочет получить с трека или с какого-то промежутка времени на этом треке.
Использование данного параметра предполагает создание коллекции из лучших снимков трека или временного отрезка трека, заданном в параметре "time_period_of_searching". Эта коллекция будет отправлена во внешнюю систему.
Увеличение значения повышает вероятность правильного распознавания объекта, но сказывается на загруженности сети.
full_frame_settings#
Важно! В настоящий момент в совместном режиме детектирования лиц и тел отправляются только исходные кадры лиц и тел.
Данный параметр задает режим отправки исходных кадров:
- только исходные кадры лиц
- только исходные кадры тел
- исходные кадры лиц и тел в одном запросе
- исходные кадры лиц и тел в разных запросах
Важно! Отправка исходных кадров должна быть включена в параметре "send_source_frame" в настройках FaceStream.
time_period_of_searching#
Период анализа кадров, по истечении которого будет отправлен лучший кадр (период начинается с момента появления человека в кадре - первой детекции). Уменьшение этого параметра позволяет быстрее определять личность, но с большей погрешностью.
Тип измерения задается в параметре "type" (см. ниже). Если значение равно "-1" (по умолчанию), то анализ кадров проводится по всем кадрам до конца трека. По окончании трека (когда объект покидает пределы кадра) лучший кадр будет отправлен во внешний сервис.
silent_period#
Данный параметр используется только для работы с лицами.
Период ожидания, когда предыдущий анализ кадров завершился, а новый ещё не начался.
Тип измерения задается в параметре "type" (см. ниже). Если значение равно "-1", то период ожидания будет длиться бесконечно.
type#
Параметр задаёт тип измерения для параметров "silent_period" и "time_period_of_searching". Может принимать два значения - "frames" (кадры) или "sec" (секунды).
Настройки интеграции с внешней системой#
Отправляемые FaceStream кадры могут обрабатываться внешней системой. Для этого требуется указать:
- идентификатор обработчика (параметр "handler_id")
- адрес для сохранения исходных кадров
- настройки авторизации через токен
frame_store#
В данном параметре задаётся URL для сохранения исходных кадров лиц или тел в LUNA PLATFORM 5.
В качестве URL можно указать либо адрес до бакета сервиса LUNA Image Store, либо адрес к ресурсу "/images" сервиса LUNA API. При указании адреса к ресурсу "/images", исходный кадр будет сохранен под идентификатором "image_id".
Для отправки кадра следует включить опцию send_source_frame.
Пример адреса до бакета сервиса LUNA Image Store:
"frame_store": "http://127.0.0.1:5020/1/buckets/<frames>/images"
Здесь:
127.0.0.1
— IP адрес, где развернут сервис LUNA Image Store;5020
— порт сервиса LUNA Image Store по умолчанию;1
— версия API сервиса LUNA Image Store;<frames>
— имя бакета сервиса LUNA Image Store, в котором нужно сохранить изображение лица или тела. Бакет должен быть создан пользователем предварительно.
Пример команды создания бакета с именем "source-images":
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=source-images
Пример адреса к ресурсу "/images" сервиса LUNA API:
"frame_store": "http://127.0.0.1:5000/6/images"
Здесь:
127.0.0.1
— IP адрес, где развернут сервис LUNA API;6
— версия API сервиса LUNA API;5000
— порт сервиса API по умолчанию.
См. дополнительную информацию о бакетах и ресурсе "/images" в руководстве администратора LUNA PLATFORM 5.
authorization#
В данной группе параметров задаются либо token, либо account_id для выполнения запросов к сервису LUNA API.
Параметр event_handler
> authorization
> account_id
должен совпадать с параметром account_id
, задаваемом в запросе. Если поле авторизации не заполнено, то будет использован идентификатор account_id
, задаваемый при создании потока (см. account_id).
См. подробную информацию об авторизации LUNA PLATFORM в руководстве администратора LUNA PLATFORM 5.
Настройки healthcheck#
Данная группа параметров используется только при работе с потоками ("tcp", "udp") и видеофайлами ("videofile").
В данной группе можно задать параметры повторного подключения к потоку при возникновении ошибок проигрывания потока.
max_error_count#
Максимальное количество ошибок при воспроизведении потока.
Параметр работает совместно с параметрами "period" и "retry_delay". После получения первой ошибки, выполняется ожидание, заданное в параметре "retry_delay", а затем выполняется повторная попытка подключения к потоку. Если за время, указанное в параметре "period", было накоплено количество ошибок большее или равное количеству, указанному в "max_error_count, то обработка потока будет прекращена и его статус изменится на "failure".
Ошибки могут быть вызваны проблемой с сетью или доступностью видео.
period#
Задаёт время в секундах, за которое ведётся подсчёт ошибок.
Параметр работает совместно с параметрами "retry_delay и "max_error_count. См. описание работы с данным параметром в разделе "max_error_count".
retry_delay#
Задаёт время в секундах, по истечении которого выполняется повторная попытка подключения к потоку.
Параметр работает совместно с параметрами "period и "max_error_count. См. описание работы с данным параметром в разделе "max_error_count".
timeout#
Задаёт таймаут в миллисекундах на чтение закодированного пакета.
Благодаря этому параметру можно обеспечить более гибкую обработку видеопотока, контролировать скорость чтения видеопакетов и предотвращать переполнение буфера данных.
Настройки Liveness#
Liveness не используется для типа "images".
Liveness используется только при работе с лицами.
Liveness используется для проверки наличия живого человека в кадре и предотвращает использование распечатанного фото или фото с телефона для прохождения проверки.
Настройки Liveness задаются в группе параметров "data" > "analytics" > "liveness".
Данную группу параметров рекомендуется использовать только по согласованию с сотрудниками VisionLabs.
Общие рекомендации по использованию Liveness#
Liveness предназначен для применения только на автоматических контрольно-пропускных пунктах. Это сценарий, когда человек не задерживается перед камерой дольше десяти секунд.
Liveness позволяет минимизировать шанс прохода мошенника, использующего распечатанное фотоизображение другого человека или фотоизображение другого человека на телефоне.
В процессе работы Liveness возвращает значение, которое определяет степень уверенности системы в том, что в кадре живой человек. Значение находится в интервале от 0 до 1.
Требования к установке камеры#
Для стабильной работы Liveness при установке камеры должны быть выполнены следующие условия:
-
Лицо не должно выходить за пределы кадра. При этом расстояние от левого и правого краёв кадра должно быть больше или равно ширине найденного лица, а расстояние от верхнего и нижнего краёв кадра должно быть больше или равно высоте найденного лица;
-
Кадр должен включать не только лицо, но и область груди;
-
Камера должна быть расположена на уровне пояса и направлена на человека снизу вверх;
-
Желательно, чтобы в кадр не попадали прямоугольные объекты (такие как оконные и дверные проёмы), обрамляющие область лица с четырёх сторон.
Пример правильного расположения камеры приведён на изображении ниже.
При правильном расположении камеры уже на расстоянии в 3-4 метра FS начнёт собирать кадры и выбирать лучший снимок.
Посторонние объекты и люди, не проходящие через турникет, не попадают в зону видимости камеры.
FS выполнит отправку лучшего снимка, когда человек находится на расстоянии 1 метр от камеры. На этом расстоянии лицо достигнет необходимого размера для отправки.
Ниже приведён пример неправильного расположения камеры.
При неправильно настроенной камере:
- Человек попадает в кадр слишком поздно. FS не успевает получить необходимое количество кадров для обработки;
- Человек смотрит в камеру сверху вниз. Это ухудшает качество кадра для последующей обработки;
- В зону видимости камеры попадает пространство за пределами зоны интереса. В этом пространстве могут находиться люди или объекты, мешающие корректной работе FS.
Рекомендации по настройке FS#
Рекомендуемые значения параметров секции "Liveness" приведены ниже.
"use_mask_liveness_filtration": true,
"use_flying_faces_liveness_filtration": true,
"liveness_mode": 1,
"number_of_liveness_checks": 10,
"liveness_threshold": 0.8,
"livenesses_weights": [0.0, 0.25, 0.75],
"mask_backgrounds_count": 300
Данные настройки не рекомендуется изменять.
Параметр "best_shot_min_size" следует устанавливать из расчета, что человек находится на расстоянии 3-4 метра до турникета.
Параметр "best_shot_proper_size" следует устанавливать из расчета, что человек находится на расстоянии 1 метр до турникета.
Для контроля выбора нужного человека используется параметр "droi". Прямоугольник выбирается так, чтобы люди, имеющие намерение подойти к данному турникету, попали в прямоугольник как можно раньше. Это актуально для турникетов, расположенных близко к друг другу. Люди из соседних очередей могут попадать в зону видимости камер таких турникетов.
FAQ Liveness#
При использовании Liveness обработка потока работает медленно
При разрешении камеры 1920х1080 и выше Mask Liveness работает медленно.
Для решения проблемы следует вручную уменьшить разрешение в камере до 720p. Это не скажется на качестве распознавания и работе Liveness, т.к. они работают без потери качества с лицами, размер которых примерно равен 100 пикселям.
Люди не могут пройти проверку Liveness при настройках FS по умолчанию
Возможные причины:
- Настройки в секции Liveness по умолчанию были изменены.
Не следует изменять настройки в секции Liveness, кроме настройки "liveness_threshold".
Значение параметра "liveness_threshold" можно уменьшить, но оно не должно быть ниже "0.6".
- Liveness применяется не для целевого случая.
FS Liveness не предназначен для процессов авторизации и случаев долгого нахождения перед камерой.
- В зону видимости камеры попадают недопустимые объекты.
Например, если на заднем фоне находится экран, транслирующий видео, Liveness работать не будет.
- Для камеры задано неподходящее разрешение.
Проверьте разрешение камеры. См. "При использовании Liveness обработка потока работает медленно".
- Происходит задержка передачи кадров.
Если камера не передаёт кадры в реальном времени, то кадры могут поступать с задержкой.
- Значение "best_shot_min_size" задано неправильно.
При завышенном параметре "best_shot_min_size" Liveness не успевает накопить нужное число разнообразных кадров.
Часто вместе с Liveness используется политика Главного Трека. См. диаграмму активности FaceStream при использовании Liveness и Primary Track Policy.
use_mask_liveness_filtration#
Параметр включает режим проверки наличия человека в кадре, основанный на работе с фоном.
Скорость выполнения проверки зависит от размера кадров потока. Если при включённом параметре скорость обработки уменьшается, необходимо уменьшить разрешение видео в настройках камеры (например, до 1280х720).
use_flying_faces_liveness_filtration#
Параметр включает режим проверки наличия человека в кадре, основанный на работе с окружением лица.
liveness_mode#
Параметр позволяет задать, для каких кадров трека будет проводиться проверка Liveness. Есть три варианта выбора кадров:
- 0 — Первые N кадров;
- 1 — Последние N кадров перед отправкой лучшего кадра (рекомендуемое значение);
- 2 — Все кадры трека.
Значение N задаётся в параметре number_of_liveness_checks.
number_of_liveness_checks#
Параметр позволяет задать количество кадров в треке для проверки Liveness при использовании параметра "liveness_mode".
Не рекомендуется выставлять значение меньше 10.
liveness_threshold#
В данном параметре можно задать пороговое значение, при котором система будет считать, что в кадре живой человек. Система выдаст вердикт, что в кадре присутствует настоящий человек, только если Liveness вернул значение выше заданного порогового значения.
Рекомендуемое значение - "0.8". Не рекомендуется задавать значение ниже "0.6".
livenesses_weights#
Параметр определяет коэффициент влияния проверки каждого типа (mask и flying_faces) на итоговую оценку наличия живого человека в кадре.
Пользователь указывает две величины, относящихся к разным типам liveness в следующем порядке:
- "use_mask_liveness_filtration"
- "use_flying_faces_liveness_filtration"
Величины указываются в долях единицы. В приведенном ниже примере 0.25 - 25% на "mask_liveness" и 0.75 - 75% на "flying_faces_liveness". Соотношение всегда масштабируется исходя из данных цифр вне зависимости от того составляют ли они единицу и какие из методов liveness включены.
"livenesses_weights": [0.25, 0.75]
mask_backgrounds_count#
Количество кадров фона, которые используются для соответствующей проверки.
Изменение данного параметра запрещено.
Настройки политики Главного трека#
Политика Главного трека используется только для работы с лицами.
Политика Главного трека не используется для типа "images".
Важно! В настоящий момент политика Главного трека не работает для совместного режима детектирования лиц и тел.
Политика Главного трека предназначена для работы с Системами Контроля Управления Доступом (СКУД, турникеты на входах в банки/ офисные здания) для упрощения контроля и внедрения технологии распознавания лиц при входе на охраняемую территорию.
Настройки политики Главного трека задаются в группе параметров "data" > "analytics" > "primary_track_policy".
Часто вместе с политикой Главного Трека используется Liveness. См. диаграмму активности FaceStream при использовании Liveness и Primary Track Policy.
use_primary_track_policy#
Если значение этого параметра "true", то включается режим реализации Главного Трека (Primary Track). Логика работы заключается в следующем:
Из всех детекций на кадре выбирается максимальная по размеру детекция и её трек становится главным. На основе этого трека выполняется дальнейший анализ. Лучший кадр из этого трека отправляется в LUNA PLATFORM.
Все остальные треки обрабатываются в обычном режиме, но отправка лучшего кадра в LUNA PLATFORM происходит только для главного трека.
Как только другое лицо достигнет большего размера, чем лицо главного трека, трек этого лица станет новым главным треком и обработка будет выполняться для него.
При использовании параметра на контрольно-пропускном пункте будут отправляться лучшие снимки только того человека, который находится ближе всего к турникету (выполняется условие возникновения самой большой детекции).
best_shot_min_size#
Параметр используется при включенном параметре "use_primary_track_policy".
Задаёт минимальную высоту детекции в пикселях, при котором начинается анализ кадров и определение лучшего кадра.
best_shot_proper_size#
Параметр используется при включенном параметре "use_primary_track_policy".
Задаёт высоту детекции в пикселях для Главного Трека. Когда размер детекции достигает указанного значения, FaceStream определяет лучшие снимки до окончания трека, а затем отправляет их в LP.
Настройки, задаваемые в сервисе LUNA Configurator#
В сервисе LUNA Configurator хранятся общие настройки для:
Для подробной информации о взаимодействии сервиса LUNA Configurator и FaceStream см. в разделе "Использование FaceStream с LUNA Configurator".
Настройки FaceStream#
Конфигурирование параметров FaceStream осуществляется с помощью редактирования параметров в секции "FACE_STREAM_CONFIG" в сервисе Configurator (см. раздел "Использование FaceStream с Configurator");
Также можно настроить FaceStream с помощью редактирования конфигурационного файла "fs3Config.conf" в режиме работы без сервиса Configurator (см. раздел "Использование FaceStream с конфигурационными файлами").
Далее приведены настройки, разбитые на логические блоки в зависимости от основных выполняемых блоком функций.
logging#
Секция с настройками логирования работы приложения. Она отвечает за вывод сообщений об ошибках или о текущем состоянии приложения.
severity#
Severity – параметр определяет информацию, которую пользователь хочет получать в логах. Доступны следующие фильтры информации:
0 – выводить всю информацию, 1 – выводить только предупреждения системы, 2 – выводить только ошибки.
tags#
Теги позволяют получить информацию о процессе обработки кадров и возникающих ошибках только для интересующих процессов FaceStream.
Данный параметр позволяет перечислить теги, которые связаны с логированием соответствующей информации. Если тег не указан, то соответствующая информация не логируется.
Информация по указанным тегам выводится в соответствии со значением параметра severity.
Текст логов содержит соответствующий тег. Его можно использовать для фильтрации логов.
Ошибки пишутся в лог всегда, для них не нужно задавать дополнительные теги.
Описание тегов
Тег | Описание |
---|---|
streams | Информация, связанная с работой сервиса LUNA Streams |
common | Общая информация |
ffmpeg | Информация о работе библиотеки FFMPEG |
liveness | Информация, связанная с проверкой наличия живого человека в кадре (секция «liveness): достаточно ли информации о проверке liveness и проходит ли кадр проверку liveness |
primary-track | Информация о главном треке (секция «primary_track_policy): прошёл ли кадр указанные пороги и какой трек является главным |
bestshot | Информация, связанная с выбором лучшего кадра: информация о появлении лучшего кадра, его смене, отправке лучшего кадра |
angles | Информация о фильтрации по углам наклона головы |
ags | Информация, связанная с оценкой качества кадров для дальнейшей обработки с помощью LUNA PLATFORM |
mouth-occlusion | Информация о перекрытии лица в кадре |
statistics | Информация о производительности, количестве обрабатываемых кадров в секунду и количестве пропущенных кадров |
http_api | Информация об API запросах, отправленных в FaceStream, и получаемых ответах |
client | Информация об отправке запросов в LUNA PLATFORM и полученных ответах |
json | Информация об обработке параметров из конфигурационных файлов и сервиса Configurator |
debug | Отладочная информация. Следует использовать данный тег только при отладке, а не при эксплуатации FS, т. к. выводится большое количество отладочной информации |
estimator | Информация о статистике выполненных оценок. |
Тег "estimator"
При включении тега "estimator" в логах FaceStream возвращается информация по размеру батчей, с которыми вызывались эстиматоры. Пример содержимого логов с включенным тегом "estimator":
[I0609 15:48:03.779697 65 EstimatorStatistic.cpp:85] [estimator] Batch statistic for estimator HeadPoseEstimator
Total calls: 1311 total time: 191 ms.
sz cnt
1 1311 (100.00%)
2 0 (0.00%)
3 0 (0.00%)
...
16 0 (0.00%)
В данном случае, статистика показывает следующее:
- всего было сделано 1311 вызова к эстиматору "HeadPoseEstimator", на которые ушло 191 миллисекунд;
- все вызовы (1311) были обработаны индивидуально, каждый в своем батче размером 1;
- батчи с размерами от 2 до 16 не были использованы.
Если эстиматоры не вызывались, то в логах FaceStream не будет выведено никакой информации.
mode#
Mode – параметр задаёт режим логирования приложения: файл или консоль. Существует три режима:
- "l2c" – выводить информацию только в консоль,
- "l2f" – выводить информацию только в файл,
- "l2b" – выводить информацию в оба места.
В режиме работы FaceStream с конфигурационными файлами можно настроить директорию для сохранения логов при выводе информации в файл с помощью параметра запуска --log-dir
.
sending#
Данный раздел описывает настройку отправки готовых портретов в виде HTTP-запросов из FaceStream во внешние сервисы.
request_type#
Данный параметр используется только для работы с лицами.
Данный параметр определяет тип запроса для отправки портретов во внешние сервисы. Поддерживаются 2 типа запросов:
- "jpeg" используется для отправки биометрических образцов в VisionLabs LUNA PLATFORM;
- "json" может использоваться для отправки портретов в сторонние пользовательские сервисы для дальнейшей обработки.
Подробное описание запросов см. в таблице.
Запросы
Формат | Тип запроса | Заголовки авторизации | Тело |
---|---|---|---|
JSON | PUT | Authorization: Basic, login/password(Base64) | Media type: application/json ; frame – исходный кадр в Base64 (если установлен параметр send_source_frame); data – портрет в Base64; identification – значение параметра Cid. Пример JSON: {frame":"","data":"image_in_base_64","identification":"camera_1"} |
JPEG | POST | Authorization: Basic, login/password(Base64) или X-Auth-Token: 11c59254-e83f-41a3-b0eb-28fae998f271(UUID4) | Media type: image/jpeg |
request_timeout_ms#
Данный параметр задает таймаут отправки и получения событий из/в LUNA PLATFORM в миллисекундах.
Значение по умолчанию — 30 секунд (30000 миллисекунд).
portrait_type#
Данный параметр используется только для работы с лицами.
Данный параметр определяет формат, в котором изображение детектированного лица отправляется во внешний сервис. Возможные значения:
- "warp" – использовать биометрический образец, трансформированный под определённые требования;
- "gost" – не использовать трансформацию, вырезать детекцию из исходного кадра с учетом отступов.
- "crop" – использовать область, расширенную и обрезанную вокруг обнаруженного объекта.
Формат warp
Характеристики биометрического образца:
- имеет размер 250х250 пикселей;
- лицо отцентрировано на изображении;
- лицо повернуто так, чтобы условная линия, соединяющая уголки глаз, была приближена к горизонтальной.
Такой формат изображения при использовании совместно с LUNA PLATFORM дает следующие преимущества:
- постоянный предсказуемый минимальный объем данных для передачи по сети;
- фазы детектирования лица в LUNA PLATFORM автоматически отключаются для таких изображений, что приводит к значительному снижению времени обработки запроса.
Формат crop
Crop-изображение это фрагмент изображения, полученный путём расширения и обрезки области вокруг обнаруженного объекта. Расширение области определяется новым параметром "crop_factor", увеличивающим размеры исходного прямоугольника, содержащего объект. Максимальный размер обрезанного изображения контролируется параметром новым параметром "max_crop_size", ограничивающим наибольшую сторону области. Если размер фрагмента превышает заданный параметр, то фрагмент будет масштабирован пропорционально по обеим координатам до нужного размера. Crop-изображение позволяет захватить больше контекста и детализации вокруг объекта по сравнению с биометрическим образцом.
Это позволяет более гибко управлять обработкой изображений. Отправка Crop-изображений имеет несколько ключевых преимуществ относительно других форматов:
- вместе с Crop-изображением передаются координаты лица как на Crop-изображении, так и на исходном изображении. Это позволяет избежать повторного запуска детектора лиц, обеспечивая наличие лица на изображении и экономя вычислительные ресурсы.
- Crop-изображение содержит больше контекста и деталей вокруг лица, что позволяет оценивать различные параметры, которые невозможно оценить на биометрическом образце. Например, эстимация Deepfake, Liveness и др., могут быть выполнены с большей точностью.
- сторонние сервисы и алгоритмы распознавания лиц часто работают лучше с Crop-изображениями, чем с биометрическими образцами. Это связано с тем, что Crop-изображения содержат больше информации и контекста, что улучшает точность распознавания и анализа.
crop_factor#
Коэффициент увеличения размеров исходного прямоугольника, содержащего объект.
Этот параметр определяет, насколько шире и выше будет область обрезки по сравнению с исходным размером. Например, при "crop_factor" равном 2.2 размеры области обрезки будут увеличены в 2.2 раза по сравнению с исходными размерами. Это позволяет захватить больше контекста вокруг обнаруженного объекта.
max_crop_size#
Максимальный размер обрезанного изображения.
Этот параметр ограничивает наибольшую сторону области обрезки, чтобы она не превышала заданное значение. Если обрезанное изображение превышает "max_crop_size", оно будет масштабировано до допустимого размера, сохраняя пропорции. Это гарантирует, что обрезанные изображения не будут слишком большими и остаются в пределах заданных размеров.
send_source_frame#
Данный параметр позволяет отправить исходный кадр, на котором было детектировано лицо или тело.
Исходный кадр можно сохранять как в бакет сервиса LUNA Image Store, так и в ресурс "/images" сервиса LUNA API. Способ сохранения исходного кадра задается с помощью указания соответствующего адреса в параметре "frame_store".
Для коллекции лучших снимков ("face_bestshots_to_send" или "body_bestshots_to_send" > 1) отправляется только один исходный кадр, который определяется FaceStream как лучший из всех лучших снимков. Например, если значение настройки "number_of_bestshots_to_send" = 3, то в LP будет отправлено три лучших снимка и только один исходный кадр, который будет автоматически выбран из трех лучших снимков.
Если предполагается сохранять исходный кадр в бакет сервиса LUNA Image Store, то кадр будет отправлен в LP за некоторое время до отправки лучшего снимка. Сначала он сохраняется в БД LUNA Events и ему назначается уникальный идентификатор, который хранится в поле "image_origin" таблицы "face_detect_result"/"body_detect_result". Далее в LP отправляется лучший снимок и генерируется событие, где в поле "image_origin" указывается ID исходного кадра, взятого из БД LUNA Events.
Пример из тела ответа события об успешном сохранении в бакет:
"events": [
detections": [
"image_origin": "/1/buckets/source-images/images/83c383d8-8af4-406c-8ff8-76eb389e61c8"
Если предполагается сохранять исходный кадр в ресурс "/images", то кадр будет отправлен вместе с лучшим снимком с помощью схемы "multipart/form-data" запроса на генерацию события LUNA PLATFORM.
Пример из тела ответа события об успешном сохранении в ресурс "/images" сервиса LUNA API:
"events": [
detections": [
"image_origin": "/6/images/19c5c40a-04e4-4f2b-811c-0f3bb0003359"
Если же в поле "image_origin" содержится адрес вида "/6/samples/faces/c93f39f1-809c-4583-b386-c166cecac333", то это значит, что речь идет об адресе сохранения лучшего снимка, а не исходного изображения.
size_source_frame#
Параметр изменяет ширину исходного кадра до заданного значения. Допустимый диапазон — [0...1024]. Значение "0" означает, что ширина не будет меняться. Дробная часть задаваемого числа игнорируется.
FaceStream отправляет в LUNA PLATFORM заголовок X-Luna-Meta-rescale
, который содержит коэффициент масштабирования исходного изображения в форме числа с плавающей запятой.
Коэффициент масштабирования позволяет вычислить реальные координаты отмасштабированного исходного изображения. Для этого необходимо разделить размер полученного изображения на полученный коэффициент масштабирования.
Примечание. Реальный размер рассчитывается с абсолютной погрешностью менее 1 / (2 * коэффициент масштабирования).
Например, полученное изображение имеет размер 200x113, а коэффициент масштабирования равен 0.104399, тогда реальный размер исходного изображения равен 1916x1082 (200/0.104399=1916, 113/0.104399=1082).
Коэффициент масштабирования можно найти в LUNA PLATFORM:
- в заголовке ответа на запрос "get image" к сервису LUNA API. Запрос должен быть выполнен с параметром запроса
with_meta = 1
- в файле "image_id.meta.json", расположенном рядом с исходным изображением в бакете исходных изображений хранилища LUNA Image Store
Заголовок X-Luna-Meta-rescale
отправляется только если включена отправка исходного кадра (параметр send_source_frame = 1
). В обработчике LUNA PLATFORM также должна быть включена политика сохранения исходного изображения.
Если для исходного кадра не выставлено масштабирование (параметр size_source_frame = 0
), то значение заголовка ответа X-Luna-Meta-rescale
будет равно 1.
detection_path_length#
Данный параметр используется только для работы с телами.
Данный параметр устанавливает максимальное количество детекций для параметра "minimal_body_track_length_to_send".
Максимальное количество детекций не может превышать 100. Если детекций больше 100, то алгоритм FaceStream удалит лишние детекции с некоторым шагом.
minimal_body_track_length_to_send#
Данный параметр используется только для работы с телами.
Данный параметр позволяет вместе с лучшими снимками отправлять заданное количество детекций с координатами тела человека — x, y, width и height (см. запрос "save event" в спецификации OpenAPI LUNA PLATFORM). По наборам детекций тела человека можно определить его путь.
Детекция, у которой есть лучший снимок обязательна к отправке.
Если количество детекций меньше заданного значения, то эти детекции не будут отправлены. Например, если количество детекций равно "3", а значение "minimal_body_track_length_to_send" равно "4", то детекции не будут отправлены и в логах FaceStream отобразится следующее сообщение:
Track is too short and will not be sent. Length 3 < 4
Если значение параметра равно "0", то количество детекций будет равно количеству лучших снимков.
async_requests#
Данный параметр позволяет указать, как следует выполнять запросы в LUNA PLATFORM – асинхронно или синхронно.
По умолчанию выставлен асинхронный режим, при котором все запросы в LUNA PLATFORM выполняются параллельно.
aggregate_attr_requests#
Данный параметр позволяет включать агрегацию лучших кадров для получения одного биометрического шаблона в LUNA PLATFORM.
Агрегация выполняется, если отправляется больше одного лучшего кадра. Количество кадров для отправки задаётся параметром "face_bestshots_to_send" или "body_bestshots_to_send".
Точность распознавания лиц и тел при использовании агрегированного биометрического шаблона выше.
jpeg_quality_level#
Качество JPEG для отправки исходных кадров:
- 'best' — сжатие изображения не выполняется
- 'good' — 75% исходного качества изображения
- 'normal' — 50% исходного качества изображения
- 'average' — 25% исходного качества изображения
- 'bad' — 10% исходного качества изображения
Качество 'best' выставлено по умолчанию.
Отправка изображений в высоком качестве может влиять на скорость обработки кадров.
lunastreams#
Данный раздел описывает настройку отправки готовых портретов в виде HTTP-запросов из FaceStream в сервис LUNA Streams.
См. подробную информацию о работе LUNA Streams с FaceStream в разделе "Взаимодействие FaceStream с LUNA Streams".
origin#
Адрес и порт сервера, где запущен сервис LUNA Streams.
api_version#
В параметре задаётся версия API сервиса LUNA Streams. На настоящий момент поддерживается 1 версия API.
Актуальную версию API всегда можно найти в документации сервиса API.
lunaplatform#
Данный раздел описывает настройки подключения к LUNA PLATFORM (сервису API) для выполнения анализа видео.
origin#
Адрес и порт сервера, где запущен сервис LUNA API.
api_version#
В параметре задаётся версия API сервиса LUNA API. На настоящий момент поддерживается 6 версия API.
max_number_streams#
В параметре задаётся верхняя граница количества потоков FS. Значение должно быть больше 0.
request_stream_period#
В параметре задаётся временной промежуток между запросами на получение новых потоков из LUNA Streams в диапазоне от 0.1 до 3600 секунд.
Значение по умолчанию — 1 секунда.
send_feedback_period#
В параметре задаётся временной промежуток между отправкой отчётов об обработанных потоках в LUNA Streams в диапазоне от 1.0 до 3600 секунд.
Значение по умолчанию — 5 секунд.
Значение данного параметра не должно превышать значение параметра "STREAM_STATUS_OBSOLETING_PERIOD", задаваемого в настройках сервиса LUNA Streams.
max_feedback_delay#
Параметр задаёт максимальную задержку отправки отчёта в диапазоне от 1.0 до 3600 секунд. Если отчёт не был отправлен за данное время, то FaceStream остановит обработку текущих потоков.
Значение данного параметра не должно быть меньше, чем значение параметра "send_feedback_period" и не должно превышать значение параметра "STREAM_STATUS_OBSOLETING_PERIOD", задаваемого в настройках сервиса LUNA Streams.
Значение по умолчанию — 10 секунд.
performance#
stream_images_buffer_max_size#
Параметр задаёт максимальный размер буфера изображений для одного потока.
При увеличении значения параметра повышается производительность FaceStream. Чем выше заданное значение, тем больше памяти требуется для работы.
Параметр рекомендуется выставить равным 40 при работе с GPU, если достаточно памяти GPU.
enable_gpu_processing#
Параметр позволяет включить использование GPU вместо CPU для вычислений.
Использование GPU позволяет ускорить вычисления, но при этом увеличивается потребление оперативной памяти.
Вычисления с использованием видеокарты поддерживаются только для детектора FaceDetV3. См. параметр "defaultDetectorType" в настройках FaceEngine ("faceengine.conf").
convert_full_frame#
Если данный параметр включён, то кадр сразу конвертируется в RGB изображение необходимого размера после декодирования. При этом получается изображение лучшего качества, но снижается скорость обработки кадров.
Если параметр выключен, то масштабирование изображения выполняется в зависимости от настроек TrackEngine (стандартное поведение для релизов 3.2.4 и более ранних).
Параметр аналогичен параметру frame_processing_mode, но задаётся сразу для всех экземпляров FaceStream.
fps_floor#
Параметр предназначен для управления количеством анализируемых кадров в видеопотоке, что позволяет уменьшить нагрузку на систему за счет пропуска некоторых кадров. Это может быть полезно, когда необходимо снизить требования к вычислительным ресурсам, сохраняя при этом приемлемую точность анализа.
Количество пропущенных кадров рассчитывается как разница между частотой кадров видео потока и значением "fps_floor". Пропущенные кадры распределяются равномерно в течение каждой секунды.
Если значение "fps_floor" равно нулю или отрицательное, FaceStream проигнорирует настройку, и количество обрабатываемых кадров останется неизменным.
Например, при значении "fps_floor" = 15 для видеопотока с частотой 25 fps FaceStream будет пропускать 10 кадров в секунду (25 - 15). Эти 10 кадров будут равномерно распределены по времени, чтобы сохранить целостность воспроизведения видео и избежать резких скачков.
monitoring#
В данной группе параметров задаются настройки мониторинга.
storage_type#
Данный параметр позволяет выбрать тип хранения данных для мониторинга. На данный момент можно использовать только базу данных Influx.
send_data#
Данный параметр включает отправку мониторинга. По умолчанию отключен.
organization#
Данный параметр задает рабочую область InfluxDB 2.x.
Рабочая область задается с помощью передачи соответствующего аргумента при старте контейнера InfluxDB.
bucket#
Данный параметр задает бакет InfluxDB 2.x.
Бакет задается с помощью передачи соответствующего аргумента при старте контейнера InfluxDB. Его можно также создать с помощью пользовательского интерфейса Influx.
token#
Параметр задаёт токен аутентификации InfluxDB 2.x.
Токен задается с помощью передачи соответствующего аргумента при старте контейнера InfluxDB.
origin#
Параметр задаёт IP-адрес и порт сервера с InfluxDB 2.x.
По умолчанию используется адрес "127.0.0.1". Такой адрес означает, что будет использоваться InfluxDB 2.x, расположенный на сервере с LUNA Configurator. Если InfluxDB 2.x находится на ином сервере, то в данном параметре нужно указать корректный IP-адрес InfluxDB 2.x.
"origin": "http://127.0.0.1:8086/"
flushing_period#
Параметр задаёт частоту отправки данных мониторинга в InfluxDB (в секундах).
По умолчанию используется 1 секунда.
Настройки TrackEngine#
Данный раздел описывает параметры TrackEngine, которые используются для настройки FaceStream.
Конфигурирование параметров TrackEngine осуществляется с помощью редактирования параметров в секции "TRACK_ENGINE_CONFIG" в сервисе Configurator (см. раздел "Использование FaceStream с Configurator").
Также можно настроить TrackEngine с помощью конфигурационного файла "trackengine.conf" в режиме работы без сервиса Configurator (см. раздел "Использование FaceStream с конфигурационными файлами").
use-face-detector и use-body-detector#
Данные параметры позволяют включать и отключать выполнение детекций лиц и тел. Можно включить одновременную детекцию.
См. раздел "Совместный режим детектирования лиц и тел" для более подробной информации.
Необходимо помнить, что для успешной смены детекции нужно задать соответствующие настройки FaceStream и настройки источников потоков.
<!-- use-face-detector: Flag to use or not face detection -->
<param name="use-face-detector" type="Value::Int1" x="1" />
<!-- use-body-detector: Flag to use or not body detection -->
<param name="use-body-detector" type="Value::Int1" x="0" />
detector-step#
Параметр "detector-step" позволяет указать количество кадров, на которых будет выполняться редетекция лица или тела в заданной области до выполнения детекции лица или тела. Редетекция требует меньше ресурсов, но объект может быть потерян при задании большого количества кадров для редетекции.
<!-- detector-step: The count of frames between frames with full detection, [0 .. 30] ('7' by default). -->
<param name="detector-step" type="Value::Int1" x="7" />
detector-scaling#
Параметр "detector-scaling" позволяет масштабировать кадр перед обработкой. Размер кадра для масштабирования задается в параметре "scale-result-size".
См. подробную информацию о масштабировании в разделе "Масштабирование кадра".
<!-- detector-scaling: Scale frame before detection for performance reasons, [0, 1] ('0' by default). -->
<param name="detector-scaling" type="Value::Int1" x="0" />
scale-result-size#
Параметр "scale-result-size" задаёт максимальный размер кадра после масштабирования по наибольшей из сторон кадра.
Для работы данного параметра необходимо включить параметр "detector-scaling".
Если исходный кадр имел размер 1920 на 1080 и значение "scale-result-size" равно 640, то FaceStream будет обрабатывать кадр размером 640 на 360. Для подбора оптимального значения "scale-result-size" следует постепенно уменьшать масштаб кадра и проверять, происходит ли на кадре детектирование лиц или тел. Следует выставить минимальный размер изображения, при котором все объекты в интересующей области детектируются.
Если кадр был обрезан с помощью параметра "roi", то масштабирование будет применено к этому уменьшенному кадру. В этом случае значение "scale-result-size" следует задавать в зависимости от наибольшей стороны области ROI.
На изображениях ниже приведены примеры детекций для кадра разрешением 1920x1080 и для того же кадра после его масштабирования до разрешения 960x640. Шесть лиц найдено на изображении с разрешением 1920x1080.
Три лица найдено после масштабирования изображения до разрешения 960x640. Лица на заднем плане меньше по размеру и имеют низкое качество.