1 minute read

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)

```