Счетчики лиц, силуэтов и транспортных средств. Определение дистанции

Важно

Для подсчета человеческих силуэтов или автомобилей нужно предварительно включить детектирование силуэтов или транспортных средств.

FindFace Multi позволяет подсчитывать лица, силуэты и транспортные средства на подключенных камерах. Данную функциональность можно использовать в различных целях, например, для подсчета людей в очередях и зонах ожидания, мониторинга общественных собраний, предотвращения скопления людей, определение пробок на дорогах и т. д.

Метод подсчета основан на временных срезах. Это означает, что счетчик считает лица, силуэты и транспортные средства на статических скриншотах, которые делаются с заданным интервалом.

Вы можете вести подсчет лиц/силуэтов/транспортных средств на каждой отдельной камере или же совместно на всех выбранных камерах.

В этом разделе:

Создание счетчика

Для создания счетчика выполните следующие действия:

  1. Перейдите на вкладку Счетчики.

  2. Нажмите + Новый счетчик.

    counter_create_ru

  3. Укажите название счетчика.

  4. Выберите одну или несколько групп камер для подсчета.

  5. Выберите одну или несколько камер для подсчета.

  6. Установите флажок Лица для подсчета лиц.

  7. Установите флажок Силуэты для подсчета силуэтов. Детектирование силуэтов должно быть включено.

  8. Установите флажок Транспортные средства для подсчета транспортных средств. Детектирование транспортных средств должно быть включено.

  9. Задайте интервал в секундах между двумя последовательными скриншотами, используемыми для подсчета лиц/силуэтов/транспортных средств.

  10. Нажмите Сохранить.

  11. Установите флажок Определение дистанции для измерения расстояния между силуэтами. Данный флажок доступен в том случае, если установлен флажок Силуэты.

    counter_ru

  12. Убедитесь, что для счетчика установлен флажок Активен.

  13. Нажмите Сохранить.

  14. (Опционально) Перейдите на вкладку ROI, чтобы задать регион отслеживания лиц/силуэтов/транспортных средств в поле зрения камер(ы). Нажмите Сохранить.

    counter_roi_ru

Калибровка счетчика для определения дистанции

Если включено Определение дистанции, необходимо выполнить калибровку счетчика.

Для калибровки счетчика:

  1. Попросите человека встать перед выбранной камерой в полный рост.

  2. Попросите пройти по зоне, фиксируемой камерой, по которой в дальнейшем будут рассчитываться расстояния. Для достижения наилучшего качества человек должен ходить по ровной поверхности.

  3. Введите период калибровки счетчика (от 15 до 300 секунд) и нажмите Откалибровать счетчик.

Если нужно откалибровать счетчик для нескольких камер, выполните шаги 1-3 для каждой камеры, выбранной в поле Камеры.

Если результат калибровки вас не удовлетворил, нажмите Удалить калибровку и выполните калибровку еще раз.

Мониторинг работы счетчиков

Мониторинг работы счетчиков выполняется на вкладке Счетчики.

counters_monitor_ru

Статусы счетчиков:

  • Зеленый: счетчик работает без ошибок, были получены все кадры со всех камер счетчика за определенный период.

  • Желтый: количество ошибок менее 70%.

  • Красный: количество ошибок более 70%.

  • Серый: счетчик отключен.

Вы можете воспользоваться фильтром по статусу счетчика, чтобы найти счетчики с техническими проблемами, например, если счетчик не смог получить кадры из-за потери связи с камерой.

Выбрав счетчик, вы можете отфильтровать список кадров и оставить только кадры с ошибками. Содержимое ошибки отображается при наведении на id кадра.

Совет

Вы можете настроить желтый и красный статусы на основании доли неудачных записей. Для этого отредактируйте параметр MAX_COUNTER_ERROR_RECORDS в файле конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py :

sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py

FFSECURITY = {
    ...
    # Counter health status config:
    # max percent of camera records with errors
    'MAX_COUNTER_ERROR_RECORDS': {'yellow': 0.3, 'red': 0.5},
    ...
}

Работа с записями счетчика

Статические скриншоты, которые делаются счетчиком, с количеством обнаруженных лиц, силуэтов и транспортных средств, сохраняются как т.н. записи счетчика. Если вы включили для счетчика измерение расстояний, каждая запись также будет содержать минимальное, среднее и максимальное обнаруженные расстояния в метрах.

Если счетчик работает с ошибками, система будет создавать пустые записи с сообщением об ошибке.

Для просмотра записей счетчика перейдите на вкладку Счетчики. Нажмите на счетчик. Перейдите на вкладку Скриншоты.

counter_records_ru

Вы можете увеличить скриншот, нажав на него. Если включено определение дистанции, на скриншоте будут зафиксированы прямоугольники вокруг силуэтов и расстояние между ними.

Для работы со списком счетчиков используйте следующие фильтры:

  • Название содержит: фильтровать счетчики по имени.

  • ID счётчика: отобразить счетчик с определенным ID.

  • Группы камер: отображать счетчики по определенной группе камер.

  • Камеры: отображать счетчики по определенной камере.

  • Дистанция: фильтровать счетчики с определением/без определения дистанции или любой.

  • Статус: фильтровать счетчики по статусу.

Для работы со скриншотами счетчика используйте следующие фильтры:

  • Камеры: отображать скриншоты по определенной камере.

  • Дата и время: отображать скриншоты за определенный период времени.

  • Ошибка: фильтровать скриншоты с ошибками/без ошибок.

  • Количество лиц: отображать скриншоты с количеством лиц в заданном интервале.

  • Количество силуэтов: отображать скриншоты с количеством силуэтов в заданном интервале.

  • Количество транспортных средств: отображать скриншоты с количеством транспортных средств в заданном интервале.

  • ID записи счётчика: отобразить скриншоты с определенным ID записи счетчика.

  • Минимальная дистанция: отобразить скриншоты с минимальной дистанцией в определенном интервале.

  • Максимальная дистанция: отобразить скриншоты с максимальной дистанцией в определенном интервале.

  • Средняя дистанция: отобразить скриншоты со средней дистанцией в определенном интервале.

Настройка вебхука для счетчика

Для того чтобы автоматизировать процесс сбора статистики по счетчику, настройте вебхук на срабатывание при определенном количестве лиц, силуэтов и транспортных средств в записи счетчика.

Настройка счетчиков

Для настройки счетчиков откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py и измените следующие параметры:

  • COUNTERS_DEDUP_OPTIONS: набор опций, которые позволяют избежать дублирования объектов при подсчете в многокамерных счетчиках, т. е. ситуации, когда один и тот же объект считается на нескольких камерах одновременно, что ведет к чрезмерно завышенному результату подсчета. Для каждого типа объектов (face, body, car) доступны две опции: enabled – включает дедупликацию объектов, threshold – определяет порог схожести, при котором объекты считаются дубликатами.

  • COUNTERS_SAVE_FULLFRAME определяет параметры сохранения полных кадров при работе счетчиков: always – всегда, detect – сохранять, только если были обнаружены лица, силуэты или транспортные средства, never – никогда.

  • COUNTERS_FULLFRAME_JPEG_QUALITY: качество JPEG полных кадров.

  • COUNTERS_THUMBNAIL_JPEG_QUALITY: качество JPEG миниатюр.

  • COUNTERS_ROI_INTERSECTION_THRESHOLD: требуемый процент пересечения между прямоугольником вокруг объекта (bbox) и областью интереса, определенной для счетчика.

  • 'COUNTERS_SCREENSHOT_TIMEOUT': время ожидания (в секундах), после которого счетчик начнет получать скриншоты.

  • 'COUNTERS_DETECTION_TASK_TIMEOUT': время ожидания (в секундах), после которого счетчик начнет определять объекты на уже полученных скриншотах.

Также вы можете настроить параметры, позволяющие регулировать использование ЦПУ на протяжении всего времени работы сервиса findface-counter:

  • 'COUNTERS_MAX_SLEEP_ON_START': при первом запуске счетчики получают произвольную задержку от 0 (нуля) до указанного количества секунд (происходит т.н. «размазывание» счетчиков).

  • 'COUNTERS_MAX_CONCURRENT_SCREENSHOT_FETCHES': этот параметр задается для обеспечения равномерной нагрузки на процессоры во время работы счетчиков. Значение по умолчанию равно 100. При таком значении параметра на установке, использующей 100 ЦПУ, каждый процессор будет работать наиболее эффективно. Однако на установке с меньшим количеством ЦПУ может потребоваться уменьшить это значение до количества процессоров. Параметр настраивается индивидуально для каждой отдельной установки.

sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py

# deduplicate objects on multi-camera counters
 'COUNTERS_DEDUP_OPTIONS': {
     'face': {
         'enabled': False,
         'threshold': 0.714,  # model: [mango_320]
     },
     'body': {
         'enabled': False,
         'threshold': 0.65,  # model: [durga]
     },
     'car': {
         'enabled': False,
         'threshold': 0.65,  # model: [bottas]
     },
},
# counters full frame saving options:
# `always` - save always
# `detect` - save only if faces, silhouettes or cars have been detected
# `never` - never save full frames
'COUNTERS_SAVE_FULLFRAME': 'always',
'COUNTERS_FULLFRAME_JPEG_QUALITY': 75,
'COUNTERS_THUMBNAIL_JPEG_QUALITY': 75,
# required percentage of bbox intersection with ROI
'COUNTERS_ROI_INTERSECTION_THRESHOLD': 0.75,
'COUNTERS_MAX_SLEEP_ON_START': 10,  # in seconds
'COUNTERS_SCREENSHOT_TIMEOUT': 15,  # in seconds
'COUNTERS_DETECTION_TASK_TIMEOUT': 15,  # in seconds
# global limit devided equally among general workers
'COUNTERS_MAX_CONCURRENT_SCREENSHOT_FETCHES': 100,
...

После внесения изменений обязательно перезапустите контейнеры FindFace Multi.

cd /opt/findface-multi/

sudo docker-compose restart