Microsoft Cognitive - Face API - Проверка лица - Как это работает - PullRequest
0 голосов
/ 04 июля 2018

Вариант использования следующий:

  • В нашей системе есть список лиц
  • Пользователь загрузит одно изображение
  • Мы хотим показать список лиц, который совпадает с загруженным изображением, например, с доверием> 0,8

Теперь, глядя на как , я понял следующее

  • Используя Face Detect API, нам нужно сначала загрузить все изображения, включая изображения, которые мы хотим проверить
  • Мы можем добавить все лица из нашей системы в один из PersonGroupId
  • Затем нам нужно вызвать Face-Verify API и передать изображение для проверки & PersonGroupId, чтобы начать сравнение
  • В ответ мы получим все лицо с идентичными и достоверными данными ??

Это правильный путь?

После применения фильтров наша система может иметь около 1000-3000 изображений.

Кстати, в данной ссылке упоминается, что срок действия faceid истечет через 24 часа после обнаружения вызова: (

Мы также должны позаботиться о производительности в этом случае, поэтому мы думаем об асинхронном вызове и затем возвращаем результат где-нибудь в нашей системе, который может быть получен позже.

Что может быть лучшим подходом для этого?

Цены

  • я вижу, что первые 30000 транзакций бесплатны (с ограничением 20 / м)
  • Стоимость Face Storage составляет 16,53 / м для 1000 изображений. Означает ли это, что Face-Detect API будет храниться в хранилище BLOB-объектов Azure? Если да и все еще faceId будет удален через 24 часа?
  • Face Storage - хранит изображения размером до 4 МБ каждое - в то время как Face-Detect сообщает, что может хранить до 6 МБ

Я мог бы что-то здесь упустить, было бы здорово, если бы кто-то мог бросить на него свет

1 Ответ

0 голосов
/ 05 июля 2018

Давайте посмотрим процесс, который вам нужно будет реализовать.

В документации здесь сказано:

API-интерфейсы для лица охватывают следующие категории:

...

  • FaceList : Используется для управления FaceList для Поиск похожих .
  • (Large) PersonGroup : Используется для управления (большим) набором данных PersonGroup для Идентификация .
  • (Большой) PersonGroup Person : Используется для управления (Large) PersonGroup Person Faces для Идентификация .

В вашем случае похоже, что вы хотите идентифицировать лица, поэтому вы будете использовать PersonGroup с PersonGroup Person элементами внутри.

Шаг 1 - Создайте список известных лиц

Подробнее

Итак, сначала вам нужно сохранить свои известные лица в группе (которая называется PersonGroup или LargePersonGroup с учетом количества элементов, которые вы должны сохранить), чтобы запросить эти элементы с изображением, загруженным вашим пользователем. Это сохранит предметы, с этими группами не будет «24-часового лимита».

Если вы хотите понять различия между «обычными» и «крупномасштабными» группами, см. Ссылку здесь : есть некоторые различия, которые вы должны учитывать, в частности, в отношении процесса обучения.

Итак, давайте использовать обычный PersonGroup, не большой. Обратите внимание, что количество товаров зависит от вашей подписки:

  • Квота бесплатной подписки: 1000 человек. Каждый вмещает до 1000 человек.
  • Квота подписки S0-уровня: 1 000 000 человек. Каждый вмещает до 10 000 человек.

Действия

Обратите также внимание, что здесь я указываю на операции API, но все эти действия можно выполнять на любом языке с этими вызовами API, а также напрямую с предоставленным SDK для некоторых языков (см. Список здесь )

  • Создание PersonGroup с PersonGroup - Create операция . В вашем запросе вы укажете personGroupId, который будете использовать ниже

Тогда для каждого человека из ваших известных лиц:

  • Создать персонажа с помощью PersonGroup Person - Create операции , выдав предыдущую personGroupId в запросе. В результате вы получите personId значение guid, например "25985303-c537-4467-b41d-bdb45cd95ca1"

  • Добавьте лица этого пользователя к его вновь созданному лицу, вызвав PersonGroup Person - Add Face операцию и предоставив personGroupId, personId дополнительную дополнительную информацию в запросе и ваш образ URL в теле.

Обратите внимание, что для этой операции:

Допустимый размер изображения от 1 КБ до 4 МБ. Только одно лицо разрешено изображение.

Наконец, как только вы добавили своих лиц с их лицами:

Тогда вы готовы идентифицировать людей по этой группе!

Шаг 2 - Поиск этого FaceId внутри ваших известных лиц

Легко, всего 2 действия здесь:

  • Позвоните Face - Detect операция , чтобы найти лица внутри вашего изображения. Результатом будет массив элементов, содержащий faceId и другие атрибуты

  • Если вы обнаружили лица, позвоните Face - Identify , операция со следующими параметрами:

    • faceId, что является значением из операции обнаружения
    • personGroupId: идентификатор группы, которую вы создали на шаге 1
    • confidenceThreshold: ваш порог доверия, например 0,8
    • maxNumOfCandidatesReturned: число возвращенных кандидатов (от 1 до 100, по умолчанию 10)

Запросить образец:

{
    "personGroupId": "sample_group",
    "faceIds": [
        "c5c24a82-6845-4031-9d5d-978df9175426",
        "65d083d4-9447-47d1-af30-b626144bf0fb"
    ],
    "maxNumOfCandidatesReturned": 1,
    "confidenceThreshold": 0.8
}

Другие вопросы

Стоимость хранения лица составляет 16,53 / м на 1000 изображений, означает ли это, что Face-Detect API будет хранить в хранилище BLOB-объектов Azure? Если да и до сих пор faceId будет удален через 24 часа?

Face-Detect API не сохраняет изображение. Стоимость хранения составляет около использования PersonGroup или FaceLists

Face Storage - хранит изображения размером до 4 МБ каждое - тогда как Face-Detect говорит, может хранить до 6 МБ

Как уже говорилось, хранение касается сохраняющихся граней, как при использовании PersonGroup Person - Add Face, где ограничение составляет 4 МБ, а не 6

...