Detección de objetos con YOLO11 – Ultralytics TASKS
¡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!
Sería posible, sin entrenamiento previo, leyendo una cámara, haciendo un click en un momento determinado, tras el cual, se abre una pantalla en que se pueda seleccionar un área de la captura y después de determinarla, se siga buscando lo seleccionado y siga aprendiendo sobre ese objeto (que puede ser cualquier cosa)????