Bueno, ajusté un poco el código del profesor para ver un ranking de 3 predicciones que da la máquina.
Código:
from tensorflow.keras.applications import MobileNetV2
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
# Subir la imagen
uploaded = files.upload()
imagen_path = list(uploaded.keys())[0]
# Cargar y convertir la imagen
imagen = cv2.imread(imagen_path)
imagen_rgb = cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB)
# Cargar el modelo
modelo = MobileNetV2(weights="imagenet")
# Preprocesar
imagen_redimensionada = cv2.resize(imagen_rgb, (224, 224))
imagen_array = np.expand_dims(imagen_redimensionada, axis=0)
imagen_array = preprocess_input(imagen_array)
# Predecir
predicciones = modelo.predict(imagen_array)
top3 = decode_predictions(predicciones, top=3)[0]
print("Top 3 predicciones:")
for i, (id, label, confianza) in enumerate(top3, start=1):
print(f" {i}. {label}: {confianza*100:.1f}%")
Imagen subida:
Output:
Top 3 predicciones:
1. wallaby: 13.7%
2. kelpie: 11.1%
3. Pembroke: 4.6%
De esos tres, "Kelpie" es el más cercano por ser una raza de perro, pero la respuesta era un Shiba Inu. Si no hubiera puesto esos 3 resultados, no podría haber visto una respuesta más cercana