Detect

Данный метод позволяет найти различные объекты на фотографии

Запрос

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


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

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


ПровайдерЗначение oauth_providerПолучение токена
Mail.Rumcs

Смотрите в статье


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


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

Возможные значения mode:

 

ПараметрЗначение
object

искать на изображении объекты

scene

искать на изображении сцены

car_number

искать на изображении номера машин

multiobject

искать на изображении мультиобъекты — объекты и все множество боксов всех найденных объектов


mode — может содержать один или несколько режимов. Например:


"mode":["object"] <-- искать только объекты
"mode":["scene"] <-- искать только сцены
"mode":["object","scene"] <-- искать сцены и объекты

image_meta

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

Изображения передаются в теле запроса, значения поля name должны соответствовать переданным в images. Максимальное количество изображений в одном запросе равняется 100. Максимальный размер каждого изображения не должен превышать 4 МБ.

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



POST /api/v1/objects/detect?oauth_provider=mcs&oauth_token=123 HTTP/1.1

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryfCqTBHeLZlsicvMp

------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="file_0"; filename=""
Content-Type: image/jpeg

000000000000000000000000000
000000000000000000000000000
000000000000000000000000000
------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="file_1"; filename=""
Content-Type: image/jpeg
#f0f0f0
111111111111111111111111111
111111111111111111111111111
111111111111111111111111111
------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="meta"

{"mode":["object","scene"],"images":[{"name":"file_0"},{"name":"file_1"}]}
------WebKitFormBoundaryfCqTBHeLZlsicvMp--



Ответ

ПараметрТипЗначение
statusint200 в случае успеха, иначе описание ошибки будет в body
bodystring | response тело ответа

response

ПараметрТипЗначение
scene_labels[]objectмассив ответов для каждого файла со сценами (может отсутствовать) 
object_labels []objectмассив ответов для каждого файла с объектами (может отсутствовать)

object

ПараметрТипЗначение
statusenumрезультат выполнения
errorstringтекстовое описание ошибки (optional)
namestringимя файла для сопоставления файлов в запросе и ответе
labels

[]label

список объектов (меток), найденных на изображении

status

ПараметрЗначение
0успешно
1перманентная ошибка
2временная ошибка

label

ПараметрЗначение
eng

метка (название) для найденного объекта на английском

rus

метка (название) найденного объекта на русском

eng_categories

список категорий (каждая категория включает в себя множество меток) на английском (optional)

rus_categories

список категорий (каждая категория включает в себя множество меток) на русском (optional)

prob

степень уверенности в том, что на изображении именно этот объект

coord

координаты найденного объекта (optional)


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


{

"status":200,

"body":

{

"object_labels":[

{

"status":0,

"name":"file_0",

"labels":[

{

"eng":"Person",

"rus":"Человек",

"eng_categories":[],

"rus_categories":[],

"prob":0.6542,

"coord":[0,63,518,656]

},

{

"eng":"Face",

"rus":"Лицо",

"eng_categories":[],

"rus_categories":[],

"prob":0.6841,

"coord":[0,63,518,571]

}

]

}

],

"scene_labels":[

{

"name":"file_0",

"status":0,

"labels":[

{

"eng":"Beauty Salon",

"rus":"Салон красоты",

"eng_categories":[],

"rus_categories":[],

"prob":0.3457

},

{

"eng":"Stage",

"rus":"Сцена",

"eng_categories":["Concerts"],

"rus_categories":["Концерты"],

"prob":0.2651

}

]

}

]

},

"htmlencoded":false,

"last_modified":0

}

Пример ответа, когда одна из картинок не обработалась:


{

"status":200,

"body":

{

"object_labels":[

{

"status":2,

"error":"internal error: image crc mismatch",

"name":"file_0"

},

{

"status":0,

"name":"file_1",

"labels":[

{

"eng":"Person",

"rus":"Человек",

"eng_categories":[],

"rus_categories":[],

"prob":0.6542,

"coord":[0,63,518,656]

}

}

]

},

"htmlencoded":false,

"last_modified":0

}

Пример ответа, когда не удалось выполнить запрос:


{

"status":500,

"body":"Internal

Server Error",

"htmlencoded":false,

"last_modified":0

}

Пример Python:

python examples/python/smarty.py \
 -u "https://smarty.mail.ru/api/v1/objects/detect?oauth_provider=mcs&oauth_token=e50b000614a371ce99c01a80a4558d8ed93b313737363830" \
 -p examples/friends1.jpg \
 --meta '{"mode":["scene"]}' \
 -v