Распознавание персон

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

Примечание

Если кластеризация персон включена, в системных базах данных появляется сущность «person event» (событие появления персоны), связанная со всеми эпизодами, в которых фигурировало лицо той или иной персоны.

Важно

По умолчанию кластеризация персон отключена. Включите и настройте ее через файл конфигурации /etc/findface-security/config.py.

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

Методы кластеризации

FindFace Multi использует следующие методы группировки лиц, принадлежащих одному и тому же человеку:

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

    Примечание

    Технические детали заключаются в следующем. Не каждый эпизод является подходящим: число событий в нем должно быть равно или больше значения параметра PERSON_EVENT_MIN_EPISODE_EVENTS (задается через файл конфигурации /etc/findface-security/config.py). Если эпизод соответствует данному требованию, система выбирает событие наилучшего качества и выполняет следующие операции:

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

    • Ищет похожий центроид лица в галерее person_events в базе векторов признаков Tarantool. Центроид лица - это виртуальный вектор признаков, усредненный по всем лицам персоны, обнаруженным на данный момент. Если подобный центроид найден, система обновляет его, используя вектор признаков из нового события. В противном случае создается новый центроид.

  • Кластеризация по расписанию. Мы рекомендуем планировать ее на поздние ночные часы, так как процесс занимает много времени и ресурсов.

    Примечание

    Расписание задается в формате RRULE в параметре PERSONS_CLUSTERIZATION_SCHEDULE файла конфигурации /etc/findface-security/config.py. В остальном техническая реализация напоминает динамический метод. Однако качество центроида лица при кластеризации по расписанию лучше, поскольку в этом случае центроиды усредняются по большему массиву накопленных векторов признаков.

    Важно

    Кластеризация по расписанию полностью перезаписывает содержимое галереи персон, включая id.

Включение и настройка кластеризации персон

По умолчанию кластеризация персон отключена. Для включения данной функции откройте файл конфигурации /etc/findface-security/config.py и внесите следующие изменения в раздел SERVICES:

sudo vi /etc/findface-security/config.py

...
SERVICES = {
    "ffsecurity": {
        ...
        "persons": True,
    }
...

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

В том же файле конфигурации можно изменить следующие параметры:

  • PERSON_EVENT_MIN_QUALITY: минимальное качество лиц, используемых в кластеризации персон.

  • PERSON_EVENT_MIN_EPISODE_EVENTS: минимальное количество событий в эпизодах, участвующих в кластеризации персон.

  • PERSONS_CONFIDENCE_THRESHOLD: пороговая степень схожести для принятия решения о принадлежности лица персоне.

    Предупреждение

    Перед изменением данного параметра проконсультируйтесь с нашими специалистами по адресу support@ntechlab.com.

  • PERSONS_CLUSTERIZATION_SCHEDULE: рекуррентное правило (RRULE), задающее расписание плановой кластеризации персон.

    Совет

    См. калькулятор RRULE.

# -- Persons configuration --
# rrule (recurrence rule) for scheduling persons clusterization
# WARNING: all scheduling works with UTC time and NOT aware of any timezone
'PERSONS_CLUSTERIZATION_SCHEDULE': 'RRULE:FREQ=DAILY;INTERVAL=1;WKST=MO;BYHOUR=0;BYMINUTE=0',
# face to person matching confidence threshold
'PERSONS_CONFIDENCE_THRESHOLD': 0.739,
# minimum required face quality for person creation
'PERSON_EVENT_MIN_QUALITY': 0.45,
# minimum required number events in episode for person creation
'PERSON_EVENT_MIN_EPISODE_EVENTS': 1,