Skip to content

Commit

Permalink
balanceo
Browse files Browse the repository at this point in the history
  • Loading branch information
canveo committed Jan 26, 2024
1 parent aa0a9b5 commit 71b9ef3
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 1 deletion.
10 changes: 9 additions & 1 deletion docs/_posts/2024-01-25-week-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ ros2 bag record /carla/ego_vehicle/rgb_front/image /carla/ego_vehicle/vehicle_st

El comando anterior devuelve la información recopilada en una base de datos SQLite con extensión .db3, para lo cual se debe procesar la información para acceder a los datos producidos. El primer inconveniente encontrado es el gran tamaño de esta base de datos en cuanto al contenido de imágenes, pues al capturar una hora de conducción autónoma, se puede llegar a generar demasiada información, ocasionando que al procesarla se requiera demasiada capacidad de cómputo y un script eficiente. En mi caso, cuento con 16 GB de memoria RAM junto con una memoria Swap de 16 GB, lo que limita el procesamiento de estas imágenes, restringiendo el procesamiento a bases de datos más pequeñas. Para mejorar esto, se ha decidido ampliar la capacidad de RAM y mejorar el script de procesamiento, el cual permita tomar de la base de datos lotes de imágenes más pequeños que faciliten la recuperación de esta información.

Mientras se mejora el rendimiento del hardware, se optó por trabajar con una base de datos más pequeña con el fin de tener el dataset para probar el entrenamiento de la red PilotNet y poder realizar algunos ajustes, mientras se tiene el dataset completo.
Mientras se mejora el rendimiento del hardware, se optó por trabajar con una base de datos más pequeña con el fin de tener el dataset para probar el entrenamiento de la red PilotNet y poder realizar algunos ajustes, mientras se tiene el dataset completo. El dataset generado se obtuvo de la simulación del town03, ejecutando el piloto automático durante 20 minutos.

El script desarrollado toma las imágenes y la marca de tiempo en la que estas son producidas. Luego, estas imágenes son acumuladas en un directorio específico, y adicionalmente se genera un archivo de texto .csv en donde se guarda el nombre de la imagen asociado a su marca de tiempo. Lo mismo se realiza con la información de los valores de control de throttle, steer y brake, los cuales están asociados a una marca de tiempo, los cuales se almacenan dentro de un archivo de texto adicional csv.

Expand All @@ -44,6 +44,14 @@ El script desarrollado toma las imágenes y la marca de tiempo en la que estas s
</figure>


Las imágenes procesadas tienen dimensiones (160, 320, 3) en formato RGB y extensión .png.

Los valores de control se encuentran en los siguientes rangos:
| Control | Rango | Tipo |
|-----------|--------------------------|---------------|
| Throttle | 0.0 ≤ throttle ≤ 1.0 | float32 |
| Steer | -1.0 ≤ steer ≤ 1.0 | float32 |
| Brake | 0.0 ≤ brake ≤ 1.0 | float32 |


Debido a que la captura de los tópicos de control y las imágenes producidas ocurren en instantes de tiempo distintos y, en consecuencia, tienen marcas de tiempo distintas, el script busca para cada imagen la acción de control más cercana, producida en el instante posterior al de dicha imagen.
Expand Down
53 changes: 53 additions & 0 deletions docs/_posts/2024-01-25-week-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
title: Week 2 - Captura y balanceo del dataset
categories:
- weekly Log
tags:
- CARLA 0.9.14
- balanceo
- ROS 2
- ROS_BRIDGE
- Dataset
---

### Exploracion de los datos

El dataset generado consta de un conjunto de 7,080 imágenes con sus respectivas etiquetas. Al representar los valores correspondientes al ángulo de giro (steer) en un histograma con 50 intervalos, se observa una distribución altamente desequilibrada.

```python
histogram = plt.hist(df['steer_values'], bins=50)
plt.xlabel("Ángulo de giro")
plt.ylabel("# de Conteos")
plt.show(histogram)
```

<figure class="half">
<img src="{{ site.url }}{{ site.baseurl }}/assets/images/week3/histograma_steer.png" alt="" style="width:100%">
<figcaption>histograma-sin-balanceo</figcaption>
</figure>

Como se aprecia en la imagen, la cantidad de valores cercanos al cero en el ángulo de giro supera los 5000, mientras que en los demás intervalos no se alcanza a superar los 100 valores. Esto indica que en la simulación predominó la conducción en línea recta. Si el modelo se entrena con estos datos, es probable que generalice este comportamiento y solo pueda predecir una dirección cero para todas las salidas, por lo tanto, no aprendería el mapeo correcto de la dirección de las imágenes.

<figure class="half">
<img src="{{ site.url }}{{ site.baseurl }}/assets/images/week3/docs/assets/images/week3/tabla_conteo_steer_values.png" alt="" style="width:100%">
<figcaption>tabla_intervalos</figcaption>
</figure>

Para equilibrar el conjunto de datos, se empleó la técnica de submuestreo. Para ello, se dividió el conjunto de datos en 50 intervalos y se tomó el valor medio.

```python
samples = 400
bin_width = 0.04

resampled = pd.concat([
part_df.sample(min(samples, part_df.shape[0]), random_state=1)
for small_r in np.arange(-1, 1.01, bin_width)
for part_df in [df[(df['steer_values'] >= small_r) & (df['steer_values'] < small_r + bin_width)]]
])
```
Este proceso genera un conjunto de datos más equilibrado.

<figure class="half">
<img src="{{ site.url }}{{ site.baseurl }}/assets/images/week3/docs/assets/images/week3/docs/assets/images/week3/histograma_steer_balanceado.png" alt="" style="width:100%">
<figcaption>datos-balanceados</figcaption>
</figure>
Binary file added docs/assets/images/week3/histograma_steer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 71b9ef3

Please sign in to comment.