2.4 Critical Analysis of key research articles
2.4.2 Supervision and professional development
La primera tarea que se realizó, antes de elegir qué tipo de red neuronal se iba a utilizar, fue la elección de las herramientas informáticas que permitían la creación de algoritmos y el entrenamiento o aprendizaje de máquina, también llamado machine learning, al realizar esta tarea se encontró la herramienta Scikit learn, una biblioteca de aprendizaje de software libre para Python, que ofrece múltiples posibilidades de uso como son la creación de diferentes tipos de redes neuronales con algunos de los siguientes métodos: BernoulliRBM, MLPregressor, MLPClassifier,.
BernoulliRBM está basado en una máquina de Boltzmann con capas visibles y ocultas, está diseñada para aprendizaje no supervisado, de forma que aprende características lineales no supervisadas en un modelo probabilístico. El modelo hace suposiciones con respeto a la disposición de entradas y asume que las entradas son valores binarios entre cero y uno.
Mlpregressor es un perceptron multicapa que se entrena usando back propagation sin función de activación de la capa de salida, que también puede verse como el uso de la
Capítulo 1 41
función de identidad, como función de activación. Por lo tanto, utilizando el error cuadrado como la función de perdida y el resultado conjunto de valores continuos.
MLPClassifier está basada en un perceptron de múltiples capas ajustables, es un algoritmo de aprendizaje supervisado, que aprende una función mediante el entrenamiento en un conjunto de datos, puede aprender un aproximado de función no lineal para la clasificación o la regresión. Las ventajas de un perceptron multicapa son: la capacidad para aprender modelos no lineales y la capacidad para aprender modelos en tiempo real. Las desventajas son que las capas ocultas tiene una función de pérdida no convexa donde existe más de un mínimo local, por lo tanto, diferentes inicializaciones de peso aleatorio, pueden llevar a una precisión de validación diferente.
MLPClassifier fue el tipo de red neuronal que se utilizó en este proyecto, ya que tiene un modelo de aprendizaje supervisado, lo cual era necesario en este prototipo, porque para hacer una red neuronal que tenga aprendizaje automático se deberían hacer pruebas en un proceso donde los autos entren y salgan del parqueadero de forma que la red aprendería sin supervisión esto podría generar resultados variables o salidas indeseadas, en nuestro caso se eligió una red supervisada, para poder ingresarle la salida deseada y que con esto la red aprendiera. MLPClassifier se entrena usando un algoritmo de back propagation que ya viene incorporado en Scikit learn. Después del entrenamiento el sistema tiene la capacidad de predecir salidas ante nuevas entradas.
Para realizar el entrenamiento de la red neuronal se definen unas salidas deseadas, con las que el algoritmo de aprendizaje compara si la salida que tiene en cada iteración es igual a la deseada, así se ajustan los pesos en cada neurona de forma que al final del entrenamiento la red no tenga errores y prediga la plaza de parqueo sin equivocación. Después del entrenamiento la estructura de la red neuronal básicamente es la siguiente.
42 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
Figura 4-28: Estructura básica de la red neuronal
La red neuronal tiene una entrada a en donde se le indica cuales plazas de parqueo están ocupadas y cuales están libres, con esta información, la red hace una comparación con los datos aprendidos duran el entrenamiento, y genera una salida, que representa una plaza de parqueo especifica.
Capítulo 1 43
Donde la entradas (X1I a X9I) representan la entrada de cada columna que se quiera evaluar, ya que cada una de estas columnas cuenta con 9 plazas de parqueo; las salidas (X1O a X9O) representan los estados de cada plaza de parqueo, cambiando una de esas salidas a la vez, la salida que cambia es la que finalmente se asigna como plaza de parqueo al usuario. Las capas ocultas pueden ser variables y se programan directamente en código, si este parámetro no se especifica, Scikit learn tomara por defecto una red neuronal de 100 capas ocultas
A continuación se presenta un diagrama de flujo en donde se puede apreciar el proceso de aprendizaje de la red neuronal:
44 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
510 representa el número de veces, al cual le corresponde un 111111110 en binario la respuesta de ese vector es 511 que es 111111111 en binario o sea 9 unos en binario, por eso el for va hasta 510 para enseñarle a la red todas las posiciones desde la 000000000 hasta la 111111110 que corresponde de 0 a 510 en decimal.
Para efectos prácticos se escogió un parqueadero de 8 columnas, cada una con 9 plazas de parqueo, con este modelo fue entrenada la red neuronal.
Figura 4-31: Esquema básico de las plazas de parqueo
Figura 4-32: Esquema de las plazas de parqueo numeradas
Capítulo 1 45
Figura 4-33: Matrices para el control de las plazas de parqueo
Dónde parb es la matriz que representa los estados actuales de las plazas de parqueo. Por lo tanto se conforma de 8 columnas y 9 filas.
Los estados se representan por medio de 3 valores posibles:
0: significa que la plaza de parqueo está vacía, y disponible para ser ocupada. 1: significa que la plaza de parqueo se encuentra ocupada
2: significa que la plaza de parqueo ya fue solicitada y está en modo en espera para ser ocupada por un nuevo vehículo.
Parac es la matriz que corresponde al estado actual del parqueadero, es decir a las imágenes captadas por la cámara en cada momento, Por lo tanto se conforma de 8 columnas y 9 filas.
46 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
0: significa que la plaza de parqueo está vacía, y disponible para ser ocupada. 1: significa que la plaza de parqueo se encuentra ocupada.
Parn, es una matriz que guarda el nombre de cada plaza de parqueo. Y también tiene de 8 columnas y 9 filas.
Para el entrenamiento de la red neuronal se dispuso de una serie de condiciones y reglas que permiten la organización del parqueadero.
4.5.1 Primera regla
Si el parqueadero cuenta con espacio suficiente, se deja un espacio vacío entre auto y auto de la misma columna. Esto se hace para que a los usuarios se les facilite la apertura de las puertas laterales, y subir paquetes o mover carritos de mercado.
Figura 4-34: Ejemplo de la primera regla, plaza de parqueo ocupada (rojo) y libre (verde)
Donde el color rojo representa el espacio ocupado y el verde el espacio que ocupara el auto que ingrese al parqueadero
4.5.2 Segunda regla
Si no es posible cumplir con la primera condición, se dejara un espacio vacío cada dos autos.
Capítulo 1 47
Figura 4-35: Ejemplo de la segunda regla, plaza de parqueo ocupada (rojo) y libre
(verde)
4.5.3 Tercera regla
Si no es posible cumplir ninguna de las anteriores condiciones se le asignara el primer espacio vacío en la columna con menos autos.
Se evidencio que para enseñarle a la red neuronal se recomienda usar valores de entrada que varíen entre 0 y 1, para disminuir el tiempo de aprendizaje de la red neuronal y el tiempo de procesamiento, se convierte la matriz de 8 X 9 en un vector de 1 x 9, que representa cada columna del parqueadero. Antes de seleccionar la plaza de parqueo que será asignada al usuario, se determina cual columna es la que tiene menos autos, en el caso de haber varias con el mismo número de autos se elige la columna más cercana a la entrada.
48 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
4.5.4 Cuarta regla
Si hay plazas de parqueo disponibles pero el pasillo para ingresar hasta las plazas está bloqueado, se busca una ruta por un pasillo diferente, y si todas los pasillos se encuentran ocupados, se da un tiempo de máximo un minuto para esperar si algún pasillo se desocupa ya que podrían ser autos en movimiento que hasta ahora se dirigen a parquear.
Figura 4-37: Ejemplo de la cuarta regla, plaza de parqueo ocupada (rojo) y libre (verde)