Week 92 - Entrenamiento en caliente
Estratificación del dataset (muestreado a 20Hz)
Para modelar los estados de conducción se definió una estratificación conjunta steer × throttle, generando 20 clases discretas.
Clasificación del steer
| Clase | Descripción |
|---|---|
| 0 | fuerte izquierda |
| 1 | suave izquierda |
| 2 | recto |
| 3 | suave derecha |
| 4 | fuerte derecha |
Clasificación del throttle
| Clase | Descripción |
|---|---|
| 0 | muy lento |
| 1 | lento |
| 2 | medio |
| 3 | muy rápido |
Cada muestra se asigna a una clase:
class_20 = steer_class × 4 + throttle_class
Composición del dataset con noise injection
Se construyó un dataset mixto combinando conducción natural tipo Burbuja con episodios de noise injection en el control lateral.
Las proporciones utilizadas fueron:
| Fuente | Filas | % del total |
|---|---|---|
| Burbuja | 125.237 | 90 % |
| Noise (submuestreado) | 13.915 | 10 % |
| Total | 139.152 | 100 % |
Distribución natural del dataset
El análisis inicial mostró una fuerte concentración en:
- conducción recta
- velocidades medias y altas
Mientras que los estados menos frecuentes corresponden a:
- giros fuertes
- correcciones de trayectoria
- fases de desaceleración
Este patrón es consistente con conducción manual prolongada en escenarios urbanos simulados.
Balanceo en caliente
Se utilizó WeightedRandomSampler en PyTorch para modificar la probabilidad de selección de muestras durante el entrenamiento.
Principios:
- no eliminar datos reales
- no duplicar físicamente el dataset
- modificar únicamente la distribución observada por el modelo
El dataset permanece intacto, pero cada batch presenta una distribución controlada de estados de conducción.
Distribución objetivo de conducción
Se definió la siguiente distribución objetivo para la variable steer:
"target_steer_distribution": {
"0": 0.12,
"1": 0.18,
"2": 0.40,
"3": 0.18,
"4": 0.12
}
Esta distribución incrementa la presencia relativa de:
- giros suaves
- giros fuertes
- transiciones dinámicas
Manteniendo la conducción recta como estado dominante.
Función de pérdida multi-salida
El modelo PilotNet fue entrenado para predecir simultáneamente:
- steer
- throttle
Se utilizó una pérdida ponderada:
loss = w_steer · MSE_steer + w_throttle · MSE_throttle
Configuración utilizada:
| Parámetro | Valor |
|---|---|
| steer_loss_weight | 3 |
| throttle_loss_weight | 1 |
Esta ponderación prioriza el aprendizaje de la dinámica lateral.
Revisión de métricas en BehaviorMetrics
Actualmente se está realizando una revisión detallada del cálculo de métricas dentro del framework BehaviorMetrics, con el fin de:
- descartar posibles inconsistencias en la evaluación
- verificar el correcto registro de trayectorias y eventos
- validar el pipeline completo recorder → replayer → evaluación
Posteriormente se realizarán pruebas experimentales para determinar el efecto del balanceo en caliente y la estrategia de noise injection.
Videos preliminares de comportamiento del modelo
PilotNet – dataset Burbuja (balanceo en caliente)
PilotNet – dataset Burbuja + Noise Injection (balanceo en caliente)
```