8 min de lectura

YOLO para Detección de Objetos: Implementación con Python y Ultralytics

Tutorial práctico para implementar YOLOv11 en proyectos de visión artificial. Desde instalación hasta optimización de rendimiento.

YOLOvisión artificialdetección de objetospythonultralyticscomputer visionYOLOv11

¿Qué es YOLO?

YOLO (You Only Look Once) es una familia de modelos de detección de objetos en tiempo real. A diferencia de otros métodos que analizan la imagen en múltiples pasos, YOLO procesa toda la imagen en una sola pasada, logrando velocidades de hasta 100+ FPS.

Evolución de YOLO

  • YOLOv1-v3: Fundamentos del modelo
  • YOLOv5: Popularizó YOLO con PyTorch
  • YOLOv8: Arquitectura mejorada de Ultralytics
  • YOLOv10/v11: Versiones más recientes con mejor precisión

Instalación de YOLOv11

Requisitos

  • Python 3.8+
  • GPU con CUDA (recomendado) o CPU
  • pip o conda

Instalación con pip

pip install ultralytics

Verificar instalación

from ultralytics import YOLO

# Cargar modelo preentrenado model = YOLO('yolo11n.pt') # nano (más rápido) # model = YOLO('yolo11s.pt') # small # model = YOLO('yolo11m.pt') # medium # model = YOLO('yolo11l.pt') # large # model = YOLO('yolo11x.pt') # extra large (más preciso)

print("YOLO instalado correctamente!")


Tu Primera Detección

Detectar objetos en una imagen

from ultralytics import YOLO
import cv2

# Cargar modelo model = YOLO('yolo11n.pt')

# Inferencia en imagen results = model('imagen.jpg')

# Mostrar resultados for result in results: # Obtener imagen con bounding boxes annotated = result.plot() cv2.imshow('Detecciones', annotated) cv2.waitKey(0)

# Acceder a detecciones for box in result.boxes: clase = result.names[int(box.cls)] confianza = float(box.conf) coordenadas = box.xyxy[0].tolist() # [x1, y1, x2, y2] print(f"{clase}: {confianza:.2f} en {coordenadas}")

Detección en video en tiempo real

from ultralytics import YOLO
import cv2

model = YOLO('yolo11n.pt')

# Abrir webcam (0) o video cap = cv2.VideoCapture(0)

while cap.isOpened(): ret, frame = cap.read() if not ret: break

# Inferencia results = model(frame) annotated = results[0].plot()

cv2.imshow('YOLO en Tiempo Real', annotated)

if cv2.waitKey(1) & 0xFF == ord('q'): break

cap.release() cv2.destroyAllWindows()


Entrenamiento Personalizado

Preparar dataset (formato YOLO)

dataset/
├── train/
│   ├── images/
│   │   ├── img001.jpg
│   │   └── img002.jpg
│   └── labels/
│       ├── img001.txt
│       └── img002.txt
├── val/
│   ├── images/
│   └── labels/
└── data.yaml

Formato de labels (un archivo .txt por imagen)

# clase x_centro y_centro ancho alto (normalizado 0-1)
0 0.5 0.5 0.2 0.3
1 0.3 0.7 0.15 0.25

Archivo data.yaml

path: ./dataset
train: train/images
val: val/images

names: 0: persona 1: auto 2: perro

Entrenar el modelo

from ultralytics import YOLO

model = YOLO('yolo11n.pt') # Partir de modelo preentrenado

results = model.train( data='data.yaml', epochs=100, imgsz=640, batch=16, device=0, # GPU 0 patience=20, # Early stopping )


Optimización de Rendimiento

1. Elegir el modelo correcto

ModeloParámetrosmAPFPS (GPU)
yolo11n2.6M39.5160
yolo11s9.4M47.0120
yolo11m20.1M51.580
yolo11l43.7M53.450
yolo11x68.2M54.730

2. Exportar a formatos optimizados

# Exportar a ONNX (multiplataforma)
model.export(format='onnx')

# Exportar a TensorRT (NVIDIA, máximo rendimiento) model.export(format='engine')

# Exportar a CoreML (Apple) model.export(format='coreml')

3. Reducir tamaño de imagen

results = model(frame, imgsz=320)  # Más rápido que 640

4. Usar half precision (FP16)

model = YOLO('yolo11n.pt')
model.to('cuda')
model.half()  # FP16 en GPU

Casos de Uso Reales

1. Control de inventario

Detectar productos en estantes para gestión automática de stock.

2. Seguridad

Detección de intrusos, reconocimiento de placas, conteo de personas.

3. Agricultura

Identificar plagas, contar frutos, monitorear cultivos con drones.

4. Manufactura

Control de calidad visual, detección de defectos en línea de producción.

Conclusión

YOLO democratizó la visión artificial. Con pocas líneas de código puedes implementar detección de objetos de nivel producción.

¿Necesitas implementar visión artificial en tu proyecto? Contactame y te ayudo a diseñar la solución.

Preguntas Frecuentes

¿Qué es YOLO y para qué sirve?
YOLO (You Only Look Once) es un algoritmo de detección de objetos en tiempo real. Permite identificar y localizar múltiples objetos en imágenes o video con alta velocidad, ideal para aplicaciones como seguridad, control de calidad industrial, conteo de personas y vehículos autónomos.
¿Necesito una GPU potente para usar YOLO?
Para inferencia (usar el modelo), una GPU de gama media es suficiente. Los modelos más pequeños (YOLOv11n) pueden correr incluso en CPU. Para entrenamiento de modelos personalizados, sí se recomienda una GPU con al menos 8GB VRAM.
¿Puedo entrenar YOLO para detectar objetos personalizados?
Sí. YOLO permite fine-tuning con datasets propios. Necesitas imágenes etiquetadas de los objetos que quieres detectar. Con 100-500 imágenes por clase ya puedes obtener buenos resultados.
¿Cuál es la diferencia entre YOLOv8 y YOLOv11?
YOLOv11 es la versión más reciente con mejoras en precisión y velocidad. Incluye mejor arquitectura backbone, soporte mejorado para segmentación y pose estimation. Para proyectos nuevos, se recomienda usar YOLOv11.
¿Se puede integrar YOLO en una aplicación web?
Sí. Puedes exportar modelos YOLO a formatos como ONNX o TensorFlow.js para ejecutar en navegadores. También puedes crear una API con FastAPI o Flask que procese imágenes y devuelva las detecciones.

¿Necesitas ayuda con tu proyecto?

En Soluciones Web desarrollamos soluciones de IA, automatización y desarrollo web. Consultoría inicial gratuita.