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

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

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

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

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

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

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

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

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

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

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

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

    sudo vi /etc/findface-security/config.py
    
    EXTERNAL_ADDRESS = 'http://192.168.0.4'
    
  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,          # 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).

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

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

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

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

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

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

      Совет

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

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

    • puppets -> extractor: 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,          # 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. Перезапустите сервис findface-security.

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

    sudo findface-security migrate
    sudo findface-security create_groups
    

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

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

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

    sudo vi /etc/findface-security/config.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. Перезапустите сервис findface-security.

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

    sudo findface-security migrate
    

Удаленный мониторинг и удаленный поиск на сервере-кукловоде

См. Удаленный мониторинг и удаленный поиск