AI Builder – Detecção de Objetos (Parte 3/3)


Olá pessoal,

Este é último post desta série, nos demais criamos/treinamos nosso modelo de detecção de objetos e aplicamos nosso modelo em um uso prático através de uma PowerApp em Canvas. Irei mostrar como armazenar os objetos detectados em uma base de dados (CDS)!

Antes de ajustarmos nossa app para gravar as detecções, precisamos criar as entidades no CDS que irão manter as detecções. Veja o diagrama de relacionamento entre as entidades que irei utilizar neste exemplo:

Resumindo o diagrama

Temos a entidade que irá capturar os Captured Fruits (Objetos Detectados), porém esta entidade apenas armazena a imagem capturada e a quantidade total de objetos detectados.

Para armazenar quais objetos e seus detalhes, criei a entidade Object (Objetos), por isso temos o relacionamento 1 : Muitos entre Capured Fruits e Objects (uma imagem podem ter vários objetos diferentes detectados).

Por fim, a entidade Fruits (Frutas), isso mesmo, a mesma entidade que utilizamos para marcar os objetos de nosso modelo. Criei um lookup da entidade frutas dentro do formulário de objetos, assim sabemos qual fruta este objeto esta relacionado.

Para obter a solução contendo estas entidade, baixe e importe esta solução: Checkmyfruit_1_0_0_0

Voltando a PowerApp

Nossa app está praticamente pronta (se não viu o post anterior, acesso-o aqui), precisamos apenas inserir um botão e um pouco de código no evento OnSelect, veja:

Aqui vai o código:

ClearCollect(capturedImage, 
	Patch('Captured Images',
	{
		crdb8_capturedimagesid: Blank(),
		crdb8_name: "Image captured at " & Now(), 
		entityimage: ObjectDetector1.OriginalImage, 
		crdb8_count:CountRows(ObjectDetector1.VisionObjects)
	})
);
ClearCollect(objects, 
	ForAll(
    		Gallery1.AllItems,
    		Patch(
                Objects,
                {
                    'Captured Images': LookUp('Captured Images', crdb8_capturedimagesid = First(capturedImage).crdb8_capturedimagesid), 
		            crdb8_id: id, 
                    crdb8_name: displayName,
                    crdb8_count: count,
		   Fruits: LookUp(Fruits, crdb8_name = displayName)
                })
	)
)

Explicando um pouco do código

O código contem dois métodos Patch (um para gravar a imagem caputurada e outro para gravar todos os objetos localizados).

Usei também ClearCollect para recuperar os objetos recém criados no CDS, assim conseguimos fazer as referências (lookups).

Bom acho o restante do código é auto-explicativo!

 

Executando a App

Com o código pronto, é hora de executar nossa app. Insira a imagem a ser detectada, visualize os resultados e clique em “Save”. A app irá acionar o CDS para gravar a imagem capturada e seus objetos. O resultado pode ser visto na imagem abaixo:

 

Veja que cada registro das imagens capturadas, teremos como logo exatamente a imagem que foi inserida para detecção:

Além da imagem os campos Name (nome) e Count (contador) foram populados:

Quando clicamos nos objetos presentes no subgrid, vemos mais informações sobre cada objeto:

Acho que é isso! Espero que essa série de posts lhe ajude a criar seus modelos de IA e aplicá-los na prática!

Eu exportei a app que utilizei, você pode baixa-la e importa-la aqui: Checkwhichisthefruit_20191002051501.

Vou procurar escrever sobre os demais tipos de modelo nos posts a seguir, fique atento as novidades deste blog!

[]’s,

Tiago

 

 

Um comentário em “AI Builder – Detecção de Objetos (Parte 3/3)

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.