Интеграция с удаленными системами распознавания лиц

Вы можете интегрировать свой экземпляр FindFace CIBR с удаленными системами распознавания лиц. В этом случае сервер, известный как «кукловод», будет отправлять биометрические данные из поставленных на мониторинг карточек на удаленные серверы-«марионетки». В ответ он будет получать события распознавания с совпадениями по данным карточкам. Вы можете настроить ежедневный поиск, который позволяет серверу-кукловоду получать события по расписанию.

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

В текущей версии поддерживается только интеграция с системами распознавания лиц из семейства FindFace.

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

Расписание синхронизации

Данные между сервером-кукловодом и сервером-марионеткой синхронизируются следующим образом:

  • Сервер-кукловод доставляет предназначенные для мониторинга карточки серверу-марионетке с интервалом, указанным в параметре REMOTE_MONITORING_SYNC_INTERVAL (см. настройку ниже).

  • Сервер-марионетка отправляет совпадающие события распознавания серверу-кукловоду, как только они появляются.

Настройка сервера-кукловода

Для настройки экземпляра FindFace CIBR в качестве сервера-кукловода выполните следующие действия:

  1. Откройте файл конфигурации /opt/findface-cibr/configs/findface-multi-legacy/findface-multi-legacy.py. Убедитесь, что параметр EXTERNAL_ADDRESS заполнен.

    sudo vi /opt/findface-cibr/configs/findface-multi-legacy/findface-multi-legacy.py
    
    EXTERNAL_ADDRESS = 'http://192.168.0.4'
    

    Примечание

    Значение EXTERNAL_ADDRESS определяется во время развертывания.

  2. Найдите раздел Puppeteer.

    # ============== Puppeteer ===============
    # INSTALLED_APPS.append('ffsecurity_puppeteer')
    
    # PUPPETEER_CONFIG = {
    #     'UNSAVED_RESULTS_DELETION_TIMEOUT': 3600,        # maximum lifetime of search results not saved involuntarily
    #     'REMOTE_MONITORING_SYNC_INTERVAL': 600,          # monitoring data synchronization interval, seconds
    #     'REMOTE_MONITORING_EVENTS_MAX_AGE': 30*24*60*60, # monitoring events older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'ENABLE_WATCH_LISTS_MONITORING': False,
    #     'DAILY_SEARCH_PUSH_HOUR': 2,                     # daily search cards synchronization hour
    #     'DAILY_SEARCH_PULL_HOUR': 6,                     # hour in which results of daily search will be obtained
    #     'DAILY_SEARCH_EVENTS_MAX_AGE': 0,                # daily search events older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'DAILY_SEARCH_EVENTS_FULLFRAME_MAX_AGE': 30*24*60*60,  # daily search events fullframes
    #                                                      # older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'puppets': [
    #         {
    #             'id': 'first_puppet',                    # puppet ID
    #             'url': 'http://1.1.1.1:8010/',           # puppet URL
    #             'token': 'first_puppet_token',           # use pwgen -s 64 1 (should match the token in puppet)
    #             'facen_model': 'mango_320'           # face model in puppet
    #         },
    #         {
    #             'id': 'second_puppet',
    #             'url': 'http://1.1.1.1:8010/',
    #             'token': 'second_puppet_token',
    #
    #              # if remote installation has a different face model than the one used in FFSecurity -
    #              # you need to specify its name and ExtractionAPI URL where the corresponding face model is specified
    #              # other settings like detector, normalizer and other should be set as puppeteer's ExtractionAPI
    #              # contact support for details
    #             'facen_model': 'grapefruit_480',
    #             'extractor': 'http://127.0.0.1:18667',
    #         },
    #     ]
    # }
    #
    
  3. Раскомментируйте раздел, как показано в примере ниже, и укажите следующие параметры:

    • REMOTE_MONITORING_SYNC_INTERVAL: интервал в секундах, с которым сервер-кукловод отправляет предназначенные для мониторинга карточки на сервер-марионетку.

    • REMOTE_MONITORING_EVENTS_MAX_AGE: события мониторинга старше указанного количества дней будут автоматически удаляться (по умолчанию каждую ночь в 1:17).

    • puppetsid: идентификатор сервера-марионетки.

    • puppetsurl: IP-адрес и порт сервера-марионетки.

      Укажите порт следующим образом:

      • Оставьте без изменений, если сервер-марионетка является общественной или транспортной системой безопасности (т. е. в его основе лежит сервис public-security).

      • Измените номер на 80 или вообще не указывайте его, если сервер-марионетка построен на сервисе findface-security (т. е. на нем установлен продукт FindFace Security или FindFace Multi).

    • puppetstoken: токен, который будут использовать сервер-кукловод и сервер-марионетка для взаимной аутентификации.

      Совет

      Для создания случайного токена используйте следующую команду.

      pwgen -s 64 1
      
    • puppetsfacen_model: модель нейронной сети, используемая на сервере-марионетке для распознавания лиц.

    • puppetsextractor: IP-адрес и порт сервиса, используемого для извлечения биометрических данных на сервере-марионетке, если модель нейросети для распознавания лиц на нем отличается от модели на сервере-кукловоде.

    Оставьте закомментированными остальные параметры в разделе.

    # ============== Puppeteer ===============
    INSTALLED_APPS.append('ffsecurity_puppeteer')
    
    PUPPETEER_CONFIG = {
    #     'UNSAVED_RESULTS_DELETION_TIMEOUT': 3600,        # maximum lifetime of search results not saved involuntarily
         'REMOTE_MONITORING_SYNC_INTERVAL': 600,          # monitoring data synchronization interval, seconds
         'REMOTE_MONITORING_EVENTS_MAX_AGE': 30*24*60*60, # monitoring events older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'ENABLE_WATCH_LISTS_MONITORING': False,
    #     'DAILY_SEARCH_PUSH_HOUR': 2,                     # daily search cards synchronization hour
    #     'DAILY_SEARCH_PULL_HOUR': 6,                     # hour in which results of daily search will be obtained
    #     'DAILY_SEARCH_EVENTS_MAX_AGE': 0,                # daily search events older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'DAILY_SEARCH_EVENTS_FULLFRAME_MAX_AGE': 30*24*60*60,  # daily search events fullframes
    #                                                      # older than this number of seconds will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
         'puppets': [
             {
                 'id': 'first_puppet',                    # puppet ID
                 'url': 'http://1.1.1.1:8010/',           # puppet URL
                 'token': 'first_puppet_token',           # use pwgen -s 64 1 (should match the token in puppet)
                 'facen_model': 'mango_320'           # face model in puppet
             },
             {
                 'id': 'second_puppet',
                 'url': 'http://1.1.1.1:8010/',
                 'token': 'second_puppet_token',
    
    #              # if remote installation has a different face model than the one used in FFSecurity -
    #              # you need to specify its name and ExtractionAPI URL where the corresponding face model is specified
    #              # other settings like detector, normalizer and other should be set as puppeteer's ExtractionAPI
    #              # contact support for details
                 'facen_model': 'grapefruit_480',
                 'extractor': 'http://127.0.0.1:18667',
             },
         ]
     }
    
  4. Ежедневный поиск в FindFace CIBR 2.1.2.1 включен по умолчанию. При необходимости установите расписание отправки карточек на сервер-марионетку и получения событий, имеющих совпадение с отправленными карточками. Для этого снимите комментарий и установите значения следующих параметров:

    PUPPETEER_CONFIG = {
        ...
        'DAILY_SEARCH_PUSH_HOUR': 2,                     # daily search cards synchronization hour
        'DAILY_SEARCH_PULL_HOUR': 6,                     # hour in which results of daily search will be obtained
        ...
    

    Перейдите во вкладку Списки наблюдения и установите флажок Сбор данных о местоположении для интересующего вас списка наблюдения.

  5. При необходимости включите очистку ежедневного поиска, раскомментировав следующие параметры:

    PUPPETEER_CONFIG = {
        ...
        'DAILY_SEARCH_EVENTS_MAX_AGE': 0,                # daily search events older than this number of seconds will be
                                                         # automatically deleted (every night at 1:17 am by default)
        'DAILY_SEARCH_EVENTS_FULLFRAME_MAX_AGE': 30*24*60*60,  # daily search events fullframes
                                                         # older than this number of seconds will be
                                                         # automatically deleted (every night at 1:17 am by default)
        ...
    
    • 'DAILY_SEARCH_EVENTS_MAX_AGE': 0: продолжительность (в секундах) хранения данных о местоположении объекта интереса. По умолчанию: 0, постоянное хранение.

    • 'DAILY_SEARCH_EVENTS_FULLFRAME_MAX_AGE': 30*24*60*60: длительность хранения (в секундах) полных кадров событий ежедневного поиска, полученных от сервера-марионетки. По умолчанию: 30*24*60*60 секунд (30 дней). Измените 30 на нужное количество дней при необходимости.

    Примечание

    Вы можете вручную удалить данные о местоположении объекта и полные кадры событий ежедневного поиска старше заданного количества секунд, выполнив команды, приведенные ниже.

    Чтобы задать количество секунд для удаления данных о местоположении объекта, используйте аргумент --daily-search-events-max-age.

    sudo docker exec findface-cibr-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/manage.py cleanup --daily-search-events-max-age 1
    

    Для удаления полных кадров событий ежедневного поиска, полученных от сервера-марионетки, старше 5 дней (5*24*60*60 = 432000 секунд), используйте аргумент --daily-search-events-fullframe-max-age.

    sudo docker exec findface-cibr-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/manage.py cleanup --daily-search-events-fullframe-max-age 432000
    
  6. Перезапустите контейнеры findface-cibr-findface-multi-legacy-singleton-services-1 и findface-cibr-findface-multi-legacy-1.

    sudo docker container restart findface-cibr-findface-multi-legacy-singleton-services-1 findface-cibr-findface-multi-legacy-1
    

Настройка сервера-марионетки

Для настройки удаленного экземпляра FindFace Multi 2.0+ в качестве сервера-марионетки выполните следующие действия:

  1. Откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py . Убедитесь, что параметр EXTERNAL_ADDRESS заполнен.

    sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
    
    EXTERNAL_ADDRESS = 'http://192.168.0.5'
    
  2. Найдите раздел Vns.

    # ================= Vns ==================
    # A plugin for using FindFace Security as a puppeteer server
    # increasing CONCURRENCY might speedup remote monitoring
    # INSTALLED_APPS.append('ffsecurity_vns')
    
    # VNS_CONFIG = {
    #     'USERS': {
    #         'user1': 'token1',
    #         'user2': 'token2'
    #     },
    #     'MONITORING_THRESHOLD': 0.75,
    #     'DAILY': {
    #         'ENABLED': False,
    #         'THRESHOLD': 0.75,
    #         'START_TIME': "00:00:00"
    #     },
    #     'CONCURRENCY': 5,
    # }
    
  3. Раскомментируйте раздел, как показано в примере ниже, и укажите следующие параметры:

    • token: токен, который будут использовать сервер-марионетка и сервер-кукловод для взаимной аутентификации. Вы можете указать несколько пользователей и токенов, если марионетка взаимодействует с несколькими кукловодами. Имена пользователей (user) можно оставить без изменений.

    • MONITORING_THRESHOLD: порог достоверности в событиях распознавания лиц, отправляемых на сервер-кукловод.

    Оставьте закомментированными остальные параметры в разделе.

    # ================= Vns ==================
    # A plugin for using FindFace Security as a puppeteer server
    # increasing CONCURRENCY might speedup remote monitoring
    INSTALLED_APPS.append('ffsecurity_vns')
    
    VNS_CONFIG = {
         'USERS': {
             'user1': 'token1',
             'user2': 'token2'
         },
         'MONITORING_THRESHOLD': 0.75,
    #     'DAILY': {
    #         'ENABLED': False,
    #         'THRESHOLD': 0.75,
    #         'START_TIME': "00:00:00"
    #     },
    #     'CONCURRENCY': 5,
     }
    
  4. Если вы включили ежедневный поиск на сервере-кукловоде (см. шаг №4 выше), раскомментируйте и включите параметры 'DAILY'. Укажите время для сопоставления событий с карточками, которые были получены от сервера-кукловода.

    # ================= Vns ==================
    # A plugin for using FindFace Security as a puppeteer server
    # increasing CONCURRENCY might speedup remote monitoring
    INSTALLED_APPS.append('ffsecurity_vns')
    
    VNS_CONFIG = {
    ...
         'DAILY': {
             'ENABLED': True,
             'THRESHOLD': 0.75,
             'START_TIME': "00:00:00"
         },
    #     'CONCURRENCY': 5,
     }
    
  5. Если поток событий сервера-марионетки большой, вы можете увеличить значение CONCURRENCY, ускорив тем самым удаленный мониторинг.

    • CONCURRENCY: это количество асинхронных задач, которые будут выполнять сопоставление событий с галереей мониторинга на сервере-марионетке. Значение по умолчанию 5.

  6. Выполните перезапуск контейнеров FindFace Multi.

    cd /opt/findface-multi/
    
    sudo docker-compose restart
    

Для настройки удаленного экземпляра FindFace Multi версии 1.2 и более ранней в качестве сервера-марионетки выполните следующие действия:

  1. Откройте файл конфигурации /etc/findface-security/config.py. Убедитесь, что параметр EXTERNAL_ADDRESS заполнен.

    sudo vi /etc/findface-security/config.py
    
    EXTERNAL_ADDRESS = 'http://192.168.0.5'
    
  2. Найдите раздел Vns.

  3. Раскомментируйте раздел, как показано в примере выше, и укажите параметры token и MONITORING_THRESHOLD.

  4. Если вы включили ежедневный поиск на сервере-кукловоде (см. шаг №4 выше), снимите комментарий и включите параметры 'DAILY'. Укажите время для сопоставления событий с карточками, которые были получены от сервера-кукловода.

  5. Перезапустите сервис findface-security.

    sudo systemctl restart findface-security.service
    
  6. Выполните миграцию, чтобы синхронизировать сервер-марионетку с серверами-кукловодами.

    sudo findface-security migrate