Руководство по обнаружению активности лиц

Обнаружение активности лиц можно использовать для определения того, является ли лицо в входном видеопотоке реальным (live) или поддельным (spoof). Это важный стандартный блок в системе проверки подлинности биография метрик, чтобы предотвратить спуфингов атаки от импостеров, пытающихся получить доступ к системе с помощью фотографии, видео, маски или других средств для олицетворения другого человека.

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

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

Внимание

Пакеты SDK для клиента распознавания лиц для активности — это функция. Необходимо запросить доступ к функции активности, заполнив форму приема распознавания лиц. Когда подписка Azure предоставляет доступ, вы можете скачать пакет SDK для распознавания лиц.

Необходимые компоненты

  • У вашей учетной записи Azure должна быть назначена роль участника Cognitive Services, чтобы вы согласились с ответственными условиями ИИ и создайте ресурс. Чтобы назначить эту роль своей учетной записи, следуйте инструкциям, описанным в документации по назначению ролей, или обратитесь к администратору.
  • Получив подписку Azure, создайте ресурс Распознавания лиц на портале Azure, чтобы получить ключ и конечную точку. После развертывания ресурса выберите элемент Перейти к ресурсу.
    • Вам потребуется ключ и конечная точка из ресурса, создаваемого для подключения приложения к службе распознавания лиц. Ключ и конечную точку вы вставите в код позднее при работе с кратким руководством.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
  • Доступ к клиентскому пакету SDK для распознавания лиц azure ai Vision для мобильных устройств (IOS и Android). Чтобы приступить к работе, необходимо применить функции ограниченного доступа распознавания лиц, чтобы получить доступ к пакету SDK. Дополнительные сведения см. на странице "Ограниченный доступ для лиц".

Обнаружение активности

Интеграция решения liveness включает два различных компонента: мобильное приложение и сервер приложений или оркестратор.

Интеграция liveness в мобильное приложение

Получив доступ к пакету SDK, следуйте инструкциям в репозитории GitHub azure-ai-vision-sdk , чтобы интегрировать пользовательский интерфейс и код в собственное мобильное приложение. Пакет SDK для liveness поддерживает как Java,Kotlin для Android, так и Swift для мобильных приложений iOS:

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

Оркестрация решения для активности

Ниже приведены высокоуровневые шаги, участвующие в оркестрации активности:

Схема рабочего процесса активности в Azure AI Face.

  1. Мобильное приложение запускает проверка активности и уведомляет сервер приложений.

  2. Сервер приложений создает новый сеанс активности с помощью Службы распознавания лиц Azure. Служба создает сеанс liveness-session и отвечает обратно с помощью маркера авторизации сеанса.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectliveness/singlemodal/sessions' \
    --header 'Ocp-Apim-Subscription-Key:<insert-api-key>
    --header 'Content-Type: application/json' \
    --data '{
      "livenessOperationMode": "passive",
      "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
      "sendResultsToClient": "false"
    }'
     
    Response:
    {
        "sessionId": "a6e7193e-b638-42e9-903f-eaf60d2b40a5",
        "authToken": <session-authorization-token>
    }
    
  3. Сервер приложений предоставляет маркер авторизации сеанса обратно в мобильное приложение.

  4. Мобильное приложение предоставляет маркер авторизации сеанса во время инициализации пакета SDK визуального распознавания Azure.

    mServiceOptions?.setTokenCredential(com.azure.android.core.credential.TokenCredential { _, callback ->
        callback.onSuccess(com.azure.android.core.credential.AccessToken("<INSERT_TOKEN_HERE>", org.threeten.bp.OffsetDateTime.MAX))
    })
    
    serviceOptions?.authorizationToken = "<INSERT_TOKEN_HERE>"
    
  5. Затем пакет SDK запускает камеру, направляет пользователя на правильное расположение, а затем подготавливает полезные данные для вызова конечной точки службы обнаружения активности.

  6. Пакет SDK вызывает службу распознавания лиц Azure AI для обнаружения активности. После ответа службы пакет SDK уведомляет мобильное приложение о завершении работы проверка.

  7. Мобильное приложение передает проверка завершения на сервер приложений.

  8. Сервер приложений теперь может запрашивать результат обнаружения активности из службы распознавания искусственного интеллекта Azure.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectliveness/singlemodal/sessions/a3dc62a3-49d5-45a1-886c-36e7df97499a' \
    --header 'Ocp-Apim-Subscription-Key: <insert-api-key>
    
    Response:
    {
        "status": "ResultAvailable",
        "result": {
            "id": 1,
            "sessionId": "a3dc62a3-49d5-45a1-886c-36e7df97499a",
            "requestId": "cb2b47dc-b2dd-49e8-bdf9-9b854c7ba843",
            "receivedDateTime": "2023-10-31T16:50:15.6311565+00:00",
            "request": {
                "url": "/face/v1.1-preview.1/detectliveness/singlemodal",
                "method": "POST",
                "contentLength": 352568,
                "contentType": "multipart/form-data; boundary=--------------------------482763481579020783621915",
                "userAgent": ""
            },
            "response": {
                "body": {
                    "livenessDecision": "realface",
                    "target": {
                        "faceRectangle": {
                            "top": 59,
                            "left": 121,
                            "width": 409,
                            "height": 395
                        },
                        "fileName": "video.webp",
                        "timeOffsetWithinFile": 0,
                        "imageType": "Color"
                    },
                    "modelVersionUsed": "2022-10-15-preview.04"
                },
                "statusCode": 200,
                "latencyInMilliseconds": 1098
            },
            "digest": "537F5CFCD8D0A7C7C909C1E0F0906BF27375C8E1B5B58A6914991C101E0B6BFC"
        },
        "id": "a3dc62a3-49d5-45a1-886c-36e7df97499a",
        "createdDateTime": "2023-10-31T16:49:33.6534925+00:00",
        "authTokenTimeToLiveInSeconds": 600,
        "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
        "sessionExpired": false
    }
    
    

Обнаружение активности с помощью проверки лиц

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

  1. Выберите хороший эталонный образ.
  2. Настройте оркестрацию активности с проверкой.

Схема рабочего процесса liveness-with-verify в Azure AI Face.

Выбор хорошего эталонного изображения

Используйте следующие советы, чтобы убедиться, что входные изображения дают наиболее точные результаты распознавания.

Технические требования:

  • Поддерживаемые форматы входных изображений: JPEG, PNG, GIF (первый кадр), BMP.
  • Размер изображения не должен превышать 6 МБ.
  • Атрибут можно использовать qualityForRecognition в операции обнаружения лиц при использовании применимых моделей обнаружения в качестве общего руководства о том, является ли изображение достаточным качеством для попытки распознавания лиц. Для сценариев идентификации рекомендуется использовать только "high" качественные изображения для регистрации пользователей и качества "medium" .

Требования к композиции:

  • Фотография четкая и резкая, а не размытая, пиксельная, искаженная или поврежденная.
  • Фотография не изменяется, чтобы удалить пятна лица или внешний вид лица.
  • Фотография должна быть в поддерживаемом формате RGB (JPEG, PNG, WEBP, BMP). Рекомендуемый размер лица составляет 200 пикселей x 200 пикселей. Размер лица больше 200 пикселей x 200 пикселей не приведет к улучшению качества ИИ, а размер не превышает 6 МБ.
  • Пользователь не носит очки, маски, шляпы, наушники, головные покрытия или покрытия лиц. Лицо должно быть свободно от каких-либо препятствий.
  • Лица ювелирные изделия разрешены, если они не скрывают ваше лицо.
  • Только одно лицо должно быть видно на фотографии.
  • Лицо должно быть в нейтральной передней позе с обоими глазами открытыми, рот закрытыми, без экстремальных выражений лица или наклона головы.
  • Лицо должно быть свободно от каких-либо теней или красных глаз. Перезадайте фотографию, если одно из этих случаев происходит.
  • Фон должен быть однородным и простым, без каких-либо теней.
  • Лицо должно быть центрировано в пределах изображения и заполнять по крайней мере 50 % изображения.

Настройте оркестрацию активности с проверкой.

Ниже приведены высокоуровневые шаги, участвующие в активности с оркестрацией проверки:

  1. Предоставьте эталонный образ проверки двумя способами:

    • Сервер приложений предоставляет эталонный образ при создании сеанса активности.

      Request:
      curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectlivenesswithverify/singlemodal/sessions' \
      --header 'Ocp-Apim-Subscription-Key: <api_key>' \
      --form 'Parameters="{
        \"livenessOperationMode\": \"passive\",
        \"deviceCorrelationId\": \"723d6d03-ef33-40a8-9682-23a1feb7bccd\"
      }"' \
      --form 'VerifyImage=@"test.png"'
      
      Response:
      {
          "verifyImage": {
              "faceRectangle": {
                  "top": 506,
                  "left": 51,
                  "width": 680,
                  "height": 475
              },
              "qualityForRecognition": "high"
          },
          "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567",
          "authToken":<session-authorization-token>
      }
      
      
    • Мобильное приложение предоставляет эталонное изображение при инициализации пакета SDK.

      val singleFaceImageSource = VisionSource.fromFile("/path/to/image.jpg")
      mFaceAnalysisOptions?.setRecognitionMode(RecognitionMode.valueOfVerifyingMatchToFaceInSingleFaceImage(singleFaceImageSource))
      
      if let path = Bundle.main.path(forResource: "<IMAGE_RESOURCE_NAME>", ofType: "<IMAGE_RESOURCE_TYPE>"),
         let image = UIImage(contentsOfFile: path),
         let singleFaceImageSource = try? VisionSource(uiImage: image) {
          try methodOptions.setRecognitionMode(.verifyMatchToFaceIn(singleFaceImage: singleFaceImageSource))
      }
      
  2. Теперь сервер приложений может запрашивать результат проверки в дополнение к результату активности.

    Request:
    curl --location '<insert-api-endpoint>/face/v1.1-preview.1/detectlivenesswithverify/singlemodal/sessions/3847ffd3-4657-4e6c-870c-8e20de52f567' \
    --header 'Content-Type: multipart/form-data' \
    --header 'apim-recognition-model-preview-1904: true' \
    --header 'Authorization: Bearer.<session-authorization-token> \
    --form 'Content=@"video.webp"' \
    --form 'Metadata="<insert-metadata>"
    
    Response:
    {
        "status": "ResultAvailable",
        "result": {
            "id": 1,
            "sessionId": "3847ffd3-4657-4e6c-870c-8e20de52f567",
            "requestId": "f71b855f-5bba-48f3-a441-5dbce35df291",
            "receivedDateTime": "2023-10-31T17:03:51.5859307+00:00",
            "request": {
                "url": "/face/v1.1-preview.1/detectlivenesswithverify/singlemodal",
                "method": "POST",
                "contentLength": 352568,
                "contentType": "multipart/form-data; boundary=--------------------------590588908656854647226496",
                "userAgent": ""
            },
            "response": {
                "body": {
                    "livenessDecision": "realface",
                    "target": {
                        "faceRectangle": {
                            "top": 59,
                            "left": 121,
                            "width": 409,
                            "height": 395
                        },
                        "fileName": "video.webp",
                        "timeOffsetWithinFile": 0,
                        "imageType": "Color"
                    },
                    "modelVersionUsed": "2022-10-15-preview.04",
                    "verifyResult": {
                        "matchConfidence": 0.9304124,
                        "isIdentical": true
                    }
                },
                "statusCode": 200,
                "latencyInMilliseconds": 1306
            },
            "digest": "2B39F2E0EFDFDBFB9B079908498A583545EBED38D8ACA800FF0B8E770799F3BF"
        },
        "id": "3847ffd3-4657-4e6c-870c-8e20de52f567",
        "createdDateTime": "2023-10-31T16:58:19.8942961+00:00",
        "authTokenTimeToLiveInSeconds": 600,
        "deviceCorrelationId": "723d6d03-ef33-40a8-9682-23a1feb7bccd",
        "sessionExpired": true
    }
    

Очистка ресурсов

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

Следующие шаги

Ознакомьтесь со ссылкой на пакет SDK визуального распознавания Azure, чтобы узнать о других вариантах в API активности.

Дополнительные сведения о функциях, доступных для оркестрации решения liveness, см. в справочнике по REST API сеанса.