Guía integral para desarrollar con YOLO: conceptos, datos, entrenamiento, evaluación, tiempo real, API de producción, rendimiento, seguridad y entrevistas.
YOLO (“You Only Look Once”) es una familia de detectores de objetos de una sola etapa. Mientras la clasificación asigna una etiqueta a toda la imagen, un detector devuelve varias predicciones: clase, confianza y caja delimitadora para cada objeto.
YOLO se utiliza en tráfico, inspección industrial, robótica, agricultura, deporte, comercio y vídeo en tiempo real. Su ventaja práctica es el equilibrio entre precisión, latencia, tamaño y facilidad de despliegue.
Un umbral de confianza alto reduce falsos positivos, pero puede perder objetos difíciles. Debe elegirse según el coste real de cada error.
La arquitectura suele incluir un Backbone para extraer características, un Neck para fusionar escalas y un Detection Head para producir predicciones.
python -m venv .venv
source .venv/bin/activate
pip install ultralytics opencv-python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
result = model.predict("street.jpg", conf=0.35, imgsz=640)[0]
for box in result.boxes:
class_id = int(box.cls.item())
print({
"class": model.names[class_id],
"confidence": float(box.conf.item()),
"xyxy": box.xyxy[0].tolist(),
})
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
camera = cv2.VideoCapture(0)
while camera.isOpened():
ok, frame = camera.read()
if not ok:
break
result = model.predict(frame, conf=0.4, verbose=False)[0]
cv2.imshow("YOLO", result.plot())
if cv2.waitKey(1) & 0xFF == ord("q"):
break
camera.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.train(
data="dataset.yaml",
epochs=100,
imgsz=640,
batch=16,
device=0,
project="runs/safety",
name="baseline",
)
path: /absolute/path/to/dataset
train: images/train
val: images/val
test: images/test
names:
0: person
1: helmet
2: safety_vest
Empieza con un modelo pequeño para establecer una línea base de latencia. Usa uno mayor sólo si la mejora medida compensa memoria y cómputo.
Una línea de etiqueta YOLO normalmente contiene:
class_id x_center y_center width height
Las coordenadas están normalizadas. Separa images y labels en train, val y test. No distribuyas aleatoriamente fotogramas vecinos del mismo vídeo entre entrenamiento y validación; son casi duplicados y producen fuga de datos.
Los pesos preentrenados son el mejor punto de partida en la mayoría de los casos. Más épocas no arreglan etiquetas incorrectas, fuga de datos ni escenarios ausentes.
No te limites a un mAP global. Divide resultados por clase, tamaño, cámara, cliente, iluminación, clima, oclusión, desenfoque, distancia y compresión. Mantén una galería de falsos positivos, falsos negativos, errores de localización y duplicados.
Carga y calienta el modelo una sola vez al iniciar la aplicación. Valida contenido, tamaño de archivo y dimensiones. Procesa vídeos largos como trabajos asíncronos con progreso en vez de mantener una petición HTTP abierta.
Un servicio resistente separa gateway y autenticación, validación de cargas, almacenamiento, cola, workers de inferencia, resultados, monitorización y auditoría.
Mide latencia completa: decodificación, resize, transferencia, inferencia, NMS, dibujo, serialización y red. Usa FP16 en hardware compatible, limita concurrencia y cola, y controla p50, p95, p99, memoria y fotogramas descartados.
Después de exportar a ONNX, TensorRT u OpenVINO, ejecuta pruebas de regresión por clase frente al modelo original.
Las imágenes pueden contener caras, matrículas, pantallas, direcciones y espacios privados. Aplica minimización, retención limitada, control de acceso y cifrado. No confíes en la extensión ni cargues modelos no confiables. YOLO es probabilístico y no debe ser la única autoridad en decisiones médicas, legales, laborales o de seguridad de alto riesgo.
Predice ubicaciones y clases directamente, sin una fase separada de propuestas.
La superposición entre caja predicha y real respecto a su área combinada.
Depende del coste. Un control de seguridad puede priorizar recall; un bloqueo automático requiere precision alta.
Mejorar datos y etiquetas de alta resolución, ajustar tamaño y aumentos, conservar características multiescala y evaluar tiling.
Un proyecto YOLO es un proyecto de datos y sistemas, no sólo un comando de entrenamiento. Crea una línea base medible, mejora datos a partir de errores reales y optimiza después de perfilar todo el flujo.
Todavía no hay comentarios aprobados. Las respuestas nuevas pueden esperar moderación.