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.
¿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
| Modelo | Parámetros | mAP | FPS (GPU) |
| yolo11n | 2.6M | 39.5 | 160 |
| yolo11s | 9.4M | 47.0 | 120 |
| yolo11m | 20.1M | 51.5 | 80 |
| yolo11l | 43.7M | 53.4 | 50 |
| yolo11x | 68.2M | 54.7 | 30 |
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?
¿Necesito una GPU potente para usar YOLO?
¿Puedo entrenar YOLO para detectar objetos personalizados?
¿Cuál es la diferencia entre YOLOv8 y YOLOv11?
¿Se puede integrar YOLO en una aplicación web?
¿Necesitas ayuda con tu proyecto?
En Soluciones Web desarrollamos soluciones de IA, automatización y desarrollo web. Consultoría inicial gratuita.