🔍 ¿Qué hay en esta imagen? | Aplica Clasificación de imágenes con Ultralytics – YOLO11
¡Hola, hola, Omesitos! Es hora de que identifiquemos el contenido de una imagen, gracias a la tarea de clasificación con los modelos de YOLOv11. Y es que tiene muchísimas categorías que podríamos identificar, ya que los modelos que nos ofrece Ultralytics han sido entrenados con el ImageNet, lo que quiere decir que tenemos mil categorías o clases a predecir. Así que, ¡vamos a por ello!
¿Qué es la clasificación de imágenes?
La clasificación de imágenes es una aplicación de la visión por computador cuyo objetivo es identificar el contenido principal de una imagen. Esta tarea es mucho más simple que la detección o segmentación de objetos, ya que allí se busca identificar la ubicación de los mismos, mientras que la clasificación lo hace de forma global en la imagen.

Como lo comentaba previamente, los modelos YOLOv11 que nos ofrece Ultralytics han sido entrenados con el ImageNet que contiene mil clases, lo que los hace de mucha ayuda en distintos proyectos.
Cabe destacar que cuando uno de los modelos realiza una predicción, se asignan probabilidades a todas clases, por esta razón Ultralytics nos entrega dos métricas clave, que veremos a continuación:
- Top-1 Accuracy: Corresponde a la predicción del modelo que presenta la mayor probabilidad.
- Top-5 Accuracy: Corresponde a las 5 probabilidades más altas que presenta la predicción del modelo.
🔧 Instalación de Ultralytics
Para llevar a cabo esta práctica debemos instalar Ultralytics, a través de:
pip install ultralytics
Puedes verificar su instalación y versión con: pip freeze
Nota: A continuación te dejo la programación usada en el video. Si quieres ver el paso a paso explicado con más detalle, ¡no te pierdas el video completo!
🖼️ Clasificación sobre imágenes con YOLOv11 de Ultralytics
from ultralytics import YOLO # Cargamos el modelo YOLO model = YOLO("yolo11x-cls.pt") # Cargamos la imagen images = "./Inputs/*.jpg" # Realizamos la inferencia de YOLO results = model(images) print(results) # Visualizar los resultados for res in results: res.show()
🖼️ Clasificación sobre imágenes leídas con OpenCV con YOLOv11 de Ultralytics
from ultralytics import YOLO import cv2 # Cargamos la imagen de entrada image = cv2.imread("./Inputs/image.jpg") # Cargamos el modelo YOLO model = YOLO("yolo11l-cls.pt") # Realizamos la inferencia sobre la imagen result = model(image) # Explorando los resultados print(result[0]) print(result[0].probs) # TOP 1 name_top1 = result[0].names[result[0].probs.top1] prob_top1 = result[0].probs.top1conf cv2.putText(image, f"TOP 1", (10, 20), 1, 1.3, (0, 255, 0), 2) cv2.putText(image, f"{name_top1}: {prob_top1*100:.2f} %", (10, 45), 1, 1.4, (0, 255, 0), 2) # TOP 5 index_top5 = result[0].probs.top5 prob_top5 = result[0].probs.top5conf cv2.putText(image, f"TOP 5", (10, 70), 1, 1.3, (255, 0, 0), 2) x = 10 y = 95 for index, prob in zip(index_top5, prob_top5): print(index, prob) name = result[0].names[index] cv2.putText(image, f"{name}: {prob*100:.2f} %", (x, y), 1, 1.3, (255, 0, 0), 2) y += 25 cv2.imshow("image", image) cv2.waitKey(0) cv2.destroyAllWindows()
🎞️ Clasificación sobre videos con YOLOv11 de Ultralytics
from ultralytics import YOLO import cv2 # Cargamos el modelo YOLO model = YOLO("yolo11s-cls.pt") # Cargamos el video de entrada video_path = "./Inputs/video_001.mp4" cap = cv2.VideoCapture(video_path) while cap.isOpened(): # Leemos el frame del video ret, frame = cap.read() if not ret: break # Realizamos la inferencia de YOLO sobre el frame results = model(frame) # Extraemos los resultados annotated_frame = results[0].plot() # Visualizamos los resultados cv2.imshow("YOLO Inference", annotated_frame) # El ciclo se rompe al presionar "Esc" if cv2.waitKey(1) & 0xFF == 27: break cap.release() cv2.destroyAllWindows()
Y eso ha sido todo por este post, Omesitos.
Espero que les haya resultado útil y que se animen a probar la clasificación de imágenes con los modelos de Ultralytics usando YOLOv11.
📌 No olviden revisar el video si desean ver todo el paso a paso en acción.
¡Nos vemos en el siguiente post!