O conteúdo desse portal pode ser acessível em Libras usando o VLibras

Como implantar seu modelo de detecção de objetos em um aplicativo App Inventor em minutos?

Vamos imaginar que você esteja desenvolvendo um aplicativo para a detecção de itens domésticos (cadeira, mesa, sapatos, etc.) a fim de ajudar pessoas com deficiências visuais a se locomoverem.

Então você acabou de concluir o desenvolvimento de um modelo de detecção de objetos usando o YOLOv8, treinando o modelo usando um notebook jupyter em execução no Google Colab com um conjunto de dados que você preparou e baixou do Roboflow.

Mas como implantar esse modelo treinado em um aplicativo do App Inventor?

Uma solução simples é usar a API de inferência hospedada fornecida pelo Roboflow, que fornece uma API REST por meio da qual você pode carregar uma imagem e recuperar previsões do seu modelo.

Assim, quando terminar de treinar o modelo YOLOv8, você terá um conjunto de pesos treinados prontos para uso. Esses pesos estarão na seção /runs/detect/train/weights/best.pt do seu projeto. Agora você pode carregar os pesos do seu modelo no Roboflow Deploy para usar os pesos treinados na infraestrutura do Roboflow.

A função .deploy() no Roboflow pip package agora suporta o upload de pesos YOLOv8. Para carregar pesos de modelos, adicione o seguinte código ao seu notebook Jupyter:

project.version(dataset.version).deploy(model_type=”yolov8″, model_path=f”{HOME}/runs/detect/train/”)

Agora, verifique o projeto do Roboflow onde o modelo está sendo implantado:

Lá você também encontrará todas as informações necessárias para programar a chamada de API em seu aplicativo App Inventor:

Portanto, agora vamos chamar a API de um aplicativo do App Inventor.
Para isso, usamos o componente Web:

Em seguida, fazemos a chamada à API passando os respectivos argumentos, conforme indicado em seu projeto Roboflow:

  • Web.RequestHeaders para um dicionário com chave: “Content-Type” e valor: “application/x-www-form-urlencoded
  • Web.Url para uma string que une as strings de “https://detect.roboflow.com/objetos-dentro-de-casa/1” + “?api_key=” + (as obfuscated text the api key) + “&confidence=40&overlap=30&format=json

E, em seguida, chame Web.PostText passando como parâmetro a foto tirada como imagem base64 (usando a extensão ImageToBase64)

Usando então when web.GotText recebemos a resposta de inferência do modelo em execução na infraestrutura do Roboflow. A rota de inferência da API hospedada retorna um objeto JSON que contém uma matriz de previsões. Cada previsão tem as seguintes propriedades:

  • x = o ponto central horizontal do objeto detectado
  • y = o ponto central vertical do objeto detectado
  • width = a largura da bounding box (caixa delimitadora)
  • height = a altura da bounding box (caixa delimitadora)
  • class = o rótulo da classe do objeto detectado
  • confidence = a confiança do modelo de que o objeto detectado tem o rótulo e as coordenadas de posição corretos

Aqui está um exemplo de objeto de resposta da API REST recebido como JSON:

[{“class”:”Sapato”,”confidence”:0.4265051782131195,”height”:88,”width”:93,”x”:431.5,”y”:239},{“class”:”Armario”,”confidence”:0.4174592196941376,”height”:212,”width”:302,”x”:153,”y”:237}]

Em seguida, podemos usar esse objeto JSON, por exemplo, para exibir uma lista de objetos detectados.


Usando um canvas para mostrar a imagem, também podemos desenhar bounding box caixas delimitadoras na parte superior da imagem depois de transformar as coordenadas YOLO recebidas em coordenadas de tela e também usar cores diferentes para cada classe de objeto.


Exemplo arquivo .apk
Exemplo arquivo .aia

Conteúdo acessível em Libras usando o VLibras Widget com opções dos Avatares Ícaro, Hosana ou Guga. Conteúdo acessível em Libras usando o VLibras Widget com opções dos Avatares Ícaro, Hosana ou Guga.