Как пользоваться REST API¶
In this section:
Точка доступа¶
All REST API requests should be sent to http://<facenapi_ip>:8000/v1/
.
Версия API¶
The API version is increased every time a major change is made and allows us to avoid breaking backwards compatibility. The API version should be specified in the request path (for example, v1 in /v1/detect/
).
The most recent version is v1 which provides such advanced functions as gender, age and emotions recognition.
Примечание
When starting a new project, you should always use the latest stable version of the API.
Авторизация¶
Для всех методов API должна быть выполнена простая HTTP-авторизация на базе токена. Для того чтобы авторизовать запрос, после заголовка Authorization
нужно добавить метку Token
и ввести через пробел свой токен авторизации:
Примечание
Authorization: Token yfT8ftheVqnDLS3Q0yCiTH3E8YY_cm4p
Если запрос не содержит действительный токен, результатом его выполнения будет являться ответ HTTP 401 Unauthorized
.
Распространенные типы объектов¶
Лицо¶
Представляет собой изображение человеческого лица. Имейте в виду, что на одной фотографии может быть несколько лиц. Разные изображения одного и того же человека также рассматриваются как разные лица.
"id" (number)
: unique identifier of the face generated by API."timestamp"
(строка): время создания объекта лицо в формате ISO8601."photo"
(строка): URL или имя файла с изображением, которое было использовано для создания объекта лицо."photo_hash"
(строка): хэш исходной фотографии. Имейте в виду, что хэш идентичных фотографий будет одинаков, в то время как разные фотографии с большой вероятностью будут иметь разный хэш. Данный параметр не подлежит интерпретированию."thumbnail"
(строка): URL миниатюры лица, хранящейся на Сервере."x1" (число)
: координата x левого верхнего угла прямоугольника с лицом (рамки) на исходной фотографии."y1" (число)
: координата y левого верхнего угла прямоугольника с лицом (рамки) на исходной фотографии."x2"
(число): координата x нижнего правого угла прямоугольника с лицом (рамки) на исходной фотографии."y2"
(число): координата y нижнего правого угла прямоугольника с лицом (рамки) на исходной фотографии."meta"
(строка): строка с метаданными, которая может быть использована для хранения любой связанной с лицом информации (например, имени человека)."galleries" (string[])
: массив имен галерей, в которых хранится лицо.
Рамка¶
Представляет собой прямоугольник на фотографии, как правило, содержащий лицо. Может быть задан одним из следующих способов:
- Список координат со значениями:
- “x1” (число): координата x левого верхнего угла прямоугольника с лицом;
- “y1” (число): координата y левого верхнего угла прямоугольника с лицом;
- “x2” (число): координата x нижнего правого угла прямоугольника с лицом;
- “y2” (число): координата y нижнего правого угла прямоугольника с лицом.
- Линейно: [x1, y1, x2, y2].
В API-запросах можно использовать оба формата, однако независимо от того, какой формат был использован, запрос вернет координаты рамки в представлении JSON.
Имейте в виду, что рамка может выходить за физические границы фотографии, включая отрицательные значения координат.
Формат Параметров¶
Существуют следующие способы передачи параметров в методы API:
application/json
: в формате JSON в теле запроса.application/x-www-form-urlencoded
: с использованием имен полей формы и значений этих полей.multipart/form-data
: параметры кодируются несколькими частями. Данный способ поддерживает загрузку фотографии в том же запросе.query string
: параметры добавляются в конец URI запроса. При передаче параметров этим способом сложные структуры, такие как координаты рамок, должны быть представлены в формате JSON.
Существует два способа задать файл с изображением:
- как публичный адрес в сети Интернет (прямой, без переадресации),
- включить в запрос в составе multipart/form-data.
Все ответы отправляются в формате JSON и кодировке UTF-8.
Использование примеров из документации¶
Examples in methods descriptions illustrate possible method requests and responses. To check the examples without writing code, use the
embedded API framework. To access the framework, enter in the address bar of your browser: http://<facenapi_ip>:8000/v1/docs/v1/overview.html
for the API version /v1.
Пороговая схожесть лиц при верификации и идентификации¶
Для некоторых методов необходимо задать пороговую степень схожести лиц. При верификации данное значение используется для принятия решения о совпадении или несовпадении лиц. Чем выше порог, тем меньше шансов на положительную верификацию нелегитимного человека, однако некоторые подходящие фотографии могут также не пройти верификацию. При идентификации в результаты поиска попадают только те лица, чья степень схожести с искомым лицом превышает пороговую.
Существует 4 предустановленных порога:
Strict (0.7834)
: used for applications where a chance of misidentification should be minimized. This level corresponds to False Accept Rate (FAR) of 1e-5 on our test dataset.Medium (0.6616)
: balances low probability of misidentification and inability to identify a valid person. Corresponds to 1e-3 FAR on our test dataset.Low (0.5690)
: used when it’s important to maximize the verification or identification rate, and misidentification does not cause severe consequences. Corresponds to 1e-1 FAR on our test dataset.None (0)
: use when you need to calculate similarity of different persons or find similar people rather than verify identity.
You can also specify your own threshold level from 0 to 1, depending on your environment and needs.
Примечание
If no threshold level is specified, it is set to the default value 0.75
.
Разбиение по страницам¶
Некоторые методы (такие как GET /faces/
и GET /meta/
) могут возвращать тысячи, если не сотни тысяч результатов. Для того чтобы избежать связанных с этим проблем, Сервер возвращает результаты с разбиением по страницам.
Методы, поддерживающие разбиение по страницам, возвращают в дополнение к результатам еще 2 параметра:
prev_page
: адрес предыдущей страницы (содержит только путь метода и указатель предыдущей порции результатов).next_page
: адрес следующей страницы (содержит только путь метода и указатель следующей порции результатов).
Таким образом, если метод GET http://<facenapi_ip>:8000/v0/faces/
вернул параметр next_page
со значением /v0/faces/?max_id=12345
, для получения следующей порции результатов необходим запрос GET http://<facenapi_ip:8000/v0/faces/?max_id=12345
.
Ограничения¶
FindFace Enterprise Server SDK imposes the following limits.
Параметр | Значение |
---|---|
Формат изображения | JPEG, PNG, WEBP |
Максимальный размер файла | 10 MБ |
Минимальный размер лица | 50x50 пикселей |
Максимальное количество лиц на изображении | Неограничено |
В дополнение к этому, URL изображения должен быть публичным (не требующим авторизации) и прямым (без перенаправлений).
Сообщения об ошибках¶
Если метод выполнить не удается, Сервер возвращает ответ с кодом HTTP, отличном от 200, а также тело ответа в формате JSON, содержащее описание ошибки. Тело ответа всегда содержит хотя бы 2 поля — code
и status
:
code
— это код ошибки, который может быть использован для автоматического преобразования;reason
— это описание ошибки, предназначенное для прочтения человеком, а не для автоматического преобразования.
Распространенные коды ошибок представлены в таблице ниже:
Код ошибки | Описание |
---|---|
AUTH_FAILED |
Неверный токен авторизации или токен не был предоставлен. |
BAD_PARAM |
Некоторые параметры метода недействительны. Данный тип ответа содержит дополнительные атрибуты параметр и значение для описания ошибочных параметров. |
MALFORMED_JSON |
Тело запроса содержит неверно сформированный JSON. |
SERVICE_UNAVAILABLE |
Запрос не может быть обработан из-за недоступности некоторых компонентов Сервера. |