import tensorflow as tf
from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt
# Carregar o modelo MobileNetV2 pré-treinado
# `weights='imagenet'` indica que queremos os pesos treinados no ImageNet.
# `input_shape=(224, 224, 3)` define o tamanho esperado da imagem de entrada.
model = MobileNetV2(weights='imagenet', input_shape=(224, 224, 3))
print("Modelo MobileNetV2 carregado com sucesso!")
def preprocess_image(img_path):
# Carregar a imagem com o tamanho alvo de 224x224
img = image.load_img(img_path, target_size=(224, 224))
# Converter a imagem para um array NumPy
img_array = image.img_to_array(img)
# Adicionar uma dimensão extra para o batch (o modelo espera um batch de imagens)
img_array = np.expand_dims(img_array, axis=0)
# Pré-processar a entrada conforme as especificações do MobileNetV2
img_array = preprocess_input(img_array)
return img, img_array
print("Função `preprocess_image` definida.")
def classify_image(model, img_path):
# Pré-processar a imagem
original_img, processed_img = preprocess_image(img_path)
# Fazer a previsão
predictions = model.predict(processed_img)
# Decodificar as previsões para termos legíveis por humanos
# top=3 para mostrar as 3 principais previsões
decoded_predictions = decode_predictions(predictions, top=3)[0]
# Exibir a imagem original
plt.imshow(original_img)
plt.axis('off')
plt.title(f"Classificação do objeto")
plt.show()
print("Principais previsões:")
for i, (imagenet_id, label, score) in enumerate(decoded_predictions):
print(f"{i + 1}: {label} ({score:.2f}%) ")
print("Função `classify_image` definida.")
# Baixar uma imagem de exemplo (pode ser substituído por uma imagem local)
img_url = 'https://raw.githubusercontent.com/modenaxe/dog-breed-classifier/master/submission/images/Labrador_retriever_06449.jpg'
img_name = 'Labrador_retriever_06449.jpg'
img_path = tf.keras.utils.get_file(img_name, img_url)
print(f"Imagem de exemplo baixada: {img_path}")
# Classificar a imagem
classify_image(model, img_path)
# Para carregar uma imagem local, faça o upload dela para o ambiente do Colab primeiro.
# Por exemplo, se você carregou um arquivo chamado 'meu_cachorro.jpg', você o referenciaria assim:
# img_path_local = 'meu_cachorro.jpg'
# Exemplo: Usando uma imagem local que você faria upload
# Substitua 'caminho/para/sua/imagem.jpg' pelo nome do arquivo que você carregou.
img_path_local = '/content/Welsh_springer_spaniel_08203.jpg' # Exemplo: eu carreguei o arquivo Welsh_springer_spaniel_08203.jpg'
print(f"Usando imagem local: {img_path_local}")
# Classificar a imagem local
classify_image(model, img_path_local)