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.

Obs: No modo gratuito o usuário tem direito somente a uma lista e cada lista pode comportar até 500 faces.

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.

 

COMPARAÇÃO ENTRE FACES

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.
Exemplo resposta:
{
    "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.
Exemplo resposta:
{
    "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. 
Exemplo resposta:
[
    {
        "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.

Ilustração de Referencia de cada ponto