Руководство по обнаружению активности лиц
Обнаружение активности лиц можно использовать для определения того, является ли лицо в входном видеопотоке реальным (live) или поддельным (spoof). Это важный стандартный блок в системе проверки подлинности биография метрик, чтобы предотвратить спуфингов атаки от импостеров, пытающихся получить доступ к системе с помощью фотографии, видео, маски или других средств для олицетворения другого человека.
Цель обнаружения активности заключается в том, чтобы система взаимодействовала с физическим лицом во время проверки подлинности. Такие системы становятся все более важными с ростом цифровых финансов, удаленного контроля доступа и процессов проверки подлинности в Интернете.
Решение для обнаружения активности успешно защищает от различных спуфовых типов, начиная от бумажных распечаток, 2d/3d маски и спуфинга презентаций на телефонах и ноутбуках. Обнаружение активности является активной областью исследований, с непрерывными улучшениями, которые делаются для противодействия все более сложным атакам спуфингов со временем. Непрерывные улучшения будут развернуты для клиента и компонентов службы со временем, так как общее решение становится более надежным для новых типов атак.
Внимание
Пакеты SDK для клиента распознавания лиц для активности — это функция. Необходимо запросить доступ к функции активности, заполнив форму приема распознавания лиц. Когда подписка Azure предоставляет доступ, вы можете скачать пакет SDK для распознавания лиц.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- У вашей учетной записи 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:
- Для Swift iOS следуйте инструкциям в примере iOS
- Для Kotlin/Java Android следуйте инструкциям в примере Android
После добавления кода в приложение пакет SDK обрабатывает загрузку камеры, управляя конечным пользователем для настройки их положения, создания полезных данных активности и вызова облачной службы Распознавания лиц Azure для обработки полезных данных в реальном времени.
Оркестрация решения для активности
Ниже приведены высокоуровневые шаги, участвующие в оркестрации активности:
Мобильное приложение запускает проверка активности и уведомляет сервер приложений.
Сервер приложений создает новый сеанс активности с помощью Службы распознавания лиц 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> }
Сервер приложений предоставляет маркер авторизации сеанса обратно в мобильное приложение.
Мобильное приложение предоставляет маркер авторизации сеанса во время инициализации пакета 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>"
Затем пакет SDK запускает камеру, направляет пользователя на правильное расположение, а затем подготавливает полезные данные для вызова конечной точки службы обнаружения активности.
Пакет SDK вызывает службу распознавания лиц Azure AI для обнаружения активности. После ответа службы пакет SDK уведомляет мобильное приложение о завершении работы проверка.
Мобильное приложение передает проверка завершения на сервер приложений.
Сервер приложений теперь может запрашивать результат обнаружения активности из службы распознавания искусственного интеллекта 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 }
Обнаружение активности с помощью проверки лиц
Объединение проверки лиц с обнаружением активности позволяет биография метричные проверки конкретного пользователя, интересующегося, с добавленной гарантией, что человек физически присутствует в системе. Существует две части интеграции активности с проверкой подлинности:
- Выберите хороший эталонный образ.
- Настройте оркестрацию активности с проверкой.
Выбор хорошего эталонного изображения
Используйте следующие советы, чтобы убедиться, что входные изображения дают наиболее точные результаты распознавания.
Технические требования:
- Поддерживаемые форматы входных изображений: JPEG, PNG, GIF (первый кадр), BMP.
- Размер изображения не должен превышать 6 МБ.
- Атрибут можно использовать
qualityForRecognition
в операции обнаружения лиц при использовании применимых моделей обнаружения в качестве общего руководства о том, является ли изображение достаточным качеством для попытки распознавания лиц. Для сценариев идентификации рекомендуется использовать только"high"
качественные изображения для регистрации пользователей и качества"medium"
.
Требования к композиции:
- Фотография четкая и резкая, а не размытая, пиксельная, искаженная или поврежденная.
- Фотография не изменяется, чтобы удалить пятна лица или внешний вид лица.
- Фотография должна быть в поддерживаемом формате RGB (JPEG, PNG, WEBP, BMP). Рекомендуемый размер лица составляет 200 пикселей x 200 пикселей. Размер лица больше 200 пикселей x 200 пикселей не приведет к улучшению качества ИИ, а размер не превышает 6 МБ.
- Пользователь не носит очки, маски, шляпы, наушники, головные покрытия или покрытия лиц. Лицо должно быть свободно от каких-либо препятствий.
- Лица ювелирные изделия разрешены, если они не скрывают ваше лицо.
- Только одно лицо должно быть видно на фотографии.
- Лицо должно быть в нейтральной передней позе с обоими глазами открытыми, рот закрытыми, без экстремальных выражений лица или наклона головы.
- Лицо должно быть свободно от каких-либо теней или красных глаз. Перезадайте фотографию, если одно из этих случаев происходит.
- Фон должен быть однородным и простым, без каких-либо теней.
- Лицо должно быть центрировано в пределах изображения и заполнять по крайней мере 50 % изображения.
Настройте оркестрацию активности с проверкой.
Ниже приведены высокоуровневые шаги, участвующие в активности с оркестрацией проверки:
Предоставьте эталонный образ проверки двумя способами:
Сервер приложений предоставляет эталонный образ при создании сеанса активности.
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)) }
Теперь сервер приложений может запрашивать результат проверки в дополнение к результату активности.
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 сеанса.