cgarciae / supervised-avanzado-german-traffic-signs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Reto German Traffic Signs

Descripcion

El German Traffic Signs Dataset es un conjunto de imágenes de señales de tránsito Alemanas.

alt text alt text alt text alt text alt text alt text alt text alt text alt text

Este dataset tiene mas de 50,000 imágenes separadas en 43 clases. El reto es construir un clasificador de imágenes que sea capaz de reconocer estas señales de tránsito. Adicionalmente, el dataset incluye las posiciones (aka bounding boxes) de los objetos dentro de la imagen.

Formato Datos

Todos los datos viven en la carpeta data y se dividen en 2 grupos

|-data
| |-traning-set
| |-test-set

Training Set
La carpeta data/traning-set esta organizada de la siguiente manera

  • En data/training-set/GTSRB/Final_Training/Images se encuentran 43 carpeta, desde la carpeta 000000 que hasta la carpeta 000042, cada una de las carpetas contiene todas las imagenes de una clase.
  • Las imagenes originalmente vienen en el formato .ppm y tienen dimensiones variables (ver descarga), sin embargo, si ejecutas el script preprocess_data.py este las transforma a .jpg y las redimensiona a 32x32. (ver preprocesamiento).
  • Dentro de la carpeta de cada clase existe un archivo de la forma GT-{folder_clase}.csv que contiene datos de las imagenes en esa clase.
  • El archivo data/training-set/GTSRB/Readme-Images.txt contiene informacion adicional sobre el dataset.

Test Set
La carpeta data/traning-set esta organizada de la siguiente manera

  • En data/test-set/GTSRB/Final_Test/Images todas las imagenes del test-set.
  • Las imagenes originalmente vienen en el formato .ppm y tienen dimensiones variables (ver descarga), sin embargo, si ejecutas el script preprocess_data.py este las transforma a .jpg y las redimensiona a 32x32. (ver preprocesamiento).
  • Dentro de la carpeta de imagenes existe el archivo GT-final_test.csv que contiene los datos de las imagenes.
  • El archivo data/test-set/GTSRB/Readme-Images-Final-test.txt contiene informacion adicional sobre el dataset.

Variables

Todos los archivos *.csv contienen las siguiente variables

Filename Width Height Roi.X1, Roi.Y1, Roi.X2, Roi.Y2 ClassId
Archivo de la imagen a la que corresponde esta informacion Ancho de la imagen Alto de la imagen Informacion del bounding box Numero entero que indica la clase a la que pretenece la imagen

Cada imagen como tal puede ser representada por una matriz 3D de dimensiones Height x Width x 3 dado que es RGB. Se recomienda redimensionar cada imagen a 32 x 32 x 3, el script preprocess_data.py realiza esta operacion sobre los datos en disco.

Nota: el script preprocess_data.py altera las dimensiones de la imagen y los datos de los .csv por ahora no son modificados acorde.

Objetivo

  1. Crear un algoritmo que tome una imagen de entrada, ya sea como vector o matriz, y retorne el clase (ClassId) a la que pertenece esa imagen.
  2. Entrenar este algoritmo utilizando los datos de la carpeta data/training-set.
  3. Medir el performance/score del algoritmo utilizando los datos de la carpeta data/test-set. El performance debe ser medido como
score = n_aciertos / n_imagenes * 100

donde n_aciertos es el numero de imagenes clasificadas de forma correcta y n_imagenes es el numero total de imagenes en el test-set.

Notas Teoricas

  • Dado que las imagenes son conjuntos con dimensiones muy altas, usualmente la mejor manera de atacar el problema es utilizando redes neuronales.

Solucion

Ver procedimiento de solucion.

Requerimientos

Indica los requerimientos para utilizar el codigo de tu solucion.

Procedimiento

Indica el procedimiento que se debe seguir para reproducir tu solucion.

Metodo

Indica el metodo que utilizaste para solucionar el reto.

Resultados

Indica el metodo que utilizaste para solucionar el reto.

Getting Started

Para resolver este reto primero has un fork de este repositorio y clona el fork en tu maquina.

git clone https://github.com/{username}/supervised-avanzado-german-traffic-signs
cd supervised-avanzado-german-traffic-signs

Nota: reemplaza {username} con tu nombre de usuario de Github.

Requerimientos

Para descargar y visualizar los datos necesitas Python 2 o 3. Las dependencias las puedes encontrar en el archivo requirements.txt, el cual incluye

  • pillow
  • numpy
  • pandas
  • jupyter

Puedes instalarlas fácilmente utilizando el commando

pip install -r requirements.txt

Dependiendo de tu entorno puede que necesites instalar paquetes del sistema adicionales, si tienes problemas revisa la documentación de estas librerías.

Descarga

Para descargar los datos ejecuta el comando

dataget load german-traffic-signs

Esto descarga los archivos en la carpeta data. Los datos se divide en 2 conjuntos: training-set y test-set, cada conjunto vive dentro de su propia carpeta.

Preprocesamiento

Las imágenes del formato original es .ppm y las dimensiones de estas varían. Si deseas convertirlas a .jpg y redimensionarlas a 32x32 ejecuta

dataget process german-traffic-signs -a dims:32x32 

Starter Code Python

Para iniciar con este reto puedes correr el codigo de Python en Jupyter del archivo python-sample.ipynb. Este código que ayudará a cargar y visualizar algunas imágenes. Las dependencias son las mismas que se instalaron durante la descarga de los datos, ver Requerimientos.

Para iniciar el código solo hay que prender Jupyter en esta carpeta

jupyter notebook .

y abrir el archivo python-sample.ipynb.

Soluciones

Score Usuario Algoritmo Link Repo
score nombre algoritmo link

About

License:MIT License


Languages

Language:Jupyter Notebook 100.0%