Распознавание лиц и сверка с документами

Метод /face

Dbrain предоставляет 3 метода работы по распознаванию лиц:

  • Метод /face/detectпринимает на вход 1 изображение, на котором производит поиск лиц людей, и возвращает в ответе их координаты. Лица людей во входном изображении могут быть представлены в т. ч. на документах, например, на фото паспорта.

  • Метод /face/distance принимает на вход 2 изображения, на каждом из которых находит лицо человека, после чего производит их сравнение и возвращает в ответе вероятность несовпадения лиц distance.

  • Метод /face/selfie принимает на вход 1 изображение — "селфи" человека с разворотом документа с фотографией; на изображении производится поиск лица человека и его фотографии в документе, после чего происходит сравнение двух найденных лиц. В качестве ответа возвращается параметр same_face, который принимает значение true, если на фото и в документе лицо одного и того же человека, и значение false в обратном случае.

Вероятность совпадения лиц "distance"

Параметр distanceв ответе показывает вероятность несовпадения двух обнаруженных лиц во входных данных:

  • 0.50-1.00 — лица не совпадают, это разные люди (same_face= "false")

  • 0.00-0.49 — лица совпадают, это один человек (same_face= "true")

API-спецификация

Ниже представлена API-спецификация для 3 методов распознавания лиц. Подробнее о том, как составить запрос, в разделе Подключение и тестирование.

post
detect

https://latest.dbrain.io/face/detect
Request
Response
Request
Query Parameters
return_crops
optional
boolean
true (по умолчанию) — в ответе вернутся вырезанные из изображения области с лицами в формате base64 false — отключает возврат вырезанных областей с лицами
async
optional
boolean
true — запрос в асинхронном режиме, см. «Асинхронный режим» в разделе «Подключение» false — запрос в синхронном режиме
priority
optional
integer
Приоритет задачи, по умолчанию принимает значение «
Body Parameters
image
required
string
Файл, в котором требуется найти лица людей
Response
200: OK
Запрос успешно обработан.
{
"detail": [], // техническая информация
"items": [
{
"reason": null, // здесь отображаются пояснения в случае ошибки
"faces": [
{
"confidence": 0.699973, // уровень уверенности в том, что вырезанная область действительно лицо
"description": "face", // описание найденной области, в методе detect всегда "face"
"type": "face", // тип найденной области, в методе detect всегда "face"
"page": 1, // номер страницы, на которой найдено лицо
"rotation": 0, // ориентация лица по горизонтали и вертикали
"coords": [ // координаты прямоугольника, описанного вокруг найденного лица на изображении
[
176,
1385
],
[
427,
1385
],
[
427,
1696
],
[
176,
1696
]
],
"coords_relative": [ // относительные координаты прямоугольника, описанного вокруг найденного лица на изображении
[
0.11278792692613185,
0.6767922235722964
],
[
0.2732327243844321,
0.6767922235722964
],
[
0.2732327243844321,
0.8286755771567436
],
[
0.11278792692613185,
0.8286755771567436
]
],
"crop": "data:image/jpeg;base64,<...>" // вырезанный из изображения прямоугольник в бинарном формате
}
]
}
],
"task_id": null, // внутренний id задачи
"code": null, // код ошибки
"message": null, // сообщение об ошибке в рамках объекта
"errno": null, // номер ошибки
"traceback": null, // сообщение об ошибке в рамках объекта
"fake": null, // не используется в данном методе
"pages_count": null, // не используется в данном методе
"docs_count": null // не используется в данном методе
}

post
distance

https://latest.dbrain.io/face/distance
Request
Response
Request
Query Parameters
return_crops
optional
string
true (по умолчанию) — в ответе вернутся вырезанные из изображения области в формате base64 false — отключает возврат вырезанных областей с лицами
async
optional
boolean
true — запрос в асинхронном режиме, см. «Асинхронный режим» в разделе «Подключение» false — запрос в синхронном режиме
priority
optional
integer
Приоритет задачи, по умолчанию принимает значение «
Body Parameters
image1
required
string
1 файл, в котором требуется найти лицо человека
image2
required
string
2 файл, в котором требуется найти лицо человека
Response
200: OK
Запрос успешно обработан.
{
"detail": [], // техническая информация
"items": [
{
"distance": 0.9033318, // вероятность несовпадения двух обнаруженных лиц во входных данных
"reason": null, // здесь отображаются пояснения в случае ошибки
"same_face": false, // вердикт Dbrain являются ли лица одинаковыми
"faces1": [
{
"confidence": 0.7, // уровень уверенности в том, что вырезанная область действительно лицо
"description": "face", // описание найденной области, в методе distance всегда "face"
"type": "face", // тип найденной области, в методе distance всегда "face"
"page": 1, // номер страницы, на которой найдено лицо
"rotation": 0, // ориентация лица по горизонтали и вертикали
"coords": [ // координаты прямоугольника, описанного вокруг найденного лица на изображении
[
420,
273
],
[
1236,
273
],
[
1236,
1434
],
[
420,
1434
]
],
"coords_relative": [ // относительные координаты прямоугольника, описанного вокруг найденного лица на изображении
[
0.18108974358974358,
0.0885009030704395
],
[
0.5328525641025641,
0.0885009030704395
],
[
0.5328525641025641,
0.4647802528597231
],
[
0.18108974358974358,
0.4647802528597231
]
],
"crop": "data:image/jpeg;base64,<...>" // вырезанный из изображения прямоугольник в бинарном формате
}
],
"faces2": [
{
"confidence": 0.7,
"description": "face",
"type": "face",
"page": 1,
"rotation": 0,
"coords": [
[
211,
35
],
[
576,
35
],
[
576,
523
],
[
211,
523
]
],
"coords_relative": [
[
0.2813333333333333,
0.035
],
[
0.768,
0.035
],
[
0.768,
0.523
],
[
0.2813333333333333,
0.523
]
],
"crop": "data:image/jpeg;base64,<...>"
}
]
}
],
"task_id": null, // внутренний id задачи
"code": null, // код ошибки
"message": null, // сообщение об ошибке в рамках объекта
"errno": null, // номер ошибки
"traceback": null, // сообщение об ошибке в рамках объекта
"fake": null, // не используется в данном методе
"pages_count": null, // не используется в данном методе
"docs_count": null // не используется в данном методе
}

post
selfie

https://latest.dbrain.io/face/selfie
Request
Response
Request
Query Parameters
return_crops
optional
boolean
true (по умолчанию) — в ответе вернутся вырезанные из изображения области с лицами в формате base64 false — отключает возврат вырезанных областей с лицами
simple
optional
string
default (по умолчанию) — алгоритм сравнивает лицо на изображении с лицом на фотографии в целевом типе документа simple — алгоритм сравнивает два лица на изображении не проверяя наличие документа и его тип
doc_type
required
string
Название типа документа на селфи. Например, если целевой документ для сверки на селфи — паспорт РФ, то необходимо указать значениеpassport_main. Любой другой целевой документ указывается согласно наименованиям типов в спецификации (Раздел «Поддерживаемые документы»).
simple_cropper
optional
boolean
false (по умолчанию) — упрощённый алгоритм вырезания документов из изображений не используется true — используется упрощённый алгоритм вырезания документов из изображений: он работает быстрее, но даёт менее точный результат. На изображениях со сложным фоном документы могут быть вырезаны менее аккуратно.
async
optional
boolean
true — запрос в асинхронном режиме, см. «Асинхронный режим» в разделе «Подключение» false — запрос в синхронном режиме
priority
optional
integer
Приоритет задачи, по умолчанию принимает значение «
Body Parameters
image
required
string
файл, в котором требуется сравнить лица
Response
200: OK
Запрос успешно обработан.
{
"detail": [], // техническая информация
"items": [
{
"distance": 0.35919100000000004, // вероятность несовпадения двух обнаруженных лиц во входных данных
"reason": null, // причина, по которой не обнаружено изображение лица
"same_face": true, // = "true", если лица совпали; = "false" в обратном случае
"faces": [
{
"confidence": 0.697779, // уровень уверенности в том, что вырезанная область действительно лицо
"description": "face", // описание найденной области
"type": "face", // тип найденной области
"page": 1, // номер страницы, на которой найдено лицо
"rotation": 0, // ориентация лица по горизонтали и вертикали
"coords": [ // координаты прямоугольника, описанного вокруг найденного лица на изображении
[
1381,
357
],
[
2104,
357
],
[
2104,
1243
],
[
1381,
1243
]
],
"coords_relative": [ // относительные координаты прямоугольника, описанного вокруг найденного лица на изображении
[
0.5397111913357401,
0.18604651162790697
],
[
0.822503008423586,
0.18604651162790697
],
[
0.822503008423586,
0.6479550922213312
],
[
0.5397111913357401,
0.6479550922213312
]
],
"crop": "data:image/jpeg;base64,<...>"
}
],
"faces_on_document": [
{
"confidence": 0.69999,
"description": "face_on_doc",
"type": "face_on_doc",
"page": 1,
"rotation": 0,
"coords": [
[
309,
1206
],
[
525,
1212
],
[
520,
1462
],
[
304,
1456
]
],
"coords_relative": [
[
0.1208105501457182,
0.6282101141561518
],
[
0.20510919790904614,
0.6315200298424686
],
[
0.20321649818970494,
0.7618871788939843
],
[
0.11892901155920069,
0.7586366781394492
]
],
"crop": "data:image/jpeg;base64,<...>"
}
],
"document": {
"confidence": 1,
"description": "document",
"type": "passport_main",
"page": 1,
"rotation": 0,
"coords": [
[
176,
176
],
[
1347,
213
],
[
1315,
1828
],
[
145,
1795
]
],
"coords_relative": [
[
0.06875,
0.09166666666666666
],
[
0.5261718750000001,
0.1109375
],
[
0.513671875,
0.9520833333333333
],
[
0.056640625,
0.9348958333333334
]
],
"crop": "data:image/jpeg;base64,<...>"
}
}
],
"task_id": null, // внутренний id задачи
"code": null, // код ошибки
"message": null, // сообщение об ошибке в рамках объекта
"errno": null, // номер ошибки
"traceback": null, // сообщение об ошибке в рамках объекта
"fake": null, // не используется в данном методе
"pages_count": null, // не используется в данном методе
"docs_count": null // не используется в данном методе
}