Mi solución a presentar será:
==========================================================
CLASIFICACIÓN DE IMÁGENES CON MOBILENETV2
==========================================================
Importar bibliotecas
import numpy as np
import cv2
import matplotlib.pyplot as plt
from google.colab import files
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.mobilenet_v2 import (
preprocess_input,
decode_predictions
)
==========================================================
PASO 1: Cargar la imagen
==========================================================
uploaded = files.upload()
imagen_path = list(uploaded.keys())[0]
Leer la imagen
imagen = cv2.imread(imagen_path)
Convertir de BGR a RGB
imagen = cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB)
Mostrar la imagen
plt.imshow(imagen)
plt.title("Imagen cargada")
plt.axis("off")
plt.show()
==========================================================
PASO 2: Cargar el modelo preentrenado
==========================================================
modelo = MobileNetV2(weights="imagenet")
==========================================================
PASO 3: Preprocesar la imagen
==========================================================
imagen_redimensionada = cv2.resize(imagen, (224, 224))
imagen_array = np.expand_dims(imagen_redimensionada, axis=0)
imagen_array = preprocess_input(imagen_array)
==========================================================
PASO 4: Realizar la predicción
==========================================================
predicciones = modelo.predict(imagen_array)
resultado = decode_predictions(predicciones, top=1)
clase = resultado[0][0][1]
confianza = resultado[0][0][2]
print("=" * 50)
print("RESULTADO DE LA CLASIFICACIÓN")
print("=" * 50)
print(f"Objeto identificado : {clase}")
print(f"Confianza : {confianza:.2%}")
Explicación
En esta actividad se utilizó el modelo MobileNetV2, una red neuronal convolucional preentrenada con el conjunto de datos ImageNet, que contiene millones de imágenes pertenecientes a miles de categorías.
Primero, se cargó una imagen desde Google Colab utilizando la función files.upload(). Luego, la imagen fue convertida al formato RGB y redimensionada a 224 × 224 píxeles, ya que este es el tamaño requerido por MobileNetV2.
Posteriormente, se aplicó el preprocesamiento mediante la función preprocess_input(), la cual normaliza los valores de los píxeles para que sean compatibles con el modelo.
Una vez preparada la imagen, se realizó la predicción utilizando el modelo preentrenado. Finalmente, con la función decode_predictions() se obtuvo la clase del objeto identificado y el porcentaje de confianza asociado a la predicción.
Conclusión
El uso de modelos preentrenados como MobileNetV2 permite desarrollar aplicaciones de clasificación de imágenes sin necesidad de entrenar una red neuronal desde cero. Gracias al preprocesamiento adecuado y al conocimiento previamente adquirido por el modelo sobre el conjunto de datos ImageNet, fue posible identificar automáticamente el objeto presente en la imagen con un alto nivel de precisión. Esta técnica es ampliamente utilizada en aplicaciones de visión por computadora, reconocimiento de objetos, automatización industrial y sistemas inteligentes de clasificación.