VK Cloud logo
Обновлена 31 октября 2023 г. в 06:09

Распознавание лиц

HOST: https://smarty.mail.ru

Для распознавания лиц используются четыре метода API:

  • set (/api/v1/persons/set);
  • recognize (/api/v1/persons/recognize);
  • delete (/api/v1/persons/delete);
  • truncate (/api/v1/persons/truncate).

Рассмотрим каждый из них подробнее.

Set

Данный метод позволяет установить связь между заданной фотографией и конкретным person_id.

Запрос

Авторизационные данные передаются в строке запроса:

Параметр
Тип
Значение
oauth_token
string
 OAuth2 access token (required non-empty)
oauth_provider
string
Провайдер OAuth2 (required non-empty)

Поддерживаемые провайдеры OAuth2:

Провайдер
Значение oauth_provider
Получение токена
VK Cloud
mcs
Смотрите в статье

Параметры запроса передаются в формате JSON в теле запроса с name="meta":

Параметр
Тип
Значение
space
string
Имена файлов для сопоставления файлов в запросе и ответе (required non-empty)
images
[]image_meta
ID, сопоставляемый персоне на фото (required non-empty)

Параметр space используется для избежания пересечений по person. Таким образом, person1 из space 0 и person1 из space 1 разные. Для приложений, решающих различные задачи, имеет смысл использовать различные значения space.

Клиент может иметь до 10 различных space. Значения space изменяются от 0 до 9. В случае превышения лимита вернется ошибка.

Параметры image_meta:

Параметр
Тип
Значение
name
string
Имена файлов для сопоставления файлов в запросе и ответе (required non-empty)
person_id
int
ID, сопоставляемый персоне на фото (required non-empty)

Изображения передаются в теле запроса, значения поля name должны соответствовать переданным в images.

Пример запроса

curl -X 'POST' "https://smarty.mail.ru/api/v1/persons/set?oauth_token=<ваш токен>&oauth_provider=mcs"      \  -H 'accept: application/json' \  -H 'Content-Type: multipart/form-data' \  -F 'file=@persons_set_ok.jpg;type=image/jpeg' \  -F 'meta={  "space": "5",  "images": [    {      "name": "file",      "person_id": 1    }  ]}'

Ответ

Параметр
Тип
Значение
status
int
200 в случае успешного взаимодействия с серверами Vision
body
response
Тело ответа

Параметры response:

Параметр
Тип
Значение
objects
[]object
массив ответов для каждого файла

Параметры object:

Параметр
Тип
Значение
status
enum
Результат выполнения:
- 0 — успешно;
- 1 — массив найденных типов документов на странице;
- 2 — временная ошибка
error
string
Текстовое описание ошибки (optional)
name
string
Имя файла для сопоставления файлов в запросе и ответе

Пример ответа

{  "status": 200,  "body": {    "objects": [      {        "status": 0,        "name": "file"      }    ]  },  "htmlencoded": false,  "last_modified": 0}

Дополнительные примеры

Recognize

Данный метод позволяет распознать person по заданной фотографии. В случае, если совпадение не найдено, будет добавлен новый person.

Запрос

Авторизационные данные передаются в строке запроса:

Параметр
Тип
Значение
oauth_token
string
OAuth2 access token (required non-empty)
oauth_provider
string
Провайдер OAuth2 (required non-empty)

Поддерживаемые провайдеры OAuth2:

Провайдер
Значение oauth_provider
Получение токена
VK Cloud
mcs
Смотрите в статье

Параметры запроса передаются в формате JSON в теле запроса с name="meta":

Параметр
Тип
По умолчанию
Значение
space
string
--
Числовой идентификатор, используемый для избежания пересечений по персонам (required non-empty)
create_new
bool
false
Добавлять ли новый person, если не было найдено совпадений
images
[]image_meta
--
Метаданные передаваемых изображений (required non-empty)
update_embedding
bool
true
Обновлять ли embedding для новой персоны

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

Описание параметра space смотрите в разделе метода Set.

Параметры image_meta:

Параметр
Тип
Значение
name
string
Имена файлов для сопоставления файлов в запросе и ответе (required non-empty)

Изображения передаются в теле запроса, значения поля name должны соответствовать переданным в images.

Пример запроса

curl -X 'POST' \  'https://smarty.mail.ru/api/v1/persons/recognize?oauth_token=<ваш токен>&oauth_provider=mcs' \  -H 'accept: application/json' \  -H 'Content-Type: multipart/form-data' \  -F 'file=@persons_recognize_ok_person_in_db.jpg;type=image/jpeg' \  -F 'meta={  "space": "5",  "create_new": false,  "images": [    {      "name": "file"    }  ]}'

Ответ

Параметр
Тип
Значение
status
int
200 в случае успешного взаимодействия с серверами Vision
body
response
Тело ответа

Параметры response:

Параметр
Тип
Значение
objects
[]object
Массив ответов для каждого файла
aliases_changed
bool
Изменились ли алиасы

Параметры object:

Параметр
Тип
Значение
status
enum
Результат выполнения:
- 0 — успешно;
- 1 — перманентная ошибка;
- 2 — временная ошибка
error
string
Текстовое описание ошибки (optional)
name
string
Имя файла для сопоставления файлов в запросе и ответе
persons
[]person
Список персон, найденных на фотографии

Параметры person:

Параметр
Тип
Значение
tag
string
Идентификатор найденной персоны
coord
[]int
Координаты найденного лица [left x, top y, right x, bottom y]
aliases
[]string
Массив похожих персон (optional)
confidence
float
Степень уверенности детектора лиц в том, что найденное изображение является лицом (от 0 до 1)
similarity
float
Степень похожести найденного лица с персоной в базе
awesomeness
float
Условная «крутость» фотографии (от 0 до 1)

Только для второй модели:

Параметр
Тип
Значение
sex
string
Пол персоны ["female", "male"]
age
float
Возраст персоны
emotion
string
Эмоции персоны: "Neutral", "Happiness", "Sadness", "Surprise", "Fear", "Disgust", "Anger", "Contempt"
valence
float
Уровень одобрения человеком ситуации, в которой он находится [-1;1]
arousal
float
Уровень вовлеченности человека [-1 - сонный, не активный человек; 1 - активный человек]

Значение tag может равняться undefined в случае, если значение create_new в запросе равнялось false, и по предоставленному изображению в базе не был найден соответствующий person.

Пример ответа

{  "status": 200,  "body": {    "objects": [      {        "status": 0,        "name": "file",        "persons": [          {            "tag": "person1",            "coord": [              567,              376,              992,              931            ],            "confidence": 0.99917,            "awesomeness": 0.4894,            "similarity": 0.9721,            "sex": "male",            "emotion": "Neutral",            "age": 34,            "valence": -0.3236,            "arousal": 0.185,            "frontality": 0.8921,            "visibility": 0.9985          }        ]      }    ]  },  "htmlencoded": false,  "last_modified": 0}

Дополнительные примеры

Delete

Данный метод позволяет удалить связь между фотографией и person_id.

Запрос

Авторизационные данные передаются в строке запроса:

Параметр
Тип
Значение
oauth_token
string
OAuth2 access token (required non-empty)
oauth_provider
string
Провайдер OAuth2 (required non-empty)

Поддерживаемые провайдеры OAuth2:

Провайдер
Значение oauth_provider
Получение токена
VK Cloud
mcs
Смотрите в статье

Параметры запроса передаются в формате JSON в теле запроса с name="meta":

Параметр
Тип
Значение
space
string
числовой идентификатор, используемый для избежания пересечений по персонам (required non-empty)
images
[]image_meta
метаданные передаваемых изображений (required non-empty)

Описание параметра space смотрите в разделе метода Set.

Параметры image_meta:

Параметр
Тип
Значение
name
string
Имена файлов для сопоставления файлов в запросе и ответе (required non-empty)
person_id
int
ID, сопоставляемый персоне на фото (required non-empty)

Изображения передаются в теле запроса, значения поля name должны соответствовать переданным в images.

Пример запроса

curl -X 'POST' \  'https://smarty.mail.ru/api/v1/persons/delete?oauth_token=<ваш токен>&oauth_provider=mcs' \  -H 'accept: application/json' \  -H 'Content-Type: multipart/form-data' \  -F 'meta={  "space": "5",  "images": [    {      "name": "aaa",      "person_id": 1    }  ]}'

Ответ

Параметр
Тип
Значение
status
int
200 в случае успешного взаимодействия с серверами Vision
body
response
Тело ответа

Параметры response:

Параметр
Тип
Значение
objects
[]object
Массив ответов для каждого файла

Параметры object:

Параметр
Тип
Значение
status
enum
Результат выполнения:
- 0 — успешно;
- 1 — перманентная ошибка;
- 2 — временная ошибка
error
string
Текстовое описание ошибки (optional)
name
string
Имя файла для сопоставления файлов в запросе и ответе

Пример ответа

{  "status": 200,  "body": {    "objects": [      {        "status": 0,        "name": "aaa"      }    ]  },  "htmlencoded": false,  "last_modified": 0}

Дополнительные примеры

Truncate

Данный метод позволяет полностью очистить space.

Запрос

Авторизационные данные передаются в строке запроса:

Параметр
Тип
Значение
oauth_token
string
OAuth2 access token (required non-empty)
oauth_provider
string
Провайдер OAuth2 (required non-empty)

Поддерживаемые провайдеры OAuth2:

Провайдер
Значение oauth_provider
Получение токена
VK Cloud
mcs
Смотрите в статье

Параметры запроса передаются в формате JSON в теле запроса с name="meta":

Параметр
Тип
Значение
space
string
Числовой идентификатор, используемый для избежания пересечений по персонам (required non-empty)

Описание параметра space смотрите в разделе метода Set.

Данный запрос не требует передачи изображений.

Пример запроса

curl -X 'POST' \  'https://smarty.mail.ru/api/v1/persons/truncate?oauth_token=<ваш токен>&oauth_provider=mcs' \  -H 'accept: application/json' \  -H 'Content-Type: multipart/form-data' \  -F 'meta={  "space": "5"}'

Ответ

Параметр
Тип
Значение
status
int
200 в случае успешного взаимодействия с серверами Vision
body
response
Тело ответа

Пример ответа

{  "status": 200,  "body": {},  "htmlencoded": false,  "last_modified": 0}

Дополнительные примеры