Detecção facial com Deluge: dominando a task zoho.ai.detectFace

Detecção facial com Deluge: dominando a task zoho.ai.detectFace

Fala, pessoal!

Hoje quero compartilhar com vocês uma das tasks de Inteligência Artificial mais interessantes do Deluge: a zoho.ai.detectFace. Com ela, conseguimos detectar rostos em imagens diretamente nos nossos scripts, sem precisar de nenhuma API externa de visão computacional. Todo o conteúdo deste artigo é baseado na documentação oficial da Zoho.

O que é a zoho.ai.detectFace?  

A task zoho.ai.detectFace detecta todos os rostos presentes em uma imagem e retorna as coordenadas da caixa delimitadora (bounding box) de cada rosto detectado. Além disso, ela pode retornar atributos adicionais do rosto: emoção, gênero e pose.

Um exemplo prático: dá para prever se um seminário foi envolvente analisando as expressões faciais da plateia em uma foto. Vamos ver esse cenário mais adiante.

Pontos de atenção antes de começar  

A documentação oficial destaca alguns pontos importantes:

       Consumo de chamadas externas: cada execução da task dispara uma requisição de API ao back-end, que é descontada do limite de chamadas externas do serviço, conforme o seu plano. E atenção: o que conta são as execuções reais que recebem resposta, não quantas vezes a task aparece no script. Se ela estiver dentro de um for each que itera 5 vezes, serão consumidas 5 chamadas externas, mesmo que a task apareça apenas uma vez no script.

       Precisão: como toda predição de IA, os resultados podem não ser precisos. A Zoho informa que está trabalhando para melhorar isso.

       Resultados dinâmicos: o mesmo script pode produzir resultados diferentes, conforme o conhecimento da máquina.

Sintaxe  

<response> = zoho.ai.detectFace(<input_image>, <is_dominant_face>, <attribute_list>);

Entendendo cada parâmetro:

Parâmetro

Tipo de dado

Descrição

<response>

KEY-VALUE

Especifica as coordenadas previstas dos rostos e, se solicitado, a emoção, o gênero e a posição de todos os rostos da imagem.

<input_image>

FILE

Especifica o objeto de arquivo que contém a imagem.

Nota: o arquivo só pode ser obtido da nuvem usando a task invokeUrl. Esta task não pode ser aplicada diretamente em campos de imagem ou de upload de arquivo do Zoho Creator. O arquivo pode ser uma imagem nos formatos .png, .jpg ou .jpeg. O tamanho máximo permitido é de 5MB.

<is_dominant_face>

BOOLEAN (true/false)

Especifica a condição para retornar os dados do rosto predominante ou de todos os rostos da imagem.

true - Retorna a bounding box do rosto predominante.

false - Retorna as bounding boxes de todos os rostos da imagem.

<attribute_list> (opcional)

LIST

Especifica a lista de valores a retornar. Os valores suportados são:

gender - Inclui o gênero do rosto na resposta retornada: Male (Masculino) / Female (Feminino).

emotion - Emoção do rosto: Angry (Raiva) / Fear (Medo) / Happy (Feliz) / Neutral (Neutro) / Sad (Triste) / Surprise (Surpresa).

pose - Retorna o ângulo/pose do rosto: Yaw (Guinada - rotação horizontal, para os lados) / Pitch (Inclinação - rotação vertical, para cima e para baixo) / Roll (Rolagem - inclinação lateral da cabeça).

 

Exemplo 1: Detectar rostos em uma imagem  

O script abaixo detecta o rosto da imagem e retorna suas coordenadas:

image_file = invokeurl

    [

         url: "https://c0.wallpaperflare.com/preview/52/764/33/twin-boys.jpg"

    ];

response = zoho.ai.detectFace(image_file, false);

Aqui, image_file é o FILE que representa a imagem da qual os rostos serão detectados, false é o valor BOOLEAN que especifica que a task retornará todos os rostos da imagem, e response é o KEY-VALUE que representa os objetos detectados na imagem e suas coordenadas.

Exemplo 2: Detectar atributos adicionais como gênero, emoção e pose  

O script a seguir detecta os rostos da imagem e retorna a resposta com coordenadas dos rostos, gênero, emoção e pose:

image_file = invokeurl

     [

         url:"https://c0.wallpaperflare.com/preview/52/764/33/twin-boys.jpg"

     ];

 

attribute_list = list();

attribute_list.add("gender");

attribute_list.add("emotion");

attribute_list.add("pose");

response = zoho.ai.detectFace(image_file, false, attribute_list);

A attribute_list é a LIST de valores que precisam ser retornados.

Exemplo 3: Usar a task com imagem enviada em um campo do Zoho Creator  

Nota: este exemplo é aplicável apenas ao Zoho Creator.

O código abaixo baixa a imagem do campo através da API e retorna a resposta com a task zoho.ai.detectFace. A task não pode ser usada diretamente com os campos de formulário do Zoho Creator. Antes, é necessário estabelecer uma connection dentro da aplicação. Para baixar o arquivo enviado no formulário, é preciso usar a Download File API com a task zoho.ai.detectFace:

// Substitua <account_owner_name> pelo nome de usuário do dono da conta Creator.

// Substitua <app_link_name> pelo link name da aplicação alvo.

// Substitua <report_link_name> pelo link name do relatório alvo.

// Substitua <record_ID> pelo ID do registro do qual deseja baixar o arquivo.

// Substitua <field_link_name> pelo link name do campo de upload ou imagem.

image_file = invokeurl

    [

    url: "https://creator.zoho.com/api/v2/<account_owner_name>/<app_link_name>/report/<report_link_name>/<record_ID>/<field_link_name>/download"

    type: GET

    connection: "creator_oauth_connection"

    ];

 

attribute_list = List();

attribute_list.add("gender");

attribute_list.add("emotion");

attribute_list.add("pose");

 

response = zoho.ai.detectFace(image_file, false, attribute_list);

Onde creator_oauth_connection é o TEXT que representa o nome da connection, criada usando o serviço padrão Zoho OAuth. Ao criar a connection, inclua os scopes mencionados na documentação da Zoho Creator - Download File API.

Resumindo  

       Detecta todos os rostos de uma imagem (ou só o predominante) com bounding box

       Atributos opcionais: gender, emotion e pose

       A imagem deve vir da nuvem via invokeUrl (.png, .jpg ou .jpeg, máximo de 5MB)

       No Zoho Creator, use a Download File API com uma connection para imagens de campos de formulário

       Cada execução consome uma chamada externa do limite do seu plano

Links úteis (documentação oficial)  

       Detect Face - Zoho Deluge

       Artificial Intelligence Tasks

       invokeURL Task

       Download File API - Zoho Creator

       Connections - Zoho Creator

 

E aí, já usou as AI Tasks do Deluge em algum projeto? Conta nos comentários!