Вебхуки
Вы можете настроить FindFace Multi для автоматической отправки уведомлений об определенных событиях, эпизодах, записях счетчиков на заданный URL-адрес. Для этого создайте и настройте вебхук. При возникновении нужного события/эпизода/записи счетчика FindFace Multi отправит HTTP-запрос на URL-адрес, указанный в настройках вебхука.
Вебхуки можно использовать для решения разнообразных задач, например, для уведомления пользователя об определенном событии, вызова определенных действий на целевом веб-сайте, при решении задач безопасности, таких как удаленное автоматическое управление доступом и др.
В этом разделе:
Настройка вебхука
Важно
Пользователь должен иметь соответствующие права доступа для создания, просмотра, изменения или удаления вебхука. Чтобы настроить права доступа, перейдите в Настройки → Роли.
Примечание
Перед использованием вебхуков убедитесь, что хотя бы один из следующих параметров задан в файле /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
: SERVICE_EXTERNAL_ADDRESS
или EXTERNAL_ADDRESS
.
Для создания вебхука выполните следующие действия:
Перейдите на вкладку Настройки. Выберите Вебхуки.
Нажмите + Новый Вебхук.
Введите заголовок вебхука.
Укажите адрес, на который будут отправляться оповещения.
Примечание
Если вы настраиваете вебхук для отправки оповещений о событиях в Тревожный монитор и Журнал тревог, укажите в URL адрес, на который будут отправляться оповещения. В адресе
http://ip_address:port/ff_multi/alarmer/
укажите название и порт сервисаbackend_provider
. Таким образом, URL будет выглядеть следующим образом:http://backend_provider:1111/ff_multi/alarmer/
.Однако мы рекомендуем использовать функцию Менеджер тревог, с помощью которой вы можете гибко задать необходимые правила для получения тревог и установить каналы доставки оповещений в зависимости от решаемых задач.
Вы можете отправлять уведомления в пакетном режиме. Укажите максимальное количество уведомлений в пакете. Фактическое количество может быть меньшим.
Укажите максимальное количество попыток отправить уведомление. Интервал между попытками увеличивается экспоненциально с максимумом 100 секунд.
Важно
Для того чтобы получить все сообщения с момента потери соединения, если оно имеет место, установите значение
0
. Установите1
, чтобы пропустить старые сообщения.FindFace Multi будет автоматически отправлять оповещения о событиях, эпизодах, записях счетчика, удовлетворяющих заданным фильтрам. Фильтровать события можно по следующим параметрам.
Существует два способа настройки фильтров:
визуально
с помощью кода
Чтобы настроить фильтры визуально, нажмите Настроить.
Универсальные фильтры для событий распознавания (лицо, силуэт, транспортное средство):
Совпадения: фильтровать только события с совпадением объектов/без совпадения объектов или все события.
Списки наблюдения: фильтровать только события по определенному списку наблюдения или все события.
Группы камер: фильтровать только события по определенной группе камер.
Камеры: фильтровать события по определенной камере.
ID камер: отображать только события по камере с определенным ID.
Название карточки: фильтровать события с заданным названием карточки.
Лучший кадр события: фильтровать все события трека, только события с кадрами в реальном времени, только одно событие с лучшим кадром по окончании трека.
Линия: фильтровать события с пересечением определенной линии.
Направление пересечения линии: фильтровать события с пересечением линий в заданном направлении или все события.
Есть обратное пересечение: фильтровать события с обратным пересечением/без обратного пересечения или все события.
Фильтры для событий распознавания лиц:
Возраст: фильтровать события с людьми определенного возраста.
Пол: отобразить события с людьми заданного пола.
Эмоции: фильтровать события по выражению эмоций на лице человека.
Борода: фильтровать события по наличию у человека бороды.
Состояние глаз: отобразить события с людьми, у которых глаза открыты/закрыты или не видны.
Очки: фильтровать события по наличию очков на лице.
Медицинская маска: фильтровать события по наличию медицинской маски на лице.
Поворот: фильтровать события по углу поворота головы.
Наклон: фильтровать события по углу наклона головы.
Витальность: фильтровать события по витальности (liveness) лица.
Фильтры для событий распознавания силуэтов:
Возраст по силуэту: отобразить события с людьми определенного возраста.
Пол по силуэту: отобразить события с людьми заданного пола.
Тип верха одежды: отображать события, в которых человек носит одежду верха заданного типа: куртка, пальто, жилет, толстовка, футболка, рубашка, платье.
Верх одежды: отображать события, в которых человек носит одежду верха заданной обобщенной категории: с длинными рукавами, с короткими рукавами, без рукавов.
Цвет верха одежды: отображать события с людьми, одетыми в одежду заданного цвета (верх).
Низ одежды: отображать события, в которых человек носит одежду низа заданного типа: брюки, юбка, шорты, неопределенный.
Цвет низа одежды: отображать только события с людьми, одетыми в одежду заданного цвета (низ).
Головной убор: отображать события с людьми в головном уборе заданного типа: шапка/шляпа/кепка, капюшон/платок, без головного убора.
Сумка в руке: отображать события с людьми с сумкой в руке/без сумки в руке.
Сумка на спине: отображать события с людьми с сумкой на спине/без сумки на спине.
Жилет: отображать события с людьми, одетыми в жилет заданного цвета.
Каска: отображать события с людьми, одетыми в каску заданного цвета.
Падение: отображать события, в которых человек падает (или упал) / падение отсутствует.
Курение: отображать события, в которых человек курит или курение отсутствует.
Использование телефона: отображать события, в которых человек использует/не использует телефон.
Разговор по телефону: отображать события, в которых человек звонит/разговаривает по телефону или нет.
Фотографирование: отображать события, в которых человек фотографирует телефоном экран или документы или не делает этого.
Фильтры для событий распознавания транспортных средств:
Регистрационный номер: найти транспортное средство с заданным номером.
Страна: отобразить события с транспортными средствами, зарегистрированными в заданной стране.
Марка: фильтровать события по марке транспортного средства.
Модель: фильтровать события по модели транспортного средства.
Цвет кузова: отобразить события с транспортными средствами заданного цвета кузова.
Тип кузова: отобразить события с транспортными средствами заданного типа кузова: внедорожник, седан, кроссовер, кабриолет, купе, универсал, пикап, микроавтобус, минивэн, лимузин.
Категория ТС: отобразить только события с транспортными средствами, принадлежащими заданной категории: категория ТС не распознана, мотоцикл, скутер, квадроцикл, легковой автомобиль, легковой автомобиль с прицепом, грузовик, грузовик с прицепом, автобус, сочленённый автобус, ТС других категорий.
Вес и размер ТС: отобразить события с транспортными средствами заданного веса и размера кузова.
Спецтранспорт: отобразить только события с транспортными средствами, принадлежащими заданному типу: такси (включая грузотакси), маршрутный транспорт, каршеринг, скорая помощь (включая реанимобиль), полиция (включая ДПС), автомобили МЧС и пожарные машины, газоспасательные и аварийно-спасательные службы, военная техника (включая Росгвардию), коммунальная, строительная техника (включая ЦОДД), инкассация, остальной спецтранспорт, не спецтранспорт.
Ракурс ТС: отобразить события с транспортными средствами заданного ракурса: ракурс ТС неизвестен, вид спереди, вид сзади, вид сбоку.
Примечание
Цвет номера, Регион отключены по умолчанию. Чтобы включить эти параметры раскомментируйте
"license_plate_number_color"
,"license_plate_region"
в секцииcars
→features
в конфигурационном файле/opt/findface-multi/configs/findface-multi-legacy/ui-config.yaml
.sudo vi /opt/findface-multi/configs/findface-multi-legacy/ui-config.yaml
... cars: features: ... license_plate_number_color: name: license_plate_number_color extractor: license_plate classes: - unknown - white - yellow - blue - green - grey index: 6 license_plate_region: name: license_plate_region extractor: license_plate classes: - unknown - DXB - SHJ - ADH - AJM - UAK - RAK - FUJ - TH-10 - TH-11 - TH-12 - TH-13 - TH-14 ... - TH-93 - TH-94 - TH-95 - TH-96 index: 7
После внесения изменений перезапустите контейнеры FindFace Multi.
cd /opt/findface-multi/ sudo docker-compose restart
Эпизоды с людьми:
Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).
Совпадения: лица: отобразить только эпизоды с совпадением лиц/без совпадения лиц/все эпизоды.
Совпадения: силуэты: отобразить только эпизоды с совпадением силуэтов/без совпадения силуэтов/все эпизоды.
Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.
Группы камер: отобразить только эпизоды по определенной группе камер.
Камеры: отобразить только эпизоды по определенной камере.
ID камер: отобразить только эпизоды по камере с определенным ID.
Название карточки: отобразить эпизоды с заданным названием карточки.
Количество событий: отобразить эпизоды с заданным количеством событий.
Эпизоды с транспортными средствами:
Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).
Совпадения: отобразить только эпизоды с совпадением транспортных средств/без совпадения транспортных средств/все эпизоды.
Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.
Группы камер: отобразить только эпизоды по определенной группе камер.
Камеры: отобразить только эпизоды по определенной камере.
ID камер: отобразить только эпизоды по камере с определенным ID.
Название карточки: отобразить эпизоды с заданным названием карточки.
ID эпизода: отобразить эпизод с определенным ID.
Количество событий: отобразить эпизоды с заданным количеством событий.
Записи счетчиков:
Группы камер: отобразить записи счетчика по определенной группе камер.
Камеры: отобразить записи счетчика по определенной камере.
Количество лиц: фильтровать записи счетчика по количеству лиц.
Количество силуэтов: фильтровать записи счетчика по количеству силуэтов.
Количество транспортных средств: фильтровать записи счетчика по количеству транспортных средств.
ID счётчика: фильтровать записи счетчика с определенным ID.
Для некоторых фильтров дополнительно можно указать порог срабатывания.
Примечание
Некоторые параметры доступны только в режиме кода и не представлены в визуальных фильтрах. Чтобы правильно настроить эти параметры с помощью кода, прочтите их описания.
Чтобы настроить фильтры с помощью кода, переключитесь в режим Код. Используйте следующие описания:
Универсальные фильтры для событий распознавания (лицо, силуэт, транспортное средство):
Секции:
face_events
,body_events
,car_events
."matched_lists"
: ID списка наблюдения, [integer]."camera_groups"
: ID группы камер, [integer]."cameras"
: ID камеры, [integer]."matched_card_in"
: ID совпавшей карточки, [integer]."matched"
: результат сопоставления с картотекой, boolean. Установитеtrue
илиfalse
, если отправку оповещения должны вызывать только события с совпадениями или только события без совпадений."confidence_gte"
: минимальное значение уверенности алгоритма, number. Минимальное значение –0
, максимальное –1
."bs_type"
: режим отслеживания объектов на видео, [string]. Возможные значения:"overall"
,"realtime"
."line"
: ID пересечения линии, [integer]."line_crossing_direction"
: направление пересечения линии, [enum]. Возможные значения:"none"
,"AB"
,"BA"
."backward_line_crossing"
: установитеtrue
илиfalse
, если событие имеет или не имеет обратное пересечение, boolean.
Фильтры для событий распознавания лиц:
Секция:
face_events
."headpose_yaw_angle_gte"
: минимальный поворот головы, integer (градусы). Если голова полностью повернута влево, угол равен-180
. Если полностью повернута вправо, то180
. Нейтральное положение головы соответствует0
."headpose_yaw_angle_lte"
: максимальный поворот головы, integer (градусы). Если голова полностью повернута влево, угол равен-180
. Если полностью повернута вправо, то180
. Нейтральное положение головы соответствует0
."headpose_pitch_angle_gte"
: минимальный наклон головы, integer (градусы). Если голова наклонена вперед, а подбородок касается груди, угол равен-180
. Если голова наклонена назад и обращена к небу, то180
. Нейтральное положение головы соответствует0
."headpose_pitch_angle_lte"
: максимальный наклон головы, integer (градусы). Если голова наклонена вперед, а подбородок касается груди, угол равен-180
. Если голова наклонена назад и обращена к небу, то180
. Нейтральное положение головы соответствует0
."gender"
: пол, [string]. Возможные значения:"male"
,"female"
."age_lte"
: максимальный возраст, integer."age_gte"
: минимальный возраст, integer."glasses"
: очки, [string]. Возможные значения:"none"
,"eye"
(очки),"sun"
(солнцезащитные очки),"other"
(например, карнавальные очки, спортивные очки и т.д.)."emotions"
: эмоции, [string]. Возможные значения:"angry"
,"disgust"
,"fear"
,"happy"
,"sad"
,"surprise"
,"neutral"
."beard"
: борода, [string]. Возможные значения:"none"
,"beard"
."medmask"
: медицинская маска, [string]. Возможные значения:"none"
,"correct"
,"incorrect"
."liveness"
: оценка витальности liveness, [string]. Возможные значения:"real"
,"fake"
."temperature_gte"
: минимальная температура, number."liveness_gte"
: минимальное значение уверенности алгоритма в том, что лицо витально, number. Минимальное значение –0
, максимальное –1
."eyes_attrs"
: состояние глаз, [string]. Возможные значения:"opened"
,"closed"
,"occluded"
."eyes_attrs_score_gte"
: минимальное значение уверенности алгоритма в том, что глаза открыты, закрыты, перекрыты, number. Минимальное значение –0
, максимальное –1
."eyes_attrs_score_lte"
: максимальное значение уверенности алгоритма в том, что глаза открыты, закрыты, перекрыты, number. Минимальное значение –0
, максимальное –1
.
Фильтры для событий распознавания силуэтов:
Секция:
body_events
."headwear"
: тип головного убора (шапка/кепка, капюшон/платок, без убора), [string]. Возможные значения:"hat"
,"hood"
,"none"
."upper_clothes"
: обобщенная категория одежды верхней части тела (с длинными рукавами, с короткими рукавами, без рукавов), [string]. Возможные значения:"long_sleeves"
,"short_sleeves"
,"without_sleeves"
."detailed_upper_clothes"
: детализированный тип одежды верхней части тела (куртка, пальто, жилет без рукавов, толстовка, футболка, рубашка, платье), [string]. Возможные значения:"jacket"
,"coat"
,"sleeveless"
,"sweatshirt"
,"t-shirt"
,"shirt"
,"dress"
."top_color"
: цвет одежды верхней части тела, [string]. Возможные значения:"white"
,"black"
,"grey"
,"brown"
,"red"
,"orange"
,"yellow"
,"green"
,"lightblue"
,"blue"
,"purple"
,"pink"
,"beige"
,"violet"
."lower_clothes"
: тип одежды нижней части тела (брюки, юбка, шорты, неопределенный), [string]. Возможные значения:"pants"
,"obscured"
,"skirt"
,"shorts"
."bottom_color"
: цвет одежды нижней части тела, [string]. Возможные значения:"white"
,"black"
,"grey"
,"brown"
,"red"
,"orange"
,"yellow"
,"green"
,"lightblue"
,"blue"
,"purple"
,"pink"
,"beige"
,"violet"
."bag_hand_score_gte"
: минимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение –0
, максимальное –1
."bag_hand_score_lte"
: максимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение –0
, максимальное –1
."bag_hand"
: наличие сумки в руках, [string]. Возможные значения:"hand"
,"none"
."bag_back_score_gte"
: минимальное значение уверенности алгоритма в том, что человек носит сумку на спине, number. Минимальное значение –0
, максимальное –1
."bag_back_score_lte"`
: максимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение –0
, максимальное –1
."bag_back"
: наличие сумки на спине, [string]. Возможные значения:"back"
,"none"
."vest_type_score_gte"
: минимальная достоверность распознавания наличия жилета, number. Минимальное значение –0
, максимальное –1
."vest_type_score_lte"
: максимальная достоверность распознавания наличия жилета, number. Минимальное значение –0
, максимальное –1
."vest_type"
: наличие средства индивидуальной защиты в виде жилета, [string]. Возможные значения:"green/yellow"
,"orange"
,"not_visible"
,"none"
."helmet_type_score_lte"
: максимальная достоверность распознавания наличия шлема, number. Минимальное значение –0
, максимальное –1
."helmet_type_score_gte"
: минимальная достоверность распознавания наличия шлема, number. Минимальное значение –0
, максимальное –1
."helmet_type"
: наличие средства индивидуальной защиты в виде шлема, [string]. Возможные значения:"red/orange"
,"white"
,"other"
,"not_visible"
,"none"
."age_group_score_lte"
: максимальная достоверность распознавания возрастной группы, number. Минимальное значение –0
, максимальное –1
."age_group_score_gte"
: минимальная достоверность распознавания возрастной группы, number. Минимальное значение –0
, максимальное –1
."age_group"
: возраст по группе, [string]. Возможные значения:"0-16"
,"17-35"
,"36-50"
,"50+"
."gender_score_lte"
: максимальная достоверность распознавания пола, number. Минимальное значение –0
, максимальное –1
."gender_score_gte"
: минимальная достоверность распознавания пола, number. Минимальное значение –0
, максимальное –1
."body_gender"
: пол, [string]. Возможные значения:"male"
,"female"
."fall"
: падение человека (падает (или упал) / падение отсутствует), [string]. Возможные значения:"fall"
,"none"
."fall_score_lte"
: максимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number. Минимальное значение –0
, максимальное –1
."fall_score_gte"
: минимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number. Минимальное значение –0
, максимальное –1
."handface_smoking"
: курение, [string]. Возможные значения:"smoking"
,"none"
."handface_smoking_score_lte"
: максимальное значение уверенности алгоритма в том, что человек курит, number. Минимальное значение –0
, максимальное –1
."handface_smoking_score_gte"
: минимальное значение уверенности алгоритма в том, что человек курит, number. Минимальное значение –0
, максимальное –1
."handface_phone_use"
: использование телефона, [string]. Возможные значения:"phone_use"
,"none"
."handface_phone_use_score_lte"
: максимальное значение уверенности алгоритма в том, что человек использует телефон, number. Минимальное значение –0
, максимальное –1
."handface_phone_use_score_gte"
: минимальное значение уверенности алгоритма в том, что человек использует телефон, number. Минимальное значение –0
, максимальное –1
."handface_phone_call"
: звонок/разговор по телефону, [string]. Возможные значения:"phone_call"
,"none"
."fall_score_lte"
: максимальное значение уверенности алгоритма в том, что человек звонит/разговаривает по телефону, number. Минимальное значение –0
, максимальное –1
."handface_phone_call_score_gte"
: минимальное значение уверенности алгоритма в том, что человек звонит/разговаривает по телефону, number. Минимальное значение –0
, максимальное –1
."handface_taking_pictures"
: фотографирование экрана или документов телефоном, [string]. Возможные значения:"photo"
,"none"
."handface_taking_pictures_score_lte"
: максимальное значение уверенности алгоритма в том, что человек фотографирует экран или документы своим телефоном или не фотографирует, number. Минимальное значение –0
, максимальное –1
."handface_taking_pictures_score_gte"
: минимальное значение уверенности алгоритма в том, что человек фотографирует экран или документы своим телефоном или не фотографирует, number. Минимальное значение –0
, максимальное –1
.
Фильтры для событий распознавания транспортных средств:
Секция:
car_events
."category_confidence_gte"
: минимальная достоверность распознавания категории транспортного средства, number. Минимальное значение –0
, максимальное –1
."category_confidence_lte"
: максимальная достоверность распознавания категории транспортного средства, number. Минимальное значение –0
, максимальное –1
."category_type"
: категория транспортного средства, [string]. Возможные значения:"unknown"
,"A"
,"B"
,"BE"
,"C"
,"CE"
,"D"
,"DE"
,"other"
."color"
цвет кузова, [string]. Возможные значения:"beige"
,"black"
,"blue"
,"brown"
,"cyan"
,"gold"
,"green"
,"grey"
,"orange"
,"pink"
,"purple"
,"red"
,"silver"
,"violet"
,"white"
,"yellow"
."body"
: тип кузова транспортного средства, [string]. Возможные значения:"suv"
,"sedan"
,"crossover"
,"convertible"
,"coupe"
,"wagon"
,"cab"
(пикап),"minibus"
,"minivan"
,"limousine"
. Смотрите описание фильтров для событий распознавания транспортных средств, настроенных визуально."make"
: марка транспортного средства, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие производители поддерживаются в текущей версии."model"
: модель транспортного средства, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие модели поддерживаются в текущей версии."license_plate_number"
: регистрационный номер транспортного средства, [string]. Подстановочные знаки (wildcards), заменяющие другие символы, не поддерживаются."license_plate_number_color"
: цвет номерного знака, [string]. Возможные значения:"unknown"
,"white"
,"yellow"
,"blue"
,"green"
,"grey"
."license_plate_number_color_confidence_lte"
: максимальная достоверность распознавания цвета номерного знака, number."license_plate_number_color_confidence_gte"
: минимальная достоверность распознавания цвета номерного знака, number."license_plate_country"
: страна номерного знака, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие страны поддерживаются в текущей версии. Возможные значения:"unknown"
,"AM"
,"BR"
,"BY"
,"GE"
,"IN"
,"KG"
,"SA"
,"KZ"
,"RU"
,"UA"
,"AE"
,"UZ"
,"VN"
,"AZ"
,"EST"
,"FIN"
,"LT"
,"LV"
,"MD"
,"MX"
,"AR"
,"PK"
,"SRB"
,"TJ"
,"TH"
,"TM"
,"CZ"
,"CN"
,"EG"
,"JP"
,"MN"
,"MA"
,"PS"
,"SG"
,"KR"
,"BH"
,"CO"
,"PE"
,"QA"
,"TN"
,"TR"
,"IR"
,"IQ"
,"JO"
,"KW"
,"OM"
,"ZA"
."license_plate_region"
: регион номерного знака, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие регионы поддерживаются в текущей версии."special_vehicle_type"
: спецназначение транспортного средства, [string]. Возможные значения:"taxi"
,"route_transport"
,"car_sharing"
,"ambulance"
,"police"
,"rescue_service"
,"gas_service"
,"military"
,"road_service"
,"cash_in_transit"
,"other_special"
,"not_special"
."weight_type"
: весовая категория транспортного средства, [string]. Возможные значения:"B_light"
,"B_heavy"
,"C_light"
,"C_heavy"
,"D_light"
,"D_long"
,"other"
."weight_type_confidence_lte"
: максимальная достоверность распознавания весовой категории транспортного средства, number. Минимальное значение –0
, максимальное –1
."weight_type_confidence_gte"
: минимальная достоверность распознавания весовой категории транспортного средства, number. Минимальное значение –0
, максимальное –1
."orientation"
: ракурс транспортного средства, [string]. Возможные значения:"unknown"
,"front"
,"back"
,"side"
."orientation_confidence_lte"
: максимальная достоверность распознавания ракурса автомобиля, number. Минимальное значение –0
, максимальное –1
."orientation_confidence_gte"
: минимальная достоверность распознавания ракурса автомобиля, number. Минимальное значение –0
, максимальное –1
.
Эпизоды с людьми:
Секция:
human_episodes
."allowed_types"
: статус эпизода [string]. Возможные значения: открытие эпизода (episode_open
), добавление нового события в эпизод (episode_event
), закрытие эпизода (episode_close
)."matched_lists"
: ID списка наблюдения, [integer]."cameras"
: ID камеры, [integer]."camera_groups"
: ID группы камер, [integer]."matched_card_in"
: ID совпавшей карточки, [integer]."events_count_gte"
: минимальное количество событий в эпизоде, integer."events_count_lte"
: максимальное количество событий в эпизоде, integer."face_matched"
: статус совпадения лица в эпизоде с картотекой, boolean. Установитеtrue
, если только эпизоды с совпадениями лиц, илиfalse
, если только эпизоды без совпадений лиц должны вызывать отправку оповещения."body_matched"
: статус совпадения силуэта в эпизоде с картотекой, boolean. Установитеtrue
, если только эпизоды с совпадениями силуэтов, илиfalse
, если только эпизоды без совпадений силуэтов должны вызывать отправку оповещения.
Эпизоды с транспортными средствами:
Секция:
car_episodes
."allowed_types"
: статус эпизода [string]. Возможные значения: открытие эпизода (episode_open
), добавление нового события в эпизод (episode_event
), закрытие эпизода (episode_close
)."matched_lists"
: ID списка наблюдения, [integer]."cameras"
: ID камеры, number."camera_groups"
: ID группы камер, [integer]."matched_card_in"
: ID совпавшей карточки, [integer]."events_count_gte"
: минимальное количество событий в эпизоде, integer."events_count_lte"
: максимальное количество событий в эпизоде, integer."car_matched"
: статус совпадения транспортного средства в эпизоде с картотекой, boolean. Установитеtrue
, если только эпизоды с совпадениями ТС, илиfalse
, если только эпизоды без совпадений ТС должны вызывать отправку оповещения.
Записи счетчиков:
Секция:
counters
."counter"
: ID счетчика, [integer]."cameras"
: ID камеры, [integer]."camera_groups"
: ID группы камер, [integer]."faces_count_gte"
: минимальное количество лиц в записи счетчика, integer."faces_count_lte"
: максимальное количество лиц в записи счетчика, integer."silhouettes_count_gte"
: минимальное количество силуэтов в записи счетчика, integer."silhouettes_count_lte"
: максимальное количество силуэтов в записи счетчика, integer."cars_count_gte"
: минимальное количество транспортных средств в записи счетчика, integer."cars_count_lte"
: максимальное количество транспортных средств в записи счетчика, integer.
Пример
Примечание
Этот пример приведен только для ознакомления, подставьте свои значения в соответствующие поля.
{ "face_events": { "eyes_attrs_score_gte": 0.46, "headpose_yaw_angle_gte": -90, "headpose_yaw_angle_lte": 90, "headpose_pitch_angle_gte": -90, "headpose_pitch_angle_lte": 90, "liveness_score_gte": 0.92, "matched": true, "matched_lists": [ 1, 2 ], "camera_groups": [ 1, 2, -1 ], "cameras": [ 2, 8, 9 ], "matched_card_in": [ 2, 1 ], "bs_type": [ "overall", "realtime" ], "line": [ 1 ], "line_crossing_direction": [ "none", "BA", "AB" ], "backward_line_crossing": true, "age_gte": 30, "age_lte": 43, "gender": [ "male", "female" ], "emotions": [ "angry", "disgust", "fear", "happy", "sad", "surprise", "neutral" ], "beard": [ "none", "beard" ], "eyes_attrs": [ "opened", "closed", "occluded" ], "glasses": [ "eye", "sun", "other", "none" ], "medmask": [ "none", "incorrect", "correct" ], "liveness": [ "real" ] }, "body_events": { "age_group_score_gte": 0.94, "body_gender_score_gte": 0.9, "bag_hand_score_gte": 0.92, "bag_back_score_gte": 0.92, "vest_type_score_gte": 0.92, "helmet_type_score_gte": 0.92, "fall_score_gte": 0.92, "handface_smoking_score_gte": 0.92, "handface_phone_use_score_gte": 0.9, "handface_phone_call_score_gte": 0.94, "handface_taking_pictures_score_gte": 0.92, "matched": true, "matched_lists": [ 1, 2, 3 ], "camera_groups": [ -1, 2, 1 ], "cameras": [ 8, 9, 2 ], "matched_card_in": [ 1, 2 ], "bs_type": [ "overall", "realtime" ], "line": [ 1 ], "line_crossing_direction": [ "none", "BA", "AB" ], "backward_line_crossing": true, "age_group": [ "0-16", "17-35", "36-50", "50+" ], "body_gender": [ "male", "female" ], "detailed_upper_clothes": [ "jacket", "coat", "sleeveless", "sweatshirt", "t-shirt", "shirt", "dress" ], "upper_clothes": [ "long_sleeves", "short_sleeves", "without_sleeves" ], "top_color": [ "white", "black", "grey", "brown", "red", "orange", "yellow", "green", "lightblue", "blue", "purple", "pink", "beige", "violet" ], "lower_clothes": [ "pants", "obscured", "skirt", "shorts" ], "bottom_color": [ "white", "black", "grey", "brown", "red", "orange", "yellow", "green", "lightblue", "blue", "purple", "beige", "pink", "violet" ], "headwear": [ "hat", "hood", "none" ], "bag_hand": [ "hand" ], "bag_back": [ "back" ], "vest_type": [ "green/yellow", "orange", "not_visible", "none" ], "helmet_type": [ "red/orange", "white", "other", "not_visible", "none" ], "fall": [ "fall" ], "handface_smoking": [ "smoking" ], "handface_phone_use": [ "phone_use" ], "handface_phone_call": [ "phone_call" ], "handface_taking_pictures": [ "photo" ] }, "car_events": { "confidence_gte": 0.94, "category_type_score_gte": 0.32, "weight_type_score_gte": 0.12, "matched": true, "matched_lists": [ 3, 2, -1, 1 ], "camera_groups": [ -1, 2, 1 ], "cameras": [ 2, 8, 9 ], "bs_type": [ "overall", "realtime" ], "line": [ 1 ], "line_crossing_direction": [ "none", "AB", "BA" ], "backward_line_crossing": true, "license_plate_country": [ "unknown", "AM", "BR", "BY", "GE", "IN", "KG", "SA", "KZ", "RU", "UA", "AE", "UZ", "VN", "AZ", "EST", "FIN", "LT", "LV", "MD", "MX", "AR", "PK", "SRB", "TJ", "TH", "TM", "CZ", "CN", "EG", "JP", "MN", "MA", "PS", "SG", "KR", "BH", "CO", "PE", "QA", "TN", "TR", "IR", "IQ", "JO", "KW", "OM", "ZA" ], "make": [ "ford" ], "model": [ "ford/edge" ], "color": [ "beige", "black", "blue", "brown", "cyan", "gold", "green", "grey", "orange", "pink", "purple", "red", "silver", "violet", "white", "yellow" ], "body": [ "suv", "sedan", "crossover", "convertible", "coupe", "wagon", "cab", "minibus", "minivan", "limousine" ], "category_type": [ "unknown", "A", "B", "BE", "C", "CE", "D", "DE", "other" ], "weight_type": [ "B_light", "B_heavy", "C_light", "C_heavy", "D_long", "D_light", "other" ], "special_vehicle_type": [ "taxi", "route_transport", "car_sharing", "ambulance", "police", "rescue_service", "gas_service", "military", "road_service", "cash_in_transit", "other_special", "not_special" ], "orientation": [ "front", "back", "side" ] }, "human_episodes": { "allowed_types": [ "episode_open", "episode_event", "episode_close" ], "face_matched": true, "body_matched": true, "matched_lists": [ 3, 2, -1, 1 ], "camera_groups": [ 1, 2, -1 ], "cameras": [ 4, 5, 6, 7 ], "matched_card_in": [ 1, 2 ] }, "car_episodes": { "allowed_types": [ "episode_open", "episode_event", "episode_close" ], "car_matched": false, "matched_lists": [ 3, 2, -1, 1 ], "camera_groups": [ -1, 2, 1 ], "cameras": [ 13, 12, 11, 10 ], "events_count_gte": "2" }, "counters": { "faces_count_gte": 2, "faces_count_lte": 3, "silhouettes_count_gte": 3, "silhouettes_count_lte": 4, "cars_count_gte": 5, "cars_count_lte": 6, "camera_groups": [ 2, 1, -1 ], "cameras": [ 8, 9, 12, 13 ], "counter": [ "1" ] } }
Важно
Используйте только фильтры, соответствующие цели поиска. Для выключения фильтра удалите его из вебхука. Не оставляйте фильтр пустым ([]), поскольку это может повлиять на работу других фильтров, и фильтрация окажется нерезультативной.
Примечание
Для получения всех оповещений передайте скобки без вложенных фильтров:
{}
Совет
Пример №1. Получение оповещений обо всех событиях с транспортными средствами:
{ "car_events": {} }
Пример №2. Получение оповещений об открытии эпизодов с людьми с совпадениями в картотеке по лицам:
{ "human_episodes": { "allowed_types": [ "episode_open" ], "face_matched": true } }
Примечание
Вы можете задать несколько значений в фильтрах с квадратными скобками. В этом случае вебхук будет активироваться при совпадении одного из значений фильтра. В примере ниже вы будете оповещены о событии с силуэтом с группы камер
1
или3
, если совпала карточка с id12
или25
.{ "body_events": { "camera_groups": [1, 3], "matched_card_in": [12, 25] } }
Поставьте флажок Активный.
Нажмите Сохранить.
Как работает вебхук
Для тестирования работы вебхука можно использовать следующий простой веб-сервер на Python, обеспечивающий захват отправленных вебхуком оповещений о событиях:
from pprint import pprint
from aiohttp import web
async def handle(request):
pprint(await request.json())
return web.Response(status=200)
app = web.Application()
# for aiohttp v 3.x
# app.add_routes([web.post('/', handle)])
# for aiohttp v 2.x
app.router.add_post('/', handle)
web.run_app(app, port=8888)
Важно
Используемый вами сервер-ловушка оповещений по вебхуку должен возвращать ответ HTTP 200
после получения вебхука от FindFace Multi, по аналогии с примером выше.
Если для вебхука не задано ни одного фильтра, данный веб-сервер будет получать оповещения обо всех произошедших в системе событиях, эпизодах, записях счетчиков.
Для просмотра статуса отправки вебхука в FindFace Multi выполните следующую команду:
sudo journalctl CONTAINER_NAME=findface-multi-findface-multi-legacy-1 -f | grep 'Webhook'
Подробные данные в вебхуках (Verbose)
По умолчанию в вебхуках включен подробный режим оповещений (режим verbose), что означает, что уведомления по вебхукам содержат подробную информацию по таким сущностям как карточки, списки наблюдения, камеры и группы камер. Если по каким-то причинам вы хотите отключить подробный режим оповещений, сделайте следующее:
Откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
и установите 'VERBOSE_WEBHOOKS': False
:
sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
...
FFSECURITY = {
...
# send serialized cards, card-lists, camera and camera groups in webhooks
'VERBOSE_WEBHOOKS': False,
...
}
...
После внесения изменений обязательно перезапустите контейнеры FindFace Multi.
cd /opt/findface-multi/
sudo docker-compose restart
В результате оповещения по вебхуку будут содержать только идентификаторы таких сущностей, как карточки, списки наблюдения, камеры и группы камер.