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

Вы можете интегрировать свой экземпляр 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 days will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'ENABLE_DAILY_SEARCH': False,                    # daily search activation (default 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
    #     '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
    #             '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 days will be
    #                                                      # automatically deleted (every night at 1:17 am by default)
    #     'ENABLE_DAILY_SEARCH': False,                    # daily search activation (default 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
        'puppets': [
            {
                'id': '1',                    # puppet ID
                'url': 'http://192.168.0.5:8010/',           # puppet URL
                'token': '1234567890',           # use pwgen -s 64 1 (should match the token in puppet)
                'facen_model': 'mango_320'           # face model in puppet
            },
            {
                'id': '2',
                'url': 'http://192.168.0.6:8010/',
                'token': '0987654321',
                'facen_model': 'grapefruit_480',
                'extractor': 'http://192.168.0.6:18667',
    
    #
    #              # 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
            },
        ]
    }
    
  4. При необходимости включите ежедневный поиск. Для этого снимите комментарий и установите значение 'ENABLE_DAILY_SEARCH': True. Установите расписание отправки карточек на сервер-марионетку и получения событий, имеющих совпадение с отправленными карточками.

    PUPPETEER_CONFIG = {
        ...
        'ENABLE_DAILY_SEARCH': True,                     # daily search activation (default 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
        ...
    

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

  5. Перезапустите контейнер findface-multi-findface-multi-legacy-1.

    sudo docker container restart 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
    # 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"
    #     }
    # }
    
  3. Раскомментируйте раздел, как показано в примере ниже, и укажите следующие параметры:

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

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

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

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

    ================= Vns ==================
    A plugin for using FindFace Security as a puppeteer server
    INSTALLED_APPS.append('ffsecurity_vns')
    
    VNS_CONFIG = {
    ...
        'DAILY': {
            'ENABLED': True,
            'THRESHOLD': 0.75,
            'START_TIME': "00:00:00"
        }
    }
    
  5. Перезапустите контейнер findface-multi-findface-multi-legacy-1.

    sudo docker container restart findface-multi-findface-multi-legacy-1
    

Для настройки удаленного экземпляра 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