# Después del entrenamiento

Ahora estás cerca de desplegar tu modelo: es el momento en que conviertes “números” en un modelo que realmente funcione en tu flujo de trabajo real.

***

## 1) Encuentra los resultados del entrenamiento (weights + config + names) <a href="#id-1-find-output" id="id-1-find-output"></a>

Cuando termina el entrenamiento, los mensajes de registro/estado muestran dónde se escriben los resultados.

En AugeLab Studio, los resultados de entrenamiento se crean normalmente en una carpeta llamada:

XXX\_config

justo al lado de tu carpeta de dataset (XXX es el nombre de la carpeta del dataset).

Estructura típica:

```
XXX_config/
    XXX.names
	XXX.cfg
	backup/
		XXX_last.weights  (si está disponible)
		XXX_best.weights  (si está disponible)
```

Como mínimo, debes conservar estos archivos juntos:

* Archivo de weights: `.weights` (a veces hay un archivo estilo best vs last)
* Archivo de configuración: `.cfg`
* Archivo de nombres de clases: `.names`

{% hint style="warning" %}
No renombres ni reordenes las clases en tu archivo `.names` después del entrenamiento a menos que también reasignes los IDs de etiquetas. El orden de clases debe coincidir con los IDs de etiquetas.
{% endhint %}

<details>

<summary>¿Qué weights debo usar: best vs last?</summary>

Si tu entrenamiento reporta mAP durante el proceso, muchos flujos de trabajo YOLO/Darknet mantienen un punto de control “mejor hasta ahora”.

* Usa best cuando la mAP mejoró y luego bajó (overfitting).
* Usa last si el entrenamiento terminó mientras la mAP aún mejoraba y estaba estable.

Si no tienes un archivo “best”, elige primero los weights finales y luego valida.

</details>

***

## 2) Valida el modelo antes de desplegarlo <a href="#id-2-validate-before-deploy" id="id-2-validate-before-deploy"></a>

Antes de integrar el modelo en la lógica de producción, haz una pasada de validación rápida.

Conjuntos de validación recomendados:

* Validation set: 30–100 imágenes que representen la vida real (buena + mala iluminación, desenfoque, desorden, casos límite)
* Videos cortos o imágenes: video corto de la cámara real (si vas a desplegar en una cámara fija)

Qué debes comprobar:

* El modelo detecta el objeto correcto de forma consistente
* Las cajas son “lo suficientemente buenas” para tu lógica (no necesariamente perfectas)
* Los falsos positivos son aceptables (o pueden filtrarse)
* Los casos raros pero importantes se detectan

{% hint style="warning" %}
Una mAP alta puede fallar en producción si tu split de validación fue demasiado pequeño o demasiado limpio. La comprobación con el conjunto de validación / metraje real previene eso.
{% endhint %}

***

## 3) Carga el modelo en Studio (Inferencia) <a href="#id-3-load-into-graph" id="id-3-load-into-graph"></a>

En AugeLab Studio, el siguiente paso habitual es construir (o actualizar) un escenario `.pmod` que ejecute la inferencia.

### A) Usa “Object Detection - Custom” (recomendado) <a href="#id-3a-use-object-detection-custom" id="id-3a-use-object-detection-custom"></a>

Usa este nodo cuando quieras ejecutar tu propio modelo entrenado con YOLO/Darknet dentro de un workflow.

Flujo de trabajo:

1. Añade Object Detection - Custom a tu grafo (categoría AI Applications).
2. En la UI del bloque:
   * Haz clic en Open Weight File y selecciona tu `.weights`
   * Haz clic en Open Config File y selecciona tu `.cfg`
   * Haz clic en Open Class File y selecciona tu `.names`
3. Selecciona qué clases quieres detectar (lista con checkboxes).
4. Ajusta el Confidence Threshold (comienza alrededor de 0.5–0.8 y ajústalo).
5. Conecta una fuente de imagen a la entrada del bloque y previsualiza la imagen de salida.

Salidas que puedes usar en tu lógica:

* Imagen de salida con detecciones dibujadas
* Object Count
* Object Locations / Sizes
* Object Classes
* Rectangles

{% hint style="info" %}
Si “Object Detection - Custom” no está disponible, es posible que tu build no tenga habilitado el soporte CUDA/OpenCV DNN. Prueba el bloque CPU más abajo, o instala los módulos necesarios desde el Module Downloader (ver [ai-training.md](https://docs.augelab.com/spanish/caracteristicas-clave/train-custom-ai-models-with-training-window)).
{% endhint %}

### B) Usa “Object Detection - Custom (CPU)” (alternativa) <a href="#id-3b-use-object-detection-custom-cpu" id="id-3b-use-object-detection-custom-cpu"></a>

Usa este bloque cuando quieras el mismo workflow pero sin aceleración por GPU.

* Usa inferencia por CPU, por lo que será más lento.
* La configuración es la misma: weights + cfg + names.

***

## 4) Ajusta los umbrales (lo que realmente importa) <a href="#id-4-tune-thresholds" id="id-4-tune-thresholds"></a>

La mayoría de las mejoras de “calidad de despliegue” provienen del ajuste de umbrales, no de prolongar el entrenamiento.

Comienza con estos pasos prácticos:

* Aumenta el confidence threshold si ves demasiados falsos positivos.
* Reduce el confidence threshold si te faltan objetos.
* Evalúa en el golden set y al menos en un clip real de cámara.

{% hint style="warning" %}
No ajustes basándote en una sola imagen. Siempre ajusta en un pequeño conjunto. De lo contrario, “sobreajustarás tu umbral” a una sola escena.
{% endhint %}

***

## 5) Empaqueta para compartir / reproducibilidad <a href="#id-5-package" id="id-5-package"></a>

Si quieres que el modelo sea usable más tarde (o por otra persona), empaquétalo intencionalmente.

Estructura de carpeta recomendada:

```
my_model_release/
	model.weights
	model.cfg
	classes.names
	README.txt
	validation_set/   (opcional)
```

Qué incluir en el README:

* En qué dataset se entrenó el modelo (versión/fecha)
* Qué significan las clases (si son ambiguas)
* Rango recomendado de confidence threshold
* Casos de fallo conocidos (reflejos, objetos pequeños, oclusión extrema)

{% hint style="info" %}
Si tu escenario `.pmod` referencia estos recursos, considera mantenerlos como recursos relativos del proyecto para que el escenario siga siendo portable. Ver también: [headless-studio](https://docs.augelab.com/spanish/caracteristicas-clave/headless) (comportamiento de carga de recursos faltantes).
{% endhint %}

***

## 6) Si falla en producción (qué hacer a continuación) <a href="#id-6-if-it-fails" id="id-6-if-it-fails"></a>

Cuando un modelo falla tras el despliegue, la solución suele ser una de estas (en este orden):

1. Recopila los fallos (guarda frames que muestren la falta/detección errónea)
2. Etiquétalos correctamente
3. Retrén o afina con los nuevos datos

Así es como los modelos se vuelven robustos.

<details>

<summary>Modos comunes de fallo y la solución más rápida</summary>

* Falsos positivos por textura de fondo → añade negativos de ese entorno exacto
* Faltas en objetos pequeños → aumenta el tamaño de entrada (si la GPU lo permite) y recopila más ejemplos de objetos pequeños
* Faltas por reflejos/desenfoque → añade esos casos intencionalmente al dataset (no te fíes solo de la augmentación)
* Las cajas son consistentemente demasiado holgadas/ajustadas → corrige la consistencia del estilo de anotación y luego reentrena

</details>
