Общие методы¶
В этом разделе:
- Метод /detect POST
- Метод /verify POST
- Метод /identify POST
- Метод /face POST
- Метод /face/id/<id> GET
- Метод /face/id/<id> PUT
- Метод /face/id/<id> DELETE
- Метод /face/meta/<meta> GET
- Метод /faces GET
- Метод /faces/gallery/<gallery> GET
- Метод /meta GET
- Метод /galleries GET
- Метод /galleries/<gallery> POST
- Метод /galleries/<gallery> DELETE
- Метод /docs GET
- Метод /docs/<version> GET
- Метод /person/id/<id> GET
- Метод /history/search POST
Метод /detect POST¶
Данный метод служит для обнаружения лица на изображении. Вы можете задать изображение в виде файла с составным содержимым (multipart/form-data) или предоставить ссылку на изображение в сети Интернет.
Параметры:
photo
: загруженная фотография или публичный URL фотографии.gender
: если true, возвращает информацию о полеage
: если true, возвращает информацию о возрастеemotions
: если true, возвращает инфомацию об эмоциях
Возвращает:
- Список координат рамок вокруг обнаруженных лиц.
Пример
Запрос
POST /v1/detect/ HTTP/1.1
Host: 192.168.113.76:8000
Connection:close
Authorization: Token BpdNA6eaUlN9bPhXVSK1r92_SFOODPOU
Content-Type: application/json
Content-Length: 108
{
"photo": "https://static.findface.pro/sample.jpg",
"emotions": true,
"gender": true,
"age": true
}
Ответ
HTTP/1.1 200 OK
Date: Thu, 06 Apr 2017 12:38:40 GMT
Server: TornadoServer/4.4.2
Content-Length: 120
Content-Type: application/json; charset=UTF-8
{
"faces": [
{
"age": 26,
"emotions": [
"neutral",
"sad"
],
"gender": "female",
"x1": 595,
"x2": 812,
"y1": 127,
"y2": 344
}
]
}
Метод /verify POST¶
Данный метод сравнивает две фотографии, проверяя, принадлежит ли изображенное на них лицо одному и тому же человеку, и возвращает степень схожести двух лиц. Дополнительно степень схожести может сравниваться с заданным пороговым значением для принятия однозначного решения о совпадении лиц.
В случае если требуется однозначное решение о совпадении лиц, на Сервер необходимо передать ненулевое значение параметра threshold
. Вы можете использовать одно из 3-х предустановленных значений: strict
, medium
или low
. Вы также можете задать собственное пороговое значение.
В случае если нужно просто вычислить степень схожести 2-х лиц, а не верифицировать идентичность, передайте параметр threshold
со значением none
.
Примечание
Если параметр threshold
не передан, его значение по умолчанию устанавливается равным 0.75
.
Совет
При необходимости свяжитесь с нашими специалистами для подбора оптимального порогового значения для вашей системы.
Параметры:
photo1
: первая загруженная фотография или публичный URL фотографии.photo2
: вторая загруженная фотография или публичный URL фотографии.bbox1
[опционально]: массив рамок с лицами на первом фото, которые нужно сравнить.bbox2
[опционально]: массив рамок с лицами на втором фото, которые нужно сравнить.threshold
[опционально]: пороговая степень схожести лиц для принятия положительного решения о совпадении. Задайте значение от 0 до 1 или используйте предустановленный порог: «strict» (высокий), «medium» (средний), «low» (низкий, установлен по умолчанию), «none» (не задан). По умолчанию сравнение выполняется при 0.75.mf_selector
[опционально]: задает поведение Сервера при наличии нескольких лиц на фотографии. Возможные значенияmf_selector
:"reject"
: возвращает ошибку, если хотя бы на одной из фотографий присутствует более одного лица."biggest"
[по умолчанию]: проверяет самое большое лицо на фотографии."all"
: проверяет схожесть всех лиц, обнаруженных на обеих фотографиях.
Примечание
Параметры
bbox1
иbbox2
отменяют значение этого параметра.
Возвращает:
- Результат верификации: совпадает или не совпадает. Результат возвращается, если задано пороговое значение верификации. При наличии нескольких лиц на фотографиях результат указывается как для каждой пары лиц, так и на уровне фотографий. На уровне фотографий результат верификации будет положительным, если каждая пара лиц на них совпадает.
- Координаты рамок с лицами на фотографиях.
- Вероятность совпадения (степень схожести) лиц от 0 до 1.
Пример
Запрос
POST /v0/verify/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"photo1": "http://static.findface.pro/sample.jpg",
"photo2": "http://static.findface.pro/sample2.jpg"
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": [
{
"bbox1": {
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
},
"bbox2": {
"x1": 78,
"x2": 185,
"y1": 114,
"y2": 222
},
"confidence": 0.4206026792526245,
"verified": true
}
],
"verified": true
}
Метод /identify POST¶
Данный метод используется для поиска лица в базе биометрических данных и возвращает выборку лиц, если степень их схожести с искомым выше определенного порогового значения.
Параметры:
photo
: загруженная фотография или публичный URL фотографии.x1, y1, x2, y2
[опционально]: координаты прямоугольника на фотографии, внутри которого находится искомое лицо(а).threshold
[опционально]: пороговая степень схожести лиц для принятия положительного решения о совпадении. Задайте значение от 0 до 1 или используйте предустановленный порог: «strict» (высокий), «medium» (средний), «low» (низкий, установлен по умолчанию), «none» (не задан). По умолчанию сравнение выполняется при 0.75.n
[опционально]: максимальное число лиц в выборке, одно по умолчанию.strict
[опционально]: задает поведение Сервера на случай, если один или несколько шардовtntapi
недоступны. Данный параметр имеет приоритет над параметромtntapi_ignore_search_errors
в файле конфигурацииfindface-facenapi
.True
: возвращает ошибку, если некоторые шардыtntapi
недоступны.False
[по умолчанию]: Сервер использует доступные шардыtntapi
для получения результатов идентификации лица и указывает в ответе отношение количества доступных шардовtntapi
к их общему количеству в заголовкеX-Live-Servers
.
mf_selector
[optional]: задает поведение Сервера при наличии нескольких лиц на фотографии или внутри заданного прямоугольника. Возможные значения:"reject"
: возвращает ошибку, если хотя бы на одной из фотографий присутствует более одного лица."biggest"
[по умолчанию]: поиск по базе данных выполняется для самого крупного лица на фотографии."all"
: поиск по базе данных выполняется по всем лицам на фотографии.
Возвращает:
- Координаты рамок с лицами, найденными на фотографии. Для каждого набора координат возвращается массив схожих лиц из базы биометрических данных вместе с вероятностью совпадения от 0 до 1.
Пример
Запрос
POST /v0/identify/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"n": 10,
"photo": "http://static.findface.pro/sample.jpg"
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": {
"[419, 236, 345, 311]": [
{
"confidence": 1,
"face": {
"galleries": ["default", "ppl"]
"id": 316275,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-07-01T12:18:27.477653",
"x1": 236,
"x2": 311,
"y1": 345,
"y2": 419
}
},
{
"confidence": 0.723975,
"face": {
"galleries": ["default", "ppl"]
"id": 316283,
"meta": "Sam Berry",
"photo": "http://test.flexify.io/img/sample2.jpg",
"photo_hash": "9b1dd93259fe87df122cd678ce95b9f9",
"timestamp": "2016-07-01T13:19:36.376548",
"x1": 78,
"x2": 185,
"y1": 114,
"y2": 222
}
}
]
}
}
Метод /face POST¶
Данный метод обрабатывает загруженное изображение или изображение в сети Интернет, обнаруживает на нем лица и добавляет их вместе с векторами признаков в базу биометрических данных. Если на изображении несколько лиц, то по умолчанию в базу данных добавляется только самое крупное. Вместе с лицом вы также можете добавить метаданные, которые являются уникальными для его обладателя, например, идентификатор или имя. Не рекомендуется назначать одинаковые метаданные разным людям. При необходимости вы можете указать имя галереи, в которую нужно добавить лицо помимо галереи по умолчанию.
Параметры:
photo
: загруженная фотография или публичный URL фотографии.meta
[опционально]: пользовательские метаданные.bbox
[опционально]: массив рамок, содержащих лица на изображении.mf_selector
[опционально]: задает поведение Сервера при наличии нескольких лиц на фотографии или внутри заданного прямоугольника. Возможные значения:"reject"
: возвращает ошибку, если хотя бы на одной из фотографий присутствует более одного лица."biggest"
[по умолчанию]: проверяет самое большое лицо на фотографии."all"
: добавляет все лица, обнаруженные на фотографии. Имейте в виду, что в этом случае метаданные будут одинаковыми для всех лиц.
galleries
[опционально]: список имен галерей, в которые необходимо добавить лицо.cam_id
[опционально]: UUID видеокамеры, от которой пришло изображение лица.
Возвращает:
- Представление данных добавленного лица в JSON или ошибку при добавлении.
- В случае если на изображении было обнаружено несколько лиц и значение
mf_selector="reject"
, метод возвращает код ошибки400
(Bad Request
), а также список координат рамок для каждого обнаруженного лица.
Пример №1
Запрос
POST /v0/face/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"galleries": ["gal1", "niceppl"]
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 06:04:02 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: [length]
{
"results": [
{
"galleries": ["default", "gal1", "niceppl"]
"id": 2334,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:11:29.425339",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
}
]
}
Пример №2
Запрос
POST /v0/face/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"mf_selector": "reject",
"photo": "http://static.findface.pro/sample-multiface.jpg"
}
Ответ
HTTP/1.1 400 Bad Request
Date: Mon, 13 Jun 2016 06:04:02 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: [length]
{
"code": 400,
"faces": [
{
"x1": 1952,
"x2": 2137,
"y1": 838,
"y2": 1023
},
{
"x1": 1766,
"x2": 1952,
"y1": 1312,
"y2": 1498
},
{
"x1": 1385,
"x2": 1540,
"y1": 939,
"y2": 1094
},
{
"x1": 2452,
"x2": 2607,
"y1": 664,
"y2": 818
},
{
"x1": 1609,
"x2": 1764,
"y1": 767,
"y2": 922
}
],
"reason": "Too many faces: 5"
}
Метод /face/id/<id> GET¶
Данный метод возвращает подробную информацию о лице с заданным id.
Параметры:
- Отсутствуют.
Возвращает:
- Представление данных лица с определенным id в JSON.
Пример
Запрос
GET /v0/face/id/2333/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"galleries": ["default", "ppl"]
"id": 2333,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
}
Метод /face/id/<id> PUT¶
Данный метод используется для изменения значений полей объекта лицо
с заданным id.
Параметры:
meta
: новые метаданные.person_id
: уникальный идентификатор персоны в базе данных.galleries
: словарь JSON с одной парой ключ-значение. Вы можете добавить, удалить или полностью изменить список пользовательских галерей, в которых хранится лицо:{"add":["list","of","galleries"]}, {"del":["list","of","galleries"]}, {"set":["list","of","galleries"]}
.
Возвращает:
- Представление обновленных данных лица в JSON.
Пример
Запрос
PUT /v0/face/id/5/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"meta": "Sam Berry #2"
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"id": 2333,
"meta": "Sam Berry #2",
"photo": "http://static.findface.pro/sample2.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
}
Метод /face/id/<id> DELETE¶
Данный метод удаляет лицо с заданным id.
Параметры:
- Отсутствуют.
Возвращает:
- HTTP 204 No Content в случае успеха или причину ошибки.
Пример
Запрос
DELETE /v0/face/id/2332/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token ca7916cdac260628c411cb5d895dd566
Content-Length: 0
Ответ
HTTP/1.1 204 No Content
Метод /face/meta/<meta> GET¶
Возвращает список лиц с заданными метаданными. Имейте в виду, что данный метод чувствителен к регистру. Строка с метаданными должна быть в кодировке URL. Пробелы между словами в метаданных должны быть закодированы как %20
.
Параметры:
- Отсутствуют.
Возвращает:
- Возвращает список лиц с заданными метаданными.
Пример
Запрос
GET /v0/face/meta/Sam%20Berry/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": [
{
"galleries": ["default", "ppl"],
"id": 2333,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
},
{
"galleries": ["default", "ppl"],
"id": 2378,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample2.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 46,
"x2": 502,
"y1": 472,
"y2": 789
}
]
}
Метод /faces GET¶
Параметры:
- Отсутствуют.
Возвращает:
- Данный метод возвращает список всех лиц в базе биометрических данных.
Пример
Запрос
GET /v0/faces/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": [
{
"galleries": ["default", "ppl"]
"id": 2333,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
},
{
"galleries": ["default", "ppl"]
"id": 2335,
"meta": "",
"photo": "http://static.findface.pro/sample2.jpg",
"photo_hash": "9879efb38d2dae550460c9edb6f36982",
"timestamp": "2016-06-13T11:34:57.275394",
"x1": 8,
"x2": 152,
"y1": 406,
"y2": 550
}
]
}
Метод /faces/gallery/<gallery> GET¶
Возвращает список всех лиц в базе данных.
Метод /meta GET¶
Данный метод возвращает все уникальные строки с метаданными, хранящимися в базе данных. Для каждой строки возвращается одно из связанных с ней лиц. Для того чтобы получить все лица, связанные с той или иной строкой, используйте метод GET /v0/face/meta/<meta>
.
Параметры:
- Отсутствуют.
Возвращает:
- Список объектов, содержащих уникальные строки с метаданными, количество лиц, связанных с той или иной строкой, JSON-представление данных первого лица, связанного со строкой.
Пример
Запрос
GET /v0/meta/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": [
{
"count": 1,
"face": {
"galleries": ["default", "ppl"]
"id": 2333,
"meta": "Sam Berry",
"photo": "http://static.findface.pro/sample.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
},
"meta": "Sam Berry"
},
{
"galleries": ["default", "ppl"]
"count": 15,
"face": {
"id": 2563,
"meta": "Angelina Jolie",
"photo": "http://static.findface.pro/sample2.jpg",
"photo_hash": "dc7ac54590729669ca869a18d92cd05e",
"timestamp": "2016-06-13T11:06:42.075754",
"x1": 225,
"x2": 307,
"y1": 345,
"y2": 428
},
"meta": "Angelina Jolie"
}
]
}
Метод /galleries GET¶
Данный метод возвращает список всех существующих галерей в базе данных.
Возвращает:
- Словарь JSON со списком имен (id) галерей.
Пример
Запрос
GET /v0/galleries/ HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results": [
"default",
"test"
"57bd75f941741d36ab4614a0",
"57bd76a241741d377bf881ac",
]
}
Метод /galleries/<gallery> POST¶
Данный метод создает новую галерею с заданным именем. Имя галереи может содержать латинские буквы, числа, знак подчеркивания и минус ([a-zA-Z0-9_-]+) и не может быть длиннее 48 символов.
Параметры:
Отсутствуют.
Пример
Запрос
POST /v0/galleries/testgal HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Ответ
HTTP/1.1 201 Created
Date: Mon, 13 Jun 2016 06:04:02 GMT
Метод /galleries/<gallery> DELETE¶
Данный метод удаляет галерею и все лица в ней.
Возвращает:
- HTTP 204 No content.
Пример
Запрос
DELETE /v0/galleries/niceppl HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Length: 0
Ответ
HTTP/1.1 204 No Content
Метод /docs GET¶
Данный метод возвращает список всех задокументированных версий API. Доступен без авторизации.
Метод /docs/<version> GET¶
Данный метод возвращает документацию к заданной версии API. Доступен без авторизации.
Метод /person/id/<id> GET¶
Параметры:
- Отсутствуют.
Возвращает:
- Представление данных человека с заданным
person_id
в JSON.
Пример
Запрос
GET /person/history/id/2001 HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"cam_ids": [1, 25, 26, 27],
"start": "2016-06-13T11:00:00.000000",
"end": "2016-06-14T11:00:00.000000"
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"results":
[
{
"person_id": 2001,
"face_id": 240344,
"cam_id": 25,
"meta": "Sam Berry",
"screenshot":"https://static.findface.pro/57726179d6946f02f3763824/dc7ac54590729669ca869a18d92cd05e_thumb.j
pg",
"timestamp": "2016-06-13T11:06:42.075754",
},
{
"person_id": 2001,
"face_id": 240422,
"cam_id": 25,
"meta": "Sam Berry",
"screenshot": "https://static.findface.pro/57726179
d6946f02f3763824/dc7ac54590729669ca869a18d92cd05e_thumb.j
pg",
"timestamp": "2016-06-13T11:08:44.073452",
}
]
}
Метод /history/search POST¶
Данный метод возвращает все события по видеокамере(ам), удовлетворяющие заданным условиям.
Параметры:
"person_id"
[опционально]: значение параметраperson_id
интересующего человека."cam_id"
[опционально]: массив id видеокамер."start"
[опционально]: время начала событий в формате ISO8601."end"
[опционально]: время конца событий в формате ISO8601."friend"
[опционально]: является ли человек «своим»."limit"
[опционально]: количество записей на странице, по умолчанию 0 — не ограничено.
Возвращает:
- Список всех событий истории.
next_page
: URL к следующей странице результатов поиска (содержит путь и указатель на следующую порцию результатов). Если такого поля нет в ответе, значит, была выведена последняя страница.
Пример
Запрос
POST /v0/history/search HTTP/1.1
Host: 127.0.0.1
Authorization: Token e93437ccdae66d57a45a5c6d9aa7602e
Content-Type: application/json
Content-Length: [length]
{
"limit": 2,
}
Ответ
HTTP/1.1 200 OK
Date: Mon, 12 Oct 2016 12:23:56 GMT
Content-Type: application/json
Content-Length: [length]
{
"next_page": "/v0/history/search?max_id=4",
"results":[
{
"friend":false,
"meta":"",
"photo_hash":"9fda49f2444f93c33ad8aa914e20e53b",
"cam_id":"12345678123456781234567812345678",
"person_id":8,
"timestamp":"2016-10-11T14:36:27.450000",
"photo":"",
"id":20146,
"y1":77,
"x1":285,
"x2":552,
"y2":345
},
{
"friend":false,
"meta":"",
"photo_hash":"dc7ac54590729669ca869a18d92cd05e",
"cam_id":"12345678123456781234567812345678",
"person_id":8,
"timesamp":"2016-10-12T12:57:07.509000",
"photo":"",
"id":20147,
"x1":236,
"y1":345,
"x2":311,
"y2":419
}
]
}