Detección de objetos con YOLO11 – Ultralytics TASKS

Por Administrador

¡Hola, hola, Omesitos! Previamente habíamos visto: Descubre Ultralytics YOLO, modelos, soluciones y más para Visión por Computador 👁️ En donde abordamos lo que nos ofrece Ultralytics, tanto sus modelos, tareas, datasets, soluciones, entre otros. Pero lo vimos brevemente, por ello, en esta oportunidad, vamos a empezar con el apartado de Computer Vision Tasks de Ultralytics YOLO11, específicamente la detección de objetos con YOLOv11. Así que, ¡vamos a por ello!.

¿Qué es la detección de Objetos?

La detección de objetos es una tarea en la cual se identifica la localización y clase a la que pertenecen objetos en una imagen, video o videostream. Para llevarlo a cabo se necesita de un modelo o detector, el cual será capaz de devolver el cuadro delimitador (bounding box) y etiquetas de las clases de cada objeto detectado. 

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

🖼️ Detección de objetos sobre imágenes con YOLOv11 de Ultralytics

from ultralytics import YOLO

# Cargamos el modelo YOLO
model = YOLO("yolo11n.pt")

# Especificar la imagen o su URL
source = "https://omes-va.com/wp-content/uploads/2025/02/Datasets_720x405.jpg"
#source = ["./Inputs/001_image.jpg", "./Inputs/002_image.jpg", "./Inputs/003_image.jpg", "./Inputs/004_image.jpg"]

# Realizamos la inferencia de YOLO
results = model(source)
#print(results)
# Visualizar los resultados
#results[0].show()
for result in results:
    print("-----")
    print(result)
    print(result.boxes)
    result.show()

🖼️ Detección de objetos 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/001_image.jpg")
# Cargamos el modelo YOLO
model = YOLO("yolo11n.pt")

# Realizamos la inferencia sobre la imagen
results = model(image)

for result in results:
    print(result)
    # Extraemos los nombres de las clases detectadas
    names = [result.names[int(label)] for label in result.boxes.cls]
    print(names)
    # Extraemos las coordenadas de las cajas delimitadoras
    xyxys = result.boxes.xyxy
    for i, xyxy in enumerate(xyxys):
        x1, y1 = int(xyxy[0]), int(xyxy[1])
        x2, y2 = int(xyxy[2]), int(xyxy[3])
        cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 255), 2)
        cv2.putText(image, names[i], (x1, y1 -5), 1, 1.1, (0, 255, 255), 2)
    cv2.imshow("Image", image)
    cv2.waitKey(0)
cv2.destroyAllWindows()

🎞️ Detección de objetos sobre un video de Youtube con YOLOv11 de Ultralytics

from ultralytics import YOLO
import cv2
import imutils

# Cargamos el modelo YOLO
model = YOLO("yolo11n.pt")

# Especificar la URL del video
source = "https://www.youtube.com/watch?v=SWo_7mELz-o&t"

# Realizamos la inferencia de YOLO
results = model(source, stream=True)

for result in results:
    annotated_frame = result.plot()
    annotated_frame = imutils.resize(annotated_frame, width=640)

    # Display the annotated frame
    cv2.imshow("YOLO Inference", annotated_frame)
    # El ciclo se rompe al presionar "Esc"
    if cv2.waitKey(1) & 0xFF == 27:
        break
cv2.destroyAllWindows()

🎞️ Detección de objetos sobre videos con YOLOv11 de Ultralytics

from ultralytics import YOLO
import cv2

# Cargamos el modelo YOLO
model = YOLO("yolo11n.pt")

# Cargamos el video de entrada
video_path = "./Inputs/people_walking.mp4"
cap = cv2.VideoCapture(0)

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()
    print(annotated_frame)

    # 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 sido útil y que se animen a probar los detectores de objetos que nos ofrece Ultralytics usando YOLOv11. 📌 Por cierto, no olvides revisar el video si quieres ver todo el paso a paso en acción.

¡Nos vemos en el siguiente post!