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
[
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)
• Artificial Intelligence Tasks
• Download File API - Zoho Creator
E aí, já usou as AI Tasks do Deluge em algum projeto? Conta nos comentários!