OMES

🔍 ¿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:

🔧 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!

Salir de la versión móvil