Методы для анализа и распознавания биометрических данных
В этом разделе:
Обнаружение лица на изображении
/detect POST
Данный метод обнаруживает лицо на предоставленном изображении и возвращает координаты прямоугольной рамки вокруг лица (т. н. bbox) и ориентацию лица.
Примечание
Обнаружение лица выполняется компонентом findface-extraction-api
. Таким образом, компонент findface-sf-api
форматирует ваш исходный запрос и перенаправляет его в компонент findface-extraction-api
для непосредственной обработки.
Важно
Обязательно передайте в query string метода активированный параметр facen=on
, чтобы возвращенный результат был сохранен в memcached
. Для извлечения результата распознавания из memcached
используйте метод /detect GET
.
Совет
Для того чтобы активировать параметр типа Boolean (gender
, age
и т. д.), подойдет любая из строк 1
, yes
, true
или on
, регистр не имеет значения.
Важно
Чтобы включить распознавание атрибутов лица, можно использовать как новые (предпочтительно), так и старые параметры API (подробное описание вы найдете в параметрах query string). Старый API позволяет распознавать пол, возраст, эмоции, в то время как новый API обеспечивает распознавание пола, возраста, эмоций, бороды и очков. Каждый атрибут лица (пол, возраст, эмоции, борода или очки) может быть упомянут только один раз в запросе, в новом или старом формате API.
Параметры query string:
"detector"
: детектор лиц, который будет применен к изображению. Может принимать значениеnnd
(обычный детектор) илиnormalized
(детектор принимает нормализованное изображение лица, при этом стадия обнаружения лица пропускается)."gender"
: логический тип, включает распознавание пола (старый API)."age"
: логический тип, включает распознавание возраста (старый API)."emotions"
: логический тип, включает распознавание эмоций (старый API)."facen"
: логический тип, в запросе кfindface-extraction-api
будут включены параметрыneed_facen
(извлечь вектор признаков) иneed_normalized
(получить нормализованное изображение лица). При этом полный ответfindface-extraction-api
будет сохранен вmemcached
с временным UUID, который будет записан в полеid
ответа."autorotate"
: логический тип, автоматически поворачивает исходное изображение в 4-х различных направлениях и возвращает лица, обнаруженные в каждом из них."return_facen"
: логический тип, возвращает в ответе вектор признаков лица. Для этого в файле конфигурацииfindface-sf-api
также должна быть включена опцияallow-return-facen
."attribute"
: массив строк в формате["gender", "age", "emotions", "beard", "glasses3"]
, включает распознавание атрибутов лица, переданных в массиве (новый API).
Параметры в теле запроса:
Изображение в виде файла с mime-типом image/jpeg
, image/png
, image/webp
или ссылка на интернет-изображение с mime-типом text/x-url
.
Возвращает:
список координат рамок вокруг обнаруженных лиц;
временный UUID результата детекции (
id
, если был передан активный параметрfacen
);Важно
При написании кода необходимо предусмотреть проверку данного id на актуальность при обращении к нему впоследствии, поскольку со временем он становится неактуальным. В последнем случае повторите детекцию лица.
вектор признаков (если активирован
return_facen
);пол (если активирован
gender
):male
илиfemale
, со значением уверенности алгоритма в результате ("score"
);возраст (если активирован
age
): количество лет;эмоции (если активирован``emotions``): 6 базовых эмоций + нейтральная эмоция (
angry
,disgust
,fear
,happy
,sad
,surprise
,neutral
) со значением уверенности алгоритма в выражении каждой эмоции;атрибуты (если переданы): пол (
male
илиfemale
), возраст (количество лет), эмоции (преобладающая эмоция), борода (beard
илиnone
), очки (sun
,eye
илиnone
), вместе со значением уверенности алгоритма в результате;ориентация.
Примеры
Запрос №1. Одновременное использование старого и нового API
curl -i -X POST 'http://127.0.0.1:18411/v2/detect?facen=on&age=on&gender=on&emotions=on&attribute=glasses3' -H 'Content-Type: image/jpeg' --data-binary @sample.jpg
HTTP/1.1 100 Continue
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: SF:BpLnfgDs
Date: Thu, 23 May 2019 12:00:22 GMT
Content-Length: 713
{
"faces": [
{
"id": "bjj8mlhjisgjrk6hj1v0",
"bbox": { "left": 595, "top": 127, "right": 812, "bottom": 344 },
"features": {
"gender": { "gender": "FEMALE", "score": 0.9998938 },
"age": 25,
"score": -0.000696103,
"emotions": [
{ "emotion": "neutral", "score": 0.99958 },
{ "emotion": "sad", "score": 0.0004020365 },
{ "emotion": "happy", "score": 8.603454e-06 },
{ "emotion": "surprise", "score": 8.076766e-06 },
{ "emotion": "disgust", "score": 6.6535216e-07 },
{ "emotion": "angry", "score": 6.1434775e-07 },
{ "emotion": "fear", "score": 7.3372125e-10 }
],
"attributes": {
"glasses3": {
"attribute": "glasses3",
"model": "glasses3.v0",
"result": [
{ "confidence": 0.99958307, "name": "none" },
{ "confidence": 0.00033243417, "name": "eye" },
{ "confidence": 8.4465064e-05, "name": "sun" }
]
}
}
}
}
],
"orientation": 1
}
Запрос №2. Использование нового API
curl -s -X POST 'http://master:18411/v2/detect?attribute=gender' -H 'Content-Type: image/jpeg' --data-binary @pasha.jpg | jq
{
"faces": [
{
"bbox": {
"left": 1019,
"top": 1138,
"right": 1666,
"bottom": 2041
},
"features": {
"score": -0.00035252835,
"attributes": {
"gender": {
"extractor": "gender",
"model": "gender.v2",
"result": [
{
"confidence": 0.9999999,
"name": "male"
},
{
"confidence": 7.935678e-08,
"name": "female"
}
]
},
"quality": {
"extractor": "quality",
"model": "quality.v0",
"result": 0.00035252835
}
}
}
}
],
"orientation": 1
}
Извлечение результата детекции из memcached
/detect/:id GET
Данный метод служит для получения параметров обнаруженного лица, включая его вектор признаков, по временному UUID’s в memcached
.
Параметры в сегментах пути:
:id
: временный UUID обнаруженного лица вmemcached
.
Возвращает:
Представление JSON результата детекции.
Пример
Запрос
curl -i -X GET 'http://127.0.0.1:18411/v2/detect/bg2gu31jisghl6pee09g'
Ответ:
{
"bbox": { "bottom": 343, "left": 593, "right": 824, "top": 112 },
"features": {
"age": 26.096783,
"emotions": [
{ "emotion": "neutral", "score": 0.9094986 },
{ "emotion": "happy", "score": 0.11464329 },
{ "emotion": "sad", "score": 0.005675929 },
{ "emotion": "surprise", "score": -0.02556022 },
{ "emotion": "fear", "score": -0.14499822 },
{ "emotion": "angry", "score": -0.19491306 },
{ "emotion": "disgust", "score": -0.31617728 }
],
"gender": { "gender": "FEMALE", "score": -2.7309942 },
"score": -0.000696103
},
"id": "bg2gu31jisghl6pee09g"
}
Создание результата детекции из ответа findface-extraction-api
/detect/:id POST
Данный метод создает результат детекции из ответа findface-extraction-api
.
Параметры в сегментах пути:
:id
: задайте UUID, под которым в memcached будет храниться результат детекции.
Возвращает:
Пустой JSON в случае успеха.
Пример
Запрос
$ curl -i -X POST 'http://127.0.0.1:18411/v2/detect/bg2gu31jisghl6peea9g' -H 'Content-Type: application/json' --data-binary '@extapi-face.json'
Ответ:
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: jFSBuSPm
Date: Wed, 05 Dec 2018 08:08:56 GMT
Content-Length: 2
{}
Получение списка галерей
/galleries GET
Данный метод возвращает список всех существующих галерей в биометрической базе данных.
Параметры:
Отсутствуют.
Возвращает:
Словарь JSON со списком имен (name
) галерей.
Пример
Запрос
GET /v2/galleries HTTP/1.1
Host: 172.17.47.19:18411
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Feb 2018 10:11:43 GMT
Content-Length: 35
{"galleries":[{"name":"sandbox"}]}
Создание галереи в базе данных
/galleries/:gallery POST
Данный метод создает новую галерею с заданным именем.
Параметры в сегментах пути:
:gallery
: имя новой галереи. Может содержать латинские буквы, числа, знак подчеркивания и минус ([a-zA-Z0-9_-]+
) и не может быть длиннее 48 символов.
Возвращает:
Пустой JSON в случае успеха.
JSON с описанием ошибки при сбое.
Пример
Запрос
POST /v2/galleries/newone HTTP/1.1
Host: 172.17.47.19:18411
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Feb 2018 10:18:01 GMT
Content-Length: 2
{}
Получение информации о галерее
/galleries/:gallery GET
Данный метод проверяет, существует ли галерея, и возвращает количество лиц в ней.
Параметры в сегментах пути:
:gallery
: имя галереи.
Возвращает:
Словарь JSON c количеством лиц и именем галереи в случае успеха.
JSON с описанием ошибки при сбое.
Пример
Запрос
curl -i -X GET 'http://127.0.0.1:18411/v2/galleries/hello'
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: Ard3exjn
Date: Wed, 05 Dec 2018 08:17:54 GMT
Content-Length: 29
{ "faces": 123, "name": "hello" }
Удаление галереи
/galleries/:gallery DELETE
Данный метод удаляет заданную галерею и все лица в ней.
Параметры в сегментах пути:
:gallery
: имя галереи, подлежащей удалению.
Возвращает:
Пустой JSON в случае успеха.
JSON с описанием ошибки при сбое.
Пример
Запрос
DELETE /v2/galleries/newone HTTP/1.1
Host: 172.17.47.19:18411
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Feb 2018 10:18:01 GMT
Content-Length: 2
{}
Добавление лица в галерею
/galleries/:gallery/faces/:id POST
Данный метод берет обнаруженное лицо из memcached
или лицо из галереи, чтобы затем добавить его вместе с вектором признаков в указанную в параметрах query string галерею базы биометрических данных с присвоением указанного пользовательского id. Вместе с лицом вы также можете добавить метаданные, которые являются уникальными для его обладателя, например, идентификатор или имя.
Параметры в сегментах пути:
:gallery
: имя галереи, в которую добавляется лицо.:id
: постоянный идентификатор лица в галерее, uint64.
Параметры в теле запроса:
"from"
: временный UUID обнаруженного лица вmemcached
("from": "detection:<id>"
) или id лица в галерее ("from: "face:<gallery>/<id>"
)."meta"
[опционально]: метаданные, такие как имя обладателя лица, сведения об исходном изображении, дата и время детекции и т. д., словарь.
Возвращает:
Представление JSON добавленного лица в случае успеха.
Ошибка в случае неудачной попытки.
Пример
Запрос
curl -i -X POST http://127.0.0.1:18411/v2/galleries/hello/faces/123/ -H 'Content-Type: application/json' --data-binary '@-' <<EOF
{
"from": "detection:bg2gu31jisghl6pee09g",
"meta": {
"camera": "openspace",
"labels": ["foo", "bar"],
"timestamp": "1543837276"
}
}
EOF
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: SF:OSSKbJg3
Date: Wed, 05 Dec 2018 08:27:59 GMT
Content-Length: 555
{
"features": {
"age": 26.096783,
"emotions": [
{ "emotion": "neutral", "score": 0.9094986 },
{ "emotion": "happy", "score": 0.11464329 },
{ "emotion": "sad", "score": 0.005675929 },
{ "emotion": "surprise", "score": -0.02556022 },
{ "emotion": "fear", "score": -0.14499822 },
{ "emotion": "angry", "score": -0.19491306 },
{ "emotion": "disgust", "score": -0.31617728 }
],
"gender": { "gender": "FEMALE", "score": -2.7309942 },
"score": -0.000696103
},
"id": { "face": 123, "gallery": "hello" },
"meta": {
"camera": "openspace",
"labels": ["foo", "bar"],
"timestamp": "1543837276"
},
"normalized_id": "123_bg2hcupjisghl6pee0ag.png"
}
Получение информации о лице из галереи
/galleries/:gallery/faces/:id GET
Возвращает лицо из базы данных по id.
Параметры в сегментах пути:
:gallery
: имя галереи, в которой хранится лицо.:id
: идентификатор лица в галерее, uint64.
Возвращает:
Представление лица в JSON в случае успеха.
Ошибка в случае неудачной попытки.
Пример
Запрос
curl -s 'http://172.17.47.19:18411/v2/galleries/galleryname/faces/2' | jq
Ответ
{
"id": {
"gallery": "galleryname",
"face": 2
},
"features": {
"gender": {
"gender": "FEMALE",
"score": -2.6415923
},
"age": 26.04833,
"score": 0.9999999,
"emotions": [
{
"emotion": "neutral",
"score": 0.99958
},
{
"emotion": "sad",
"score": 0.0004020398
},
{
"emotion": "happy",
"score": 8.603504e-06
},
{
"emotion": "surprise",
"score": 8.076798e-06
},
{
"emotion": "disgust",
"score": 6.653509e-07
},
{
"emotion": "angry",
"score": 6.14346e-07
},
{
"emotion": "fear",
"score": 7.33713e-10
}
]
},
"meta": {
"timestamp": 2
},
"normalized_id": "2_bd323f5t8f66ph0eafp0.png"
}
Удаление лица из галереи
/galleries/:gallery/faces/:id DELETE
Удаляет лицо из базы данных по id.
Параметры в сегментах пути:
:gallery
: имя галереи, из которой удаляется лицо.:id
: идентификатор лица в галерее, uint64.
Возвращает:
Пустой JSON в случае успеха.
Ошибка в случае неудачной попытки.
Пример
Запрос
curl -s -X DELETE 'http://172.17.47.19:18411/v2/galleries/galleryname/faces/1' | jq
Ответ
{}
Обновление метаданных лица в галерее
/galleries/:gallery/faces/:id PATCH
Заменяет параметры лица в базе данных по id.
Параметры в сегментах пути:
:gallery
: имя галереи.:id
: идентификатор лица в галерее, uint64.
Параметры в теле запроса
"meta"
: новые метаданные лица, словарь.
Возвращает:
Представление данных измененного лица в JSON в случае успеха.
Ошибка в случае неудачной попытки.
Пример
Запрос
curl -s -X PATCH -H 'Content-Type: application/json' --data '{"meta":{"timestamp":2}}' 'http://172.17.47.19:18411/v2/galleries/galleryname/faces/2' | jq
Ответ
{
"id": {
"gallery": "galleryname",
"face": 2
},
"features": {
"gender": {
"gender": "FEMALE",
"score": -2.6415923
},
"age": 26.04833,
"score": 0.9999999,
"emotions": [
{
"emotion": "neutral",
"score": 0.99958
},
{
"emotion": "sad",
"score": 0.0004020398
},
{
"emotion": "happy",
"score": 8.603504e-06
},
{
"emotion": "surprise",
"score": 8.076798e-06
},
{
"emotion": "disgust",
"score": 6.653509e-07
},
{
"emotion": "angry",
"score": 6.14346e-07
},
{
"emotion": "fear",
"score": 7.33713e-10
}
]
},
"meta": {
"timestamp": 2
},
"normalized_id": "2_bd323f5t8f66ph0eafp0.png"
}
Сравнение лиц
/verify POST
Данный метод сравнивает два лица, проверяя, принадлежит ли изображенное на них лицо одному и тому же человеку, и возвращает степень уверенности алгоритма в совпадении лиц (степень схожести).
Параметры query string:
"face1"
: первое лицо, результат работы/detect POST
(хранится вmemcached
) или сохраненное в базе данных."face2"
: второе лицо, результат работы /detect POST (хранится в memcached) или сохраненное в базе данных.
Возвращает:
Степень уверенности алгоритма в совпадении лиц.
Пример
Запрос №1. Сравнение 2-х результатов детекции
curl -s 'http://172.17.47.19:18411/v2/verify?face1=detection:bd3hv4tt8f66ph0eag1g&face2=detection:bd3hv8dt8f66ph0eag2g' | jq
Ответ
{
"confidence": 0.92764723
}
Запрос №2. Сравнение результата детекции с лицом из галереи
curl -s 'http://172.17.47.19:18411/v2/verify?face1=detection:bd3hv4tt8f66ph0eag1g&face2=face:galleryname/2' | jq
Ответ
{
"confidence": 0.999996
}
Извлечение данных из галереи с использованием фильтров. Поиск лиц
/v2/galleries/:gallery/faces GET
Данный метод выполняет поиск по галерее с использованием фильтров, заданных в query string.
Параметры в сегментах пути:
:gallery
: имя галереи, по которой выполняется поиск.
Параметры query string:
?limit=
: (обязательный) максимальное количество лиц в ответе.?sort=
: порядок сортировки. Передайте одно из следующих значений:id
: в порядке возрастания id,-id
: в порядке убывания id,-confidence
: в порядке убывания схожести лиц (только в случае поиска по вектору признаков).?page=<page>
: показать следующую страницу с результатами поиска. Значение<page>
возвращается в ответе вместе с предыдущей страницей какnext_page
.?ignore_errors
: игнорировать ошибку обращения к базе данных, если поиск по галерее выполняется, когда некоторые сервера базы данных недоступны. В этом случае поиск будет выполнен с использованием доступных серверов.?meta:in:meta1=val1&meta:in:meta1=val2&...
: выбрать лицо, если строкаmeta1
в метаданных имеет одно из значенийval1
/val2
/ … и т. д. (uint64, string).?meta:gte:meta1=val1
: выбрать все лица, у которых строкаmeta1
в метаданных больше или равна значениюval1
(uint64).?meta:lte:meta1=val1
: выбрать все лица, у которых строкаmeta1
в метаданных меньше или равна значениюval1
(uint64).?id:in=value_id
: выбрать все лица сid
, равнымvalue_id
.?id:gte=value_id
: выбрать все лица сid
, большим или равнымvalue_id
.?id:lte=value_id
: выбрать все лица сid
, меньшим или равнымvalue_id
.?meta:subset:meta1=val1&meta:subset:meta1=val2&...
: выбрать лицо, если строкаmeta1
в метаданных включает в себя все значенияval1
,val2
, … и т. д. ([]string).?<id>=<confidence>
: задает вектор признаков для поиска по базе данных через параметр<id>
, а также устанавливает пороговую схожесть лиц в результатах поиска<confidence>
. Параметр<id>
может быть представлен как id лица в базе данных (face:<gallery>/<db_id>
), так и id лица, являющегося результатом детекции (метод/detect POST
) и хранящегося вmemcached
(detection:<memcached_id>
). Значение<confidence>
от 0 до 1.
Возвращает:
Массив лиц в представлении JSON. Лица в ответе по умолчанию отсортированы по id, а в случае задания вектора признаков – по убыванию степени схожести.
Формат ответа:
{
"faces": [
{
... face 1 data ...
"confidence": 0.123 // if you search for a feature vector
},
{
... face 2 data ...
"confidence": 0.123 // if you search for a feature vector
},
...
],
"next_page": "vgszk2bkexbl" // next page cursor
}
Параметр next_page
– URL-safe строка, которую нужно передать в ?page=
в следующем запросе, чтобы получить следующую страницу результатов. Разбиение по страницам доступно только при выключенной фильтрации по вектору признаков.
Запрос №1. Идентификация лица (поиск лица в галерее)
curl -s 'http://172.17.47.19:18411/v2/galleries/galleryname/faces?detection:bd3hv4tt8f66ph0eag1g=0.5&limit=1' | jq
Ответ
{
"faces": [
{
"id": {
"gallery": "galleryname",
"face": 2
},
"features": {
"gender": {
"gender": "FEMALE",
"score": -2.6415923
},
"age": 26.04833,
"score": 0.9999999,
"emotions": [
{
"emotion": "neutral",
"score": 0.99958
},
{
"emotion": "sad",
"score": 0.0004020398
},
{
"emotion": "happy",
"score": 8.603504e-06
},
{
"emotion": "surprise",
"score": 8.076798e-06
},
{
"emotion": "disgust",
"score": 6.653509e-07
},
{
"emotion": "angry",
"score": 6.14346e-07
},
{
"emotion": "fear",
"score": 7.33713e-10
}
]
},
"meta": {},
"normalized_id": "2_bd323f5t8f66ph0eafp0.png",
"confidence": 0.9999
}
],
"next_page": "There are more than 1 results, but pagination is not supported when filtering by FaceN"
}
Запрос №2. Получение списка лиц в галерее
curl -s 'http://172.17.47.19:18411/v2/galleries/galleryname/faces?limit=2' | jq
Ответ
{
"faces": [
{
"id": {
"gallery": "galleryname",
"face": 1
},
"features": {
"gender": {
"gender": "FEMALE",
"score": -2.6415923
},
"age": 26.04833,
"score": 0.9999999,
"emotions": [
{
"emotion": "neutral",
"score": 0.99958
},
{
"emotion": "sad",
"score": 0.0004020398
},
{
"emotion": "happy",
"score": 8.603504e-06
},
{
"emotion": "surprise",
"score": 8.076798e-06
},
{
"emotion": "disgust",
"score": 6.653509e-07
},
{
"emotion": "angry",
"score": 6.14346e-07
},
{
"emotion": "fear",
"score": 7.33713e-10
}
]
},
"meta": {},
"normalized_id": "1_bd321tlt8f66ph0eaflg.png"
},
{
"id": {
"gallery": "galleryname",
"face": 2
},
"features": {
"gender": {
"gender": "FEMALE",
"score": -2.6415923
},
"age": 26.04833,
"score": 0.9999999,
"emotions": [
{
"emotion": "neutral",
"score": 0.99958
},
{
"emotion": "sad",
"score": 0.0004020398
},
{
"emotion": "happy",
"score": 8.603504e-06
},
{
"emotion": "surprise",
"score": 8.076798e-06
},
{
"emotion": "disgust",
"score": 6.653509e-07
},
{
"emotion": "angry",
"score": 6.14346e-07
},
{
"emotion": "fear",
"score": 7.33713e-10
}
]
},
"meta": {},
"normalized_id": "2_bd323f5t8f66ph0eafp0.png"
}
],
"next_page": "3"
}
Запрос №3. Расширенная идентификация лица
curl -i -X GET http://127.0.0.1:18411/v2/galleries/history/faces/?limit=5&meta:in:camera=openspace&meta:in:camera=entrance&meta:lte:timestamp=1543845934&meta:gte:timestamp=1514801655&detection:bg2gu31jisghl6pee09g=0.4 | jq
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: SF:ibKVYpcb
Date: Wed, 05 Dec 2018 08:37:33 GMT
Transfer-Encoding: chunked
{
"faces": [
{
"confidence": 0.6026,
"features": { "score": 1 },
"id": { "face": 4141715030051545133, "gallery": "history" },
"meta": {
"bbox": "[607, 802, 738, 933]",
"camera": "openspace",
"is_friend": 0,
"labels": [],
"score": 9999999999998079040,
"timestamp": 1542909082
},
"normalized_id": "4141715030051545133_bfrep71jisghl6pedvk0.png"
},
{
"confidence": 0.5325,
"features": { "score": 1 },
"id": { "face": 4141715086422990894, "gallery": "history" },
"meta": {
"bbox": "[741, 905, 953, 1117]",
"camera": "openspace",
"is_friend": 0,
"labels": [],
"score": 9999999999993877300,
"timestamp": 1542909103
},
"normalized_id": "4141715086422990894_bfrepc9jisghl6pedvl0.png"
},
{
"confidence": 0.531,
"features": {
"age": 41.2622,
"gender": { "gender": "FEMALE", "score": -0.880698 },
"score": 1
},
"id": { "face": 4141716493024780347, "gallery": "history" },
"meta": {
"bbox": "[90, 869, 166, 945]",
"camera": "openspace",
"is_friend": 0,
"labels": [],
"score": 10000000000000000013,
"timestamp": 1542909627
},
"normalized_id": "4141716493024780347_bfretf9jisghl6pee020.png"
},
{
"confidence": 0.5236,
"features": {
"age": 48.949913,
"gender": { "gender": "FEMALE", "score": -0.7653318 },
"score": 1
},
"id": { "face": 4141716498393489468, "gallery": "history" },
"meta": {
"bbox": "[56, 853, 125, 923]",
"camera": "openspace",
"is_friend": 0,
"labels": [],
"score": 9999999999999999053,
"timestamp": 1542909629
},
"normalized_id": "4141716498393489468_bfretg1jisghl6pee030.png"
},
{
"confidence": 0.5212,
"features": {
"age": 33.3112,
"gender": { "gender": "MALE", "score": 1.9504981 },
"score": 1
},
"id": { "face": 4141715338752319538, "gallery": "history" },
"meta": {
"bbox": "[-36, 862, 60, 958]",
"camera": "openspace",
"is_friend": 0,
"labels": [],
"score": 9999999999999999425,
"timestamp": 1542909197
},
"normalized_id": "4141715338752319538_bfreq4pjisghl6pedvp0.png"
}
],
"next_page": "There are more than 5 results, but pagination is not supported when filtering by FaceN"
}