Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

Faça como eu fiz: identificando objetos com MobileNetV2

Olá, Colegas.

Usando o modelo MobileNetV2, que foi treinado no conjunto de dados ImageNet, para classificar imagens de objetos que você enviar.

Atividade:

  1. Usar o modelo MobileNetV2 para prever a classe de um objeto em uma imagem.

    • Imagem tamanho 224x224 pixels
  2. Pré-processar a imagem para o formato correto que o modelo espera.

    • Classificar uma grande variedade de objetos e faz previsões.
  3. Exibir a classe identificada na imagem.

    • Exibe o resultado esperado.

ENTRADA:

from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
import numpy as np
import cv2
from google.colab import files
from PIL import Image

# Fazer upload da imagem
uploaded = files.upload()
imagem_path = list(uploaded.keys())[0]  # Pega o nome do arquivo enviado

# Carregar a imagem usando OpenCV
imagem = cv2.imread(imagem_path)
imagem_rgb = cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB)

# Carregar o modelo MobileNetV2 pré-treinado
modelo = MobileNetV2(weights="imagenet")

# Pré-processar a imagem para o formato esperado pelo modelo
imagem_redimensionada = cv2.resize(imagem_rgb, (224, 224))
imagem_array = np.expand_dims(imagem_redimensionada, axis=0)
imagem_array = preprocess_input(imagem_array)

# Fazer a previsão
predicoes = modelo.predict(imagem_array)
label = decode_predictions(predicoes)
print("Objeto identificado:", label[0][0][1])  # Exibe a classe identificada

SAÍDA:

closeup-vertical-shot-cute-european-shorthair-cat.jpg(image/jpeg) - 12914094 bytes, last modified: 24/06/2026 - 100% done
Saving closeup-vertical-shot-cute-european-shorthair-cat.jpg to closeup-vertical-shot-cute-european-shorthair-cat (1).jpg
1/1 ━━━━━━━━━━━━━━━━━━━━ 2s 2s/step
Objeto identificado: tabby

2 respostas

Oi, Vanelice! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura. Gostei de como você organizou o fluxo da atividade de classificação de imagens com MobileNetV2, passando pelo upload da imagem, conversão de cores com cv2.cvtColor, redimensionamento para 224x224, uso do preprocess_input e leitura do resultado com decode_predictions. O retorno tabby mostra que o modelo pré-treinado com ImageNet conseguiu associar a imagem a uma classe de gato.

Uma dica interessante para o futuro é exibir também as três previsões mais prováveis, porque modelos de machine learning para visão computacional podem retornar classes próximas entre si. Veja este exemplo:


resultado = decode_predictions(predicoes, top=3)[0]

for classe in resultado:
    nome = classe[1]
    confianca = classe[2] * 100
    print(f"Objeto: {nome} - Confianca: {confianca:.2f}%")

Esse código mostra o nome das classes previstas e a porcentagem de confiança de cada uma, ajudando a comparar os resultados do modelo. Você pretende testar o MobileNetV2 com outros tipos de imagem para observar como a previsão muda em objetos diferentes?

Olá, Rafaela, tudo bem!

Muito obrigado pela dica interessante. Respondendo sua pergunta sim, pretendo testar o MobileNetV2. By