SO Development

Ajuste fino de modelos YOLO con un proceso automatizado de etiquetado de datos

Introducción

Ajustar un modelo YOLO es un esfuerzo específico para adaptar detectores potentes y preentrenados a un dominio concreto. La dificultad no reside en la red, sino en obtener datos etiquetados correctamente, a gran escala y con una calidad constante. Un flujo de trabajo automatizado de etiquetado de datos combina preetiquetas asistidas por el modelo, aprendizaje activo, pseudoetiquetado, datos sintéticos y verificación humana para proporcionar dichos datos de forma rápida y económica. Esta guía explica la importancia de este flujo de trabajo, cómo se integran sus etapas y qué controles y métricas garantizan la fiabilidad del proceso para que pueda pasar de un pequeño conjunto de datos inicial a un detector listo para producción con un coste predecible y mejoras cuantificables.

Público objetivo y supuestos

Esta guía parte de la base de que:

  • Utilizas YOLO (v8+ o similar de la familia Ultralytics).

  • Tienes acceso a recursos de GPU modestos (1–8 GPU).

  • Puede ejecutar una interfaz de usuario de etiquetado con ingesta previa de etiquetas (CVAT, Label Studio, Roboflow, Supervisely).

  • Su objetivo es la implementación en producción en la nube o en el borde.

Proceso de extremo a extremo (alto nivel)

  1. Ingesta de datos: cámaras, dispositivos móviles, vídeo grabado, conjuntos de datos públicos, cargas de clientes.

  2. Preprocesamiento: extracción de fotogramas, deduplicación, agrupación de escenas, captura de metadatos.

  3. Preetiquetado: ejecutar un detector de línea base para crear sugerencias de modelos.

  4. Intervención humana: los anotadores corrigen las predicciones.

  5. Aprendizaje activo: seleccionar las imágenes más informativas para su revisión humana.

  6. Pseudoetiquetado: el modelo del profesor etiqueta imágenes sin etiquetar con alta confianza.

  7. Combinar, seleccionar, ampliar y convertir a YOLO/COCO.

  8. Ajustar el modelo. Realizar un seguimiento de los experimentos.

  9. Exportar, optimizar, implementar. Supervisar y reentrenar.

Diseñar cada etapa para su automatización mediante enlaces API y control de versiones para conjuntos de datos y especificaciones.

Recopilación y organización de datos

Entradas y señales que se deben recopilar para cada archivo:

  • ID de la fuente, marca de tiempo, metadatos de la cámara, ID de la escena, ID del vídeo de origen, ID del usuario que lo subió.

  • Metadatos de la etiqueta: id del anotador, paso de revisión, confianza de la anotación, fuente de la etiqueta (humana/pseudo/preetiqueta/sintética).
    Almacena la procedencia. Utiliza la agrupación de escenas/vídeos para crear divisiones de trenes/valores que eviten fugas.

Conjuntos de datos objetivo:

  • Semilla: 500–2,000 imágenes diversas con etiquetas humanas (dependiendo de la tarea).

  • Grupo de escalado: 10k–100k+ fotogramas sin etiquetar para pseudo/AL.

  • Validación: 500–2,000 imágenes verificadas exclusivamente por humanos. Nunca mezclar etiquetas pseudo en la validación.

Recopilación y organización de datos

Ontología y especificación de etiquetas

  • Mantenga el conjunto de clases mínimo y preciso. Evite la superposición de clases.

  • Elabore una especificación breve: reglas de inclusión, umbrales de oclusión, objetos truncados, política para objetos pequeños. Incluya entre 10 y 20 imágenes de ejemplo por regla.

  • Versionar la especificación y requerir aprobación antes del etiquetado masivo.

  • Realice un seguimiento del linaje de las etiquetas en una base de datos ligera o en un almacén de metadatos.

Preetiquetado (asistido por modelo)

¿Por qué?: Acelera el trabajo de los anotadores entre 2 y 10 veces. ¿Cómo?:

  • Ejecuta un modelo YOLO de referencia (preentrenado) en un conjunto de datos sin etiquetar. Guarda las predicciones en formato estándar (.txt o COCO JSON).

  • Importe las predicciones como una capa de anotación en la interfaz de usuario. Marque los recuadros delimitadores con la confianza de la predicción.

  • Para aumentar el rendimiento, solo se mostrarán a los anotadores las imágenes que superen un umbral de puntuación mínimo o cuyas clases predichas estén ausentes en el conjunto de datos.

Mando práctico (Ultralytics):

				
					yolo detect predict model=yolov8n.pt source=/data/pool imgsz=640 conf=0.15 save=True
				
			

Ajuste conf para controlar el esfuerzo de anotación. Consulte la documentación de ajuste fino de Ultralytics para obtener más detalles.

Flujo de trabajo y control de calidad con intervención humana

Flujo de trabajo:

  1. Importe las K imágenes preetiquetadas principales a la interfaz de usuario de anotación.

  2. Presentar recuadros predichos editables por el anotador. Mostrar la confianza del modelo.

  3. Aplicar la revisión de control de calidad a una muestra estratificada. Requerir una segunda revisión en caso de desacuerdo.

  4. Marcar las imágenes con casos ambiguos para su revisión por un especialista.

Controles de calidad:

  • Seguimiento de la concordancia entre anotadores.

  • Muestreo aleatorio de auditoría.

  • Comprobaciones automáticas de integridad de los cuadros delimitadores.
    Registre las métricas de control de calidad y utilícelas para la ponderación del conjunto de datos.

Aprendizaje activo: estrategias de selección

El aprendizaje activo reduce la necesidad de etiquetado al concentrar el esfuerzo humano. Utilice una puntuación de selección híbrida:

Puntuación de selección = α·incertidumbre + β·novedad + γ·diversidad

Lugar:

  • incertidumbre = 1 − confianza_máxima_clase en todas las detecciones.

  • novedad = distancia en el espacio de características desde el conjunto etiquetado (usar características de la columna vertebral).

  • diversidad = puntuación de agrupamiento para evitar imágenes redundantes.

Funciones comunes de adquisición:

  • Muestreo de incertidumbre (baja confianza).

  • Muestreo de margen (diferencia entre las dos puntuaciones de clase superiores).

  • Selección del conjunto principal (cobertura máxima).

  • Incertidumbre ponderada por densidad (priorizar las imágenes inciertas en regiones densas).

Estudios recientes sobre aprendizaje activo muestran mejoras sistemáticas y una notable optimización de la eficiencia de muestreo. Utilice conjuntos o MC-Dropout para obtener estimaciones de incertidumbre más precisas.

Pseudoetiquetado y expansión semi-supervisada

El pseudoetiquetado permite ampliar los datos etiquetados de forma económica. Riesgos: las cajas con ruido perjudican el aprendizaje. Controles:

  1. Personal docente: se prefiere un modelo docente de alta calidad (un grupo numeroso o un conjunto de profesores).

  2. Umbrales duales:

    • confianza_de_clasificación ≥ T_cls (ej., 0.9).

    • calidad_localización ≥ T_loc (por ejemplo, proxy IoU o métrica de varianza del centro).

  3. Ponderación: añadir pseudo muestras con menor peso de pérdida w_pseudo (por ejemplo, 0.1–0.5) o utilice la ponderación de la muestra según la confianza del profesor.

  4. Filtrado: aplique filtros guiados por densidad o por consistencia de puntuación para eliminar los falsos positivos densos.

  5. Entrenamiento de consistencia: aumentar los pseudoejemplos y forzar predicciones estables (pérdida de consistencia).

Métodos fundamentales como PseCo y sus derivados detallan pseudoetiquetas con información de localización y entrenamiento de consistencia. Estos enfoques mejoran la fiabilidad de las pseudoetiquetas y el rendimiento posterior.

Datos sintéticos y aleatorización de dominio

Cuando la recopilación de datos reales sea escasa o peligrosa, genere imágenes sintéticas. Buenas prácticas:

  • Utilice la aleatorización del dominio: varíe la iluminación, las texturas, los fondos, la posición de la cámara, el ruido y la oclusión.

  • Mezcla datos sintéticos y reales: realiza un preentrenamiento con datos sintéticos y luego afina el ajuste con un pequeño conjunto de datos reales.

  • Valide los resultados con un conjunto de datos de validación real reservado. Las métricas de validación sintéticas suelen sobreestimar el rendimiento real; siempre verifique con datos reales. Estudios recientes en fabricación y robótica confirman estas limitaciones.

Herramientas: Blender+Python, Unity Perception, NVIDIA Omniverse Replicator. Guardar metadatos de segmentación/máscara/instancia para tareas posteriores.

Política de aumento (práctica)

YOLO se beneficia de una fuerte mejora sobre la marcha al principio del entrenamiento y de una mejora reducida en las pasadas finales.

Política gradual sugerida:

  • Fase 1 (calentamiento, épocas 0–20): aumento agresivo. Mosaico, MixUp, escala aleatoria, fluctuación de color, desenfoque, corrupción JPEG.

  • Fase 2 (entrenamiento intermedio, épocas 21-60): aumento moderado. Mantener Mosaic pero con menor probabilidad.

  • Fase 3 (ajuste final, últimas 10-20% épocas): aumento mínimo para permitir que el modelo se estabilice.

Notas:

  • El mosaico facilita el aprendizaje de objetos pequeños, pero puede introducir un contexto artificial. Reduzca la probabilidad de mosaico en las fases finales.

  • Utiliza CutMix o copiar y pegar para equilibrar las clases poco frecuentes.

  • No aumente las divisiones de validación o prueba.

La documentación de Ultralytics incluye detalles específicos sobre el aumento de datos y la configuración recomendada.

Recetas para perfeccionar YOLO (detalladas)

Elija el modelo inicial en función del equilibrio entre latencia y precisión:

  • Iteración / prototipado: yolov8n (nano) o yolov8s (pequeño).

  • Producción: yolov8m or yolov8l/x Dependiendo del objetivo.

Receta estándar:

  1. Preparar data.yaml:

				
					train: /data/train/images
val: /data/val/images
nc: <num_classes>
names: ['class0','class1',...]
				
			

2. Etapa 1 — solo la cabeza:

				
					yolo detect train model=yolov8n.pt data=data.yaml epochs=25 imgsz=640 batch=32 freeze=10 lr0=0.001
				
			

3. Etapa 2 — descongelar el modelo completo:

				
					yolo detect train model=runs/train/weights/last.pt data=data.yaml epochs=75 imgsz=640 batch=16 lr0=0.0003

				
			

4. Barrido final: bajar LR, desactivar aumentos pesados, entrenar pocas épocas para estabilizar.

Notas sobre hiperparámetros:

  • Optimizador: SGD con momentum 0.9 suele generalizar mejor para la detección. AdamW permite una convergencia rápida.

  • LR: calentamiento, se recomienda la función de decaimiento coseno. Inicie LR según el escalado del tamaño del lote.

  • Tamaño del lote: maximizar para la memoria de la GPU. Usar acumulación de gradiente si el lote es pequeño.

  • Decaimiento de peso: 5e-4 típico.

  • Pérdida: Pérdida YOLO (clasificación + objetividad + caja) — considere la pérdida focal si el desequilibrio de clases es grave.

Realice el seguimiento de los experimentos con W&B, MLflow o registros CSV simples.

Advertencia: el ajuste de los anclajes puede ser útil cuando las relaciones de aspecto de los objetos difieren mucho de los anclajes preentrenados.

Consulte la guía de ajuste y evaluación de Ultralytics para obtener consejos prácticos.

Recetas para perfeccionar YOLO

Estrategia de evaluación, métricas y validación

  • Primario: mAP@0.5 y mAP@[0.5:0.95]. Informar ambos.

  • Secundarias: AP por clase, precisión, recuperación, F1, matriz de confusión.

  • Operacional: latencia, memoria, rendimiento de inferencia y tiempo de canalización de extremo a extremo.

  • Análisis de negativos difíciles: muestrear los principales falsos positivos y falsos negativos y clasificar sus causas (errores de etiquetado, brecha de dominio, oclusión, objetos pequeños).

  • Ablaciones: prueba con/sin etiquetas pseudo, con variaciones w_pseudoy con/sin datos sintéticos para medir las ganancias marginales.

La documentación de Ultralytics ofrece información práctica sobre la evaluación y cómo interpretar el mAP para tareas de detección.

Lista de verificación para el diseño de experimentos y la ablación

Para cada experimento:

  • Corregir la semilla aleatoria. Guardar la semilla y el entorno.

  • Guardar el ID de confirmación del conjunto de datos (hash de versión del conjunto de datos).

  • Configuración del modelo de registro, hiperparámetros, aumentos y número de pseudoetiquetas.

  • Ejecuta al menos 3 semillas para realizar comparaciones críticas.

  • Comparar únicamente con el conjunto de validación verificado por humanos.

Ablaciones a realizar:

  • Etiquetado previo frente a no etiquetado previo.

  • Barrido de umbral de pseudoetiqueta (por ejemplo, 0.8, 0.9, 0.95).

  • barrido de peso pseudo (por ejemplo, 0.1, 0.3, 0.5).

  • barrido de fracción sintética (0%, 25%, 50%, 75% sintético).

  • barrido de probabilidad de mosaico.

CI/CD para modelos y conjuntos de datos

  • CI del conjunto de datos: al subir una versión del conjunto de datos, ejecute comprobaciones rápidas de control de calidad (recuadro delimitador dentro de la imagen, archivos faltantes, equilibrio de clases, desviación de la distribución con respecto a la versión anterior).

  • Entrenamiento de CI: ejecutar una prueba de humo en un subconjunto pequeño y hacer fallar el pipeline en caso de regresiones obvias.

  • Puerta de validación: requiere un mAP mínimo en la validación y una latencia estable antes de la promoción automática.

  • Almacenamiento de artefactos: almacenar best.pt, last.pt, ONNX/TensorRT exportado y registros de entrenamiento. Etiquetado por conjunto de datos y confirmación del modelo.

  • Canary: desplegar en un entorno de prueba y monitorizar los errores durante el tiempo mínimo necesario antes del despliegue completo.

Exportación de modelos y optimizaciones de bordes

  • Exporta a ONNX y luego optimiza a TensorRT para la inferencia de NVIDIA. Para dispositivos móviles, usa TFLite o CoreML.

  • Cuantización: primero FP16, luego INT8 con un conjunto de datos de calibración si está disponible. Validar con datos reales después de la cuantización.

  • Poda: poda de canales para cumplir con presupuestos de latencia estrictos. Reentrenar después de la poda si es necesario.

  • Postprocesamiento: optimizar NMS (variantes NMS rápido o Soft-NMS) y preprocesamiento por lotes.

Ejemplo de exportación de Ultralytics:

				
					yolo export model=runs/detect/train/weights/best.pt format=onnx
				
			

Monitoreo y detección de deriva

  • Monitorear las distribuciones de confianza por clase y las incrustaciones de características a lo largo del tiempo.

  • Periódicamente, muestrear las predicciones de baja confianza y enviarlas a una cola de AL para su revisión humana.

  • Mantenga un pequeño conjunto de prueba rotatorio verificado por humanos proveniente de la producción para una evaluación continua.

  • Activar el reentrenamiento cuando mAP disminuya en un delta configurable o cuando la divergencia de la distribución de características supere un umbral.

Estimaciones de costos, esfuerzo humano y plazos

Las estimaciones dependen del dominio. Estimación aproximada para un dominio medio (3-10 clases):

  • Etiquetado de semillas (1k imágenes etiquetadas): 1–3 semanas con un equipo pequeño.

  • Preetiquetado + corrección humana (grupo de 10k): 2–6 semanas con ciclos AL.

  • Entrenamientos y búsqueda de hiperparámetros: 1–3 semanas.

  • Tiempo de preparación para la producción: de 4 a 12 semanas en total.
    El aprendizaje activo y el preetiquetado suelen reducir el coste del etiquetado entre 2 y 10 veces, dependiendo del grado de madurez del dominio. Diversos estudios e investigaciones de campo confirman mejoras sustanciales al aplicar el aprendizaje activo y el preetiquetado.

Modos de fallo comunes y soluciones

  • Las pseudoetiquetas ruidosas degradan la precisión. Solución: aumentar el umbral de confianza del profesor, añadir comprobaciones de localización, reducir w_pseudo.

  • Sobreajuste a estilos sintéticos. Solución: mezclar datos reales antes, ajustar la aleatorización del dominio, usar la transferencia de estilo como método de aumento de datos.

  • Fallo en la recuperación de objetos pequeños tras redimensionar las imágenes a un tamaño demasiado bajo. Solución: aumentar imgsz, agregue aumento de objetos pequeños, use variantes FPN para una mayor resolución de características.

  • Los artefactos de mosaico crean un contexto imposible. Solución: reducir la probabilidad de mosaico o desactivarlos en el ajuste final.

Bucle concreto de aprendizaje activo + pseudoetiqueta (pseudocódigo)

				
					# high-level pseudocode
for cycle in range(max_cycles):
    # 1. infer on unlabeled pool
    preds = model.predict(unlabeled_images, batch=bs)
    # 2. compute uncertainty and novelty
    scores = compute_score(preds, features, labeled_features)
    # 3. select top-K for annotation
    to_label = select_top_k(scores, K)
    annotated = annotator_api.label_images(to_label, prelabels=preds)
    # 4. add high-confidence preds as pseudo labels
    pseudo = [p for p in preds if p.confidence >= pseudo_thresh and loc_quality(p) >= loc_thresh]
    # 5. create training set with weights
    train_set = combine(human_labels, pseudo)  # with sample weights for pseudo
    # 6. train/fine-tune model
    model.train(train_set, epochs=E, lr=lr)
    # 7. evaluate on human-verified validation set
    val_metrics = model.eval(val_set)
    if val_metrics['mAP50_95'] improves < delta:
        break

				
			

Implementar compute_score Utilizando la discrepancia de conjunto o MC Dropout para una mayor incertidumbre.

Apéndice A — Ejemplo de archivo data.yaml

				
					train: /mnt/data/dataset/train/images
val: /mnt/data/dataset/val/images
nc: 4
names: ['person','helmet','vest','tool']

				
			

Apéndice B — Lista de verificación rápida antes de la primera prueba de producción

Conjunto de datos semilla etiquetado y con control de calidad.

Conjunto de validación verificado por humanos y aislado.

Se versionó y publicó la especificación.

Se ha realizado la ejecución previa al etiquetado de referencia y se ha probado el flujo de trabajo del anotador.

El script de selección AL se validó en un grupo pequeño.

Las configuraciones de entrenamiento y la CLI se probaron en un entorno reproducible.

Se ha validado el script de referencia de exportación e inferencia.

Plan de despliegue de Canary creado.

Conclusión

Un programa de ajuste fino de YOLO para producción es un problema de sistemas iterativo, no un entrenamiento puntual. Comience con una semilla pequeña y de alta calidad y automatice los pasos repetitivos: preetiquetado, selección, control de calidad y control de versiones. Utilice aprendizaje activo y una cuidadosa gestión de pseudoetiquetas para escalar, manteniendo un conjunto de validación estrictamente verificado por humanos como única fuente de información fiable. Instrumente cada paso con linaje, métricas y puntos de integración continua para que el reentrenamiento sea rutinario, auditable y seguro para su implementación. Implemente estos elementos y convertirá el esfuerzo de etiquetado manual en un motor repetible que ofrece mejores detectores más rápido y a menor costo.

Visite nuestro servicio de anotación de datos


Esto cerrará en 20 segundos