Documentos – Facial
INRODUÇÃO
A API Cognitiva DS DEVELOP foi desenvolvida com o propósito de fornecer ao mercado e desenvolvedores serviços de visão computacional com padrão de qualidade que utilizam frameworks com potencial opensource como dlib++, opencv, tesseract e openface de uma forma mais simplificada. A API cuida do desenvolvimento, integração e dos treinos dos classificadores customizados como a comunicação com cada framework de acordo com as suas especificações, oferecendo ao usuário um acesso a esse conjunto de tecnologias através ambiente amigável de webservice padrão REST.
CONCEITO
Para iniciar o acesso aos recursos da API o usuário deve fazer seu cadastro no site www.dsdevelop.com.br/apicognitiva/cadastro, após a confirmação do cadastro o usuário recebera um email com um chave de acesso e uma lista de acesso para as chamadas no WebService da API.
A api irá fazer cadastros e relacionamento internamente com token criados por ela mesmo e vai retorná los para o usuário para que ele possa registrar esse token em sua base e assim ter um relacionamento de que pessoa representa cada token.
SERVIÇOS COGNITIVOS PARA PESSOAS
Métodos e explanações
Detecção de face(única ou múltiplas) em imagem
A detecção da face é a primeira parte do processo o usuário deve sempre fazer a detecção antes mesmo de qualquer outro método. Quando esse método é chamado ele irá responder um token em caso de sucesso de encontrar uma face e esse token deve ser usado nas futuras chamadas de funções em cima desta mesma imagem evitando assim ter que subir a imagem novamente a cada chamada. Esse token que retorna da detecção é temporário e deve expirar em 48 horas sendo necessário fazer nova detecção da imagem caso queira reutiliza-la.
Requerimentos de imagem
Formato: JPG
Tamanho: entre de 100*100 a 1024*1024 (pixels)
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/detect
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim- file se for o primeiro request para esta imagem, caso essa imagem já tenha sido detectada a 48h atrás pode se usar o tokendela como code no request | file | File | Binary Data da imagem upload via POST multipart/form-data |
Code | String | token retornado em uma chamada anterior da mesma imagem no método detect. |
Valor de retorno
Campos | Tipo | Descrição |
Faces | Object | O objeto Faces e composto de um lista com os seguinte atributos: Code = token de retorno da detecção da referente face Bottom = coordenada da posição da face na imagem, *idem abaixo Top Left Right width Height e um campo size para exibir a quantidade de faces da lista. |
Exemplo resposta com faces encontradas:
{
“faces”: [
{
“Bottom”: 191,
“Code”: “b611f3b5-ce33-4ab5-a24e-6dd0deda7020”,
“Height”: 678,
“Left”: 370,
“Right”: 432,
“Top”: 129,
“Width”: 1091
},
{
“Bottom”: 142,
“Code”: “538a3abb-8e50-4a16-9673-75f508848e29”,
“Height”: 678,
“Left”: 453,
“Right”: 496,
“Top”: 98,
“Width”: 1091
}
],
“size”: 2
}
Sem face encontradas
{ "faces": [], "size": 0 }Mensagens de erros
Campos | Tipo | Descrição |
code | int | código de retorno da mensagem. Código possível para esta chamada: 7 = INVALID KEY |
message | String | Descrição da mensagem de erro. |
O método de comparação pode ser utilizado compara a distância de semelhança entre duas imagens com faces. Este método pode ser utilizado passando as duas imagens no request ou somente o code delas caso elas já tenha sido submetidas ao request detect.
Requerimentos de imagem
Formato: JPG
Tamanho: entre de 100*100 a 1024*1024 (pixels)
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/person/compare
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Opcional (Necessário somente quando se quer comparar novamente duas faces ja associadas a uma lista) | List | String | Código da lista onde o token da face está associado. |
Sim detalhes explicados abaixo na *1. | file_one | File | Binary Data da imagem upload via POST multipart/form-data. |
Sim detalhes explicados abaixo na *1. | Person_One | String | Token retornado em uma chamada anterior da mesma imagem no método detect. |
Sim detalhes explicados abaixo na *1. | file_two | File | Binary Data da imagem upload via POST multipart/form-data. |
Sim detalhes explicados abaixo na *1. | Person_Two | String | Token retornado em uma chamada anterior da mesma imagem no método detect. |
*1: Para esta chamada o usuário deve escolher somente uma das combinações abaixo:
- Subir as duas imagens a serem comparadas quando não tem vinculo nenhum com o sistema,
- Entrar com os tokens (recebidos no método detect) de cada imagem caso esteja dentro da distância de tempo de 48h da chamada detect.
- Entrar com o token definitivo do usuário já associado a uma lista.
Campos | Tipo | Descrição |
distance | String | Valor da distância significativa da comparação 0 = faces idênticas, até 0.400 são faces relativamente parecidas, quanto maior o valor menos semelhança tem as faces. |
Exemplo resposta:
{ "distance": "0.932" }
Mensagens de erros:
Campos | Tipo | Descrição |
code | int | Código de retorno da mensagem. Código possível para esta chamada: 4 = INVALID PERSON |
message | String | Descrição da mensagem de erro. |
ADICIONAR FACE
A API permite que sejam cadastradas face numa database associada a sua chave de acesso (premissa) para que você possa utilizar o recurso de reconhecimento facial. Nesse item vale uma explicação melhor sobre o processo de reconhecimento.
É necessário realizar um “Enroll” que nada mais é que coletar dados característicos da face em uma imagem para depois usar como parâmetros na análise de reconhecimento e semelhança com outra.
A API necessita que exista ao menos uma imagem para cada pessoa cadastrada no entanto quando se espera um índice de assertividade mais alto se aconselha a usar até 20 imagens de cada face.
É importante também que as imagens tenham ângulos e perspectivas diferente mas que sempre deem visão para os dois olhos isso vai ajudar bastante no aumento da assertividade.
Antes de tentar qualquer abordagem comentada acima é necessário passar a imagem pelo método detect que vai certificar que existe uma face na imagem, após isso deve se coletar o token retornado do método detect para seguir na abordagem:
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/person/enroll
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim | List | String | Lista recebida no email do cadastro |
Sim | Code | String | Token retornado em uma chamada anterior da mesma imagem no método detect. Em caso de sucesso esse token fica sendo reconhecido para sempre na database do usuário como codigo dessa face até que seja removido, ou seja ela não expira mais. |
Valores de retorno
Campos | Tipo | Descrição |
code | int | código de retorno da mensagem. Código possível para esta chamada: 1 = SUCCESS 4 = INVALID PERSON 5 = INVALID LIST 7 = INVALID KEY |
message | String | Descrição da mensagem de erro. |
Exemplo resposta:
{ "code": 1, "message": "SUCCESS" }
ENROLL DE MÚLTIPLAS IMAGENS
Neste caso será necessário fazer o enroll em dois momentos durante o processo todo. O usuário deve fazer a primeira vez conforme já documentado no item 1 acima e depois utilizar o método abaixo para subir cada uma das demais imagens de face da mesma pessoa em perspetivas diferentes.
Depois de de subir as demais imagens chame o método de enroll novamente com os mesmos parâmetros da primeira chamada que o sistema vai fazer um agrupamento das imagens em um único enroll aumentando assim a assertividade.
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/person/image
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim | List | String | Lista recebida no email do cadastro |
Sim | Code | String | Importante!: aqui o token deve ser o retornado do detect da imagem utilizada no primeiro enroll |
Sim | file | File | Binary Data da imagem upload via POST multipart/form-data. |
Valores de retorno
Campos | Tipo | Descrição |
code | int | código de retorno da mensagem. Código possível para esta chamada: 1 = SUCCESS 4 = INVALID PERSON 5 = INVALID LIST 7 = INVALID KEY |
message | String | Descrição da mensagem de erro. |
Exemplo resposta:
{ "code": 1, "message": "SUCCESS" }
LISTAR FACES CADASTRADAS
Este método vai listar todas as faces cadastradas a sua Key e Lista, e devolver um array de tokens, esses tokens o usuário deve ter em sua base no sistema local para fazer relacionamento com as chamadas na API.
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/person
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim | List | String | Lista recebida no email do cadastro |
Valor de Retorno
Campos | Tipo | Descrição |
peoples | Array | Lista de Strings de tokens da faces cadastradas. Limite na versão gratuita é de 1000 faces por usuário. |
{ "peoples": [ "b38e61b72eb9ad8c0e7a08d65d3cadb1", "c9c4972f5f966347b79e7b47404ea79e", "57a28bef-c1d3-4d5f-9bf9-6f7a15e9f4de", "f0c90a94638a236da1f307e5a1a82e44" ] }
REMOVER FACE
Este método remove um Face definitivamente da sua lista (Somente faces na lista podem ser reconhecidas).
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/person/delete
Request Method
POST
Campos | Tipo | Descrição |
code | int | código de retorno da mensagem. Código possível para esta chamada: 1 = SUCCESS 4 = INVALID PERSON 5 = INVALID LIST 7 = INVALID KEY |
message | String | Descrição da mensagem de erro. |
{ "code": 1, "message": "SUCCESS" }
RECONHECIMENTO DE FACES
O método de reconhecimento faz a procura da face da imagem da requisição na database do usuário na API.
Requerimentos de imagem
Formato: JPG
Tamanho: entre de 100*100 a 1024*1024 (pixels)
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/list/search
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim | List | String | Código da lista onde o token da face está associado. |
É Obrigatório o uso de uma das duas opções a frente. | file | File | Binary Data da imagem upload via POST multipart/form-data. |
É Obrigatório o uso de uma das duas opções a frente. | Person | String | token retornado em uma chamada anterior da mesma imagem no método detect. |
Valor de Retorno
Campos | Tipo | Descrição |
code | int | Array de objeto com: code = token da face cadastrada confidence = nível de confidência de que é a pessoa procurada acima de 70 se considera a possibilidade. list = token da lista do usuário. O primeiro objeto é obtido por procura direta na database e os demais são por uma sequência de comparação trazendo as faces mais próximas. |
[ { "code": "1c60aa35fdf971fd9def2892f4d78eb6", "confidence": 0.7276432771239797, "list": "" }, { "code": "b38e61b72eb9ad8c0e7a08d65d3cadb1", "confidence": 0.555, "list": "57365f0ff01e5836ee9744c16e68474e" }, { "code": "f1e5b9816e3c05021ef46058ae5af6fd", "confidence": 0.534, "list": "57365f0ff01e5836ee9744c16e68474e" }, { "code": "787f7bf2-b964-4677-b136-e30a676412de", "confidence": 0.519, "list": "57365f0ff01e5836ee9744c16e68474e" } ]
DETECÇÃO DE 68 PONTOS EM FACE (LANDMARK)
A API fornece a posição de 68 pontos na face baseado em um modelo muito bem treinado oferecido pelo framework dlib++, encontrando o contorno do rosto, dos olhos, nariz, sobrancelha e lábios. Isso pode ser utilizado para aplicar efeitos na face, como avatares e filtros.
Requerimentos de imagem
Formato: JPG
Tamanho: entre de 100*100 a 1024*1024 (pixels)
Request URL
httpss://api.dsdevelop.com.br/api/dsdevelop/face/list/search
Request Method
POST
Obrigatório | Nome | Tipo | Descrição |
Sim | ApiKey | String | Key recebida por email no cadastro |
Sim | List | String | Código da lista onde o token da face está associado. |
É Obrigatório o uso de uma das duas opções a frente. | file | File | Binary Data da imagem upload via POST multipart/form-data. |
É Obrigatório o uso de uma das duas opções a frente. | Person | String | token retornado em uma chamada anterior da mesma imagem no método detect. |
Valor de Retorno
Campos | Tipo | Descrição |
landmarks | Objeto | Array de de um objeto que representa a posição de cada ponto detectado. |