2 minute read

Este modelo se basa en la arquitectura presentada en el paper “Transferring Vision-Based End-to-End Autonomous Driving Decision-Making from Simulation to Real-World Vehicles”, adaptado para mejorar su capacidad de generalización y robustez.

Para entrenarlo, se construyó un dataset con 30,000 imágenes, donde se aplicó balanceo de datos en función del valor de steer (dirección) y se utilizaron técnicas de aumento de datos con Albumentations para mejorar la diversidad del conjunto de entrenamiento.

Arquitectura del Modelo

El modelo modifiedDeepestLSTM es una red neuronal basada en visión con información auxiliar, diseñada para tareas de control en entornos autónomos. Su arquitectura se basa en:

1️. Bloque Convolucional Inicial:

Capas Conv2D para extraer características espaciales de las imágenes segmentadas. Normalización con BatchNormalization().

2️. Bloque ConvLSTM:

Uso de ConvLSTM2D para capturar la información temporal en secuencias de imágenes. Transformación de la salida convolucional con Lambda() para garantizar compatibilidad con ConvLSTM2D().

3️. Fusión de Información Auxiliar:

Se combinan las características visuales con entradas adicionales de velocidad y comandos. 4️. Capa Densa:

Capas Fully Connected (Dense) con activaciones ReLU. Regularización con Dropout(0.2).

5️. Salidas del Modelo:

Throttle (aceleración) con activación sigmoid. Steering (dirección) con activación tanh. Brake (freno) con activación sigmoid.

Entradas (Inputs) del Modelo

El modelo recibe 4 entradas:

1️. Imagen Segmentada (input_image)

Dimensión: (224, 224, 3). Representa la vista procesada del entorno en escala de grises.

2️. Velocidad Actual (input_speed)

Dimensión: (1,). Indica la velocidad actual del vehículo. 3️. Velocidad Máxima Permitida (input_max_speed)

Dimensión: (1,). Establece un límite de velocidad que el vehículo no debe superar. 4️. Comando de Alto Nivel (input_cmd)

Dimensión: (4,). Representa la intención del vehículo en un formato one-hot encoding con 4 posibles comandos (ir recto, girar izquierda, girar derecha, detenerse).

Arquitectura del modelo

Layer (type) Output Shape Param # Connected to
input_image (InputLayer) (None, 224, 224, 3) 0 -
conv2d (Conv2D) (None, 110, 110, 24) 1,824 input_image[0][0]
conv2d_1 (Conv2D) (None, 53, 53, 36) 21,636 conv2d[0][0]
conv2d_2 (Conv2D) (None, 25, 25, 48) 43,248 conv2d_1[0][0]
batch_normalization (BatchNormalization) (None, 25, 25, 48) 192 conv2d_2[0][0]
lambda (Lambda) (None, 1, 25, 25, 48) 0 batch_normalization[0][0]
conv_lstm2d (ConvLSTM2D) (None, 1, 25, 25, 64) 258,304 lambda[0][0]
conv_lstm2d_1 (ConvLSTM2D) (None, 25, 25, 64) 295,168 conv_lstm2d[0][0]
flatten (Flatten) (None, 40000) 0 conv_lstm2d_1[0][0]
input_speed (InputLayer) (None, 1) 0 -
input_max_speed (InputLayer) (None, 1) 0 -
input_cmd (InputLayer) (None, 4) 0 -
concatenate (Concatenate) (None, 40006) 0 flatten[0][0], input_speed[0][0], input_max_speed[0][0], input_cmd[0][0]
dense (Dense) (None, 100) 4,000,700 concatenate[0][0]
dense_1 (Dense) (None, 50) 5,050 dense[0][0]
dense_2 (Dense) (None, 10) 510 dense_1[0][0]
dropout (Dropout) (None, 10) 0 dense_2[0][0]
throttle (Dense) (None, 1) 11 dropout[0][0]
steering (Dense) (None, 1) 11 dropout[0][0]
brake (Dense) (None, 1) 11 dropout[0][0]

🔹 Total de parámetros: 4,626,665 (≈17.65 MB)
🔹 Parámetros entrenables: 4,626,569
🔹 Parámetros no entrenables: 96 (≈384 B)

Configuración del Entrenamiento

El modelo fue compilado con:

  • Optimizador: Adam (learning_rate=0.0001)
  • Pérdida (Loss): MSE (Mean Squared Error) para cada salida.
  • Métricas de Evaluación:
    • Throttle: MSE, MAE
    • Steering: MSE, MAE
    • Brake: MSE, MAE

El entrenamiento se realizó en 120 épocas, con un tamaño de batch de 32, utilizando imágenes segmentadas y datos de simulación.