Week 81 - Métrica reward (centrado a la calzada)
Métrica reward (centrado a la calzada) — Validación fuera de BehaviorMetrics
Antes de integrar la métrica de reward en BehaviorMetrics, primero se implementó y depuró por fuera del framework, usando directamente la API de Python de CARLA.
El objetivo fue iterar más rápido: aislar el cálculo del reward, validar parámetros y obtener una interpretación visual clara sin depender del pipeline completo de BehaviorMetrics.
Cómo se midió el reward
La métrica busca cuantificar qué tan alineado está el vehículo con el centro de la calzada (no la navegación global).
Para evitar errores por perspectiva de la cámara frontal, se mide con una vista cenital (top‑down) basada en segmentación semántica:
- Sensor usado
sensor.camera.semantic_segmentationen modo RAW (para obtener class-id).- Se detecta automáticamente el canal (B/G/R) que contiene el class-id real.
- ID de calzada
- Se selecciona el ID que representan la calzada (asfalto morado oscuro en CityScapes).
- Se descartan aceras, terreno, vegetación, etc.
- ROI de interés
- Se define un ROI alrededor del vehículo en la imagen top‑down (región donde se mide).
- Esto reduce el efecto de intersecciones lejanas o ramificaciones fuera del área útil.
- Filtrado por componente conectada (clave)
- Dentro del ROI, se conserva únicamente la componente de calzada conectada al ego‑vehicle (seed cerca del vehículo).
- Esto evita que el cálculo tome “parches” grandes de calzada por fuera (ej. ramales, carriles laterales, cruces).
- Centro de la calzada y offset
- Se detectan los bordes izquierdo y derecho de la calzada dentro del ROI.
-
El centro de la calzada se calcula como el punto medio entre ambos bordes:
x_center = (x_left + x_right) / 2 -
El desplazamiento lateral normalizado (offset) se define como:
offset = (x_center_road - x_center_image) / (W / 2)donde
Wes el ancho de la imagen top‑down.
- Reward continuo
-
Se utiliza una penalización suave tipo gaussiana:
reward = exp(-k * offset^2) -
Si la presencia de calzada dentro del ROI cae por debajo de un umbral mínimo (
p_min), el frame se considera off‑road y se asignareward = -1.
-
Tabla de interpretación (reward vs offset)
Se está revisando el umbral para que la medición sea más interpretable. Con el valor actual de k, la relación queda:
| Estado | offset | reward |
|---|---|---|
| Muy centrado | 0.00 | 1.000 |
| Oscilación leve | 0.05 | 0.991 |
| Leve desalineo | 0.10 | 0.965 |
| Umbral | 0.17 | 0.900 |
| Desalineado | 0.25 | 0.806 |
| Muy mal | 0.40 | 0.573 |
| Lectura práctica: a partir de ( | offset | \gtrsim 0.17) el reward cae por debajo de 0.9, lo cual indica una desviación lateral sostenida y ya perceptible (según el ancho de calzada visible en la vista top‑down). |
Pruebas rápidas (piloto fuera de BehaviorMetrics): Burbuja vs DAgger
Para validar la métrica, se corrieron episodios controlados con dos pilotos (modelos EfficientNet‑V2‑S) y se midió el reward durante la trayectoria.
Modelo Burbuja
| town | Town02 |
|---|---|
| frames | 919 |
| elapsed | 36.24 s |
| path length | 767.93 m |
| completion | 50.0% |
| reward_sum | 893.749 |
| reward_mean | 0.973 |
| offroad_frames | 0 (0.0%) |
Interpretación:
- reward_mean alto (0.973) indica conducción mayoritariamente centrada.
offroad_frames = 0confirma presencia suficiente de calzada en el ROI durante todo el episodio.- La longitud recorrida (≈768 m) sirve como señal de estabilidad temporal del cálculo (reward consistente durante trayectos largos).
Modelo DAgger
| town | Town02 |
|---|---|
| frames | 940 |
| elapsed | 43.35 s |
| fps_eff | 21.68 |
| path length | 763.98 m |
| completion | 64.0% |
| reward_sum | 920.269 |
| reward_mean | 0.979 |
| offroad_frames | 0 (0.0%) |
Interpretación:
- reward_mean ligeramente superior (0.979).
offroad_frames = 0nuevamente indica estabilidad del ROI y del filtrado de calzada.- La diferencia en completion sugiere mejor progreso hacia el objetivo (en ese episodio específico), sin degradar el centrado.
Próximo paso
El siguiente paso es incorporar esta métrica dentro de BehaviorMetrics como una métrica nativa.
Ya se creó la incidencia; solo falta implementar e integrar la solución en el repositorio para que haga parte del pipeline oficial de evaluación.