reconocimiento de patentes de automóviles

Anuncio
RECONOCIMIENTO DE PATENTES DE
AUTOMÓVILES
TRABAJO PROFESIONAL EN INGENIERÍA EN
INFORMÁTICA
Laboratorio de Sistemas Inteligentes
Facultad de Ingeniería
Universidad de Buenos Aires
Alumno:
Pablo David ROMANO
Directores:
Prof. Dr. Ramón GARCIA MARTINEZ
Prof. M. Ing. Hernán MERLINO
Diciembre 2007
Reconocimiento de patentes de automóvil
Índice
1.
2.
Introducción...................................................................................................... 1
Estado la Tecnología ....................................................................................... 2
2.1. Procesamiento de información.................................................................. 2
2.2. Señal......................................................................................................... 2
2.3. Espacios ................................................................................................... 2
2.3.1. Espacios de color............................................................................... 3
2.4. Transformadas.......................................................................................... 4
2.4.1. Transformadas geométricas .............................................................. 4
2.4.1.1.
Transformada de Hough ............................................................. 4
2.5. Operaciones sobre imágenes ................................................................... 6
2.5.1. Interpolación ...................................................................................... 6
2.5.2. Composición ...................................................................................... 7
2.5.3. Segmentación .................................................................................... 7
2.6. Procesamiento de señales........................................................................ 8
2.6.1. Procesamiento señales digitales........................................................ 8
2.6.1.1.
Procesamiento de imágenes bidimensionales............................ 8
2.6.2. Procesamiento de video .................................................................... 9
2.7. Filtrado de imágenes................................................................................. 9
2.8. Localización de las sub-imágenes de interés dentro de una imagen ...... 10
2.9. Inteligencia artificial................................................................................. 11
2.9.1. Redes neuronales............................................................................ 12
2.9.1.1.
Tipo de aprendizaje .................................................................. 12
2.9.1.1.1. Supervisado.......................................................................... 12
2.9.1.1.2. No supervisado..................................................................... 13
2.9.1.1.3. Por refuerzo.......................................................................... 13
2.10.
Reconocimiento de Patrones .............................................................. 13
3. Problema........................................................................................................ 15
4. Esbozo de la solución .................................................................................... 16
4.1. Uso de redes neuronales ........................................................................ 17
5. Plan de trabajo ............................................................................................... 18
6. Solución alcanzada ........................................................................................ 19
6.1. Casos exitosos........................................................................................ 19
6.2. Imagen tomada muy cerca...................................................................... 21
6.3. Errores en la red ..................................................................................... 22
6.4. Errores en la localización ........................................................................ 23
7. Conclusiones.................................................................................................. 25
8. Referencias .................................................................................................... 26
A. Metodología ................................................................................................... 29
A.1. Requerimientos ....................................................................................... 30
A.2. Limitaciones actuales.............................................................................. 31
A.3. Subsistemas ........................................................................................... 32
A.3.1. Subsistema de entrenamiento ......................................................... 32
A.3.2. Subsistema de reconocimiento ........................................................ 32
A.4. Arquitectura............................................................................................. 33
i
Reconocimiento de patentes de automóvil
A.4.1. Arquitectura de la nueva aplicación ................................................. 33
A.4.2. Arquitectura del sistema actual ........................................................ 34
A.5. Análisis.................................................................................................... 35
A.5.1. Casos de Uso .................................................................................. 35
A.5.1.1.
Cargar Red ............................................................................... 36
A.5.1.2.
Guardar Red ............................................................................. 37
A.5.1.3.
Entrenar .................................................................................... 38
A.5.1.4.
Buscar Patente ......................................................................... 39
A.5.2. Diagrama de secuencia ................................................................... 40
A.5.2.1.
Cargar Red ............................................................................... 40
A.5.2.2.
Guardar Red ............................................................................. 41
A.5.2.3.
Entrenar .................................................................................... 42
A.5.2.4.
Buscar Patente ......................................................................... 43
A.5.3. Diagrama de Clases ........................................................................ 44
A.5.3.1.
Diagrama de clases propias de la aplicación............................ 44
A.5.3.1.1. ImageFilter ........................................................................... 44
A.5.3.1.2. Helpers................................................................................. 45
A.5.3.2.
Diagrama de clases del modulo AForge para la implementación
de las redes neuronales ............................................................................. 46
A.5.3.2.1. IActivationFunction............................................................... 46
A.5.3.2.2. Network ................................................................................ 47
A.5.3.2.3. Layer .................................................................................... 48
A.5.3.2.4. Neuron ................................................................................. 49
A.5.3.2.5. ISupervisedLearning ............................................................ 50
A.5.3.2.6. IUnsupervisedLearning y SOMLearning............................... 51
A.6. Codificación ............................................................................................ 52
A.7. Implementación....................................................................................... 53
A.7.1. Pantallas .......................................................................................... 53
A.7.1.1.
Pantalla Principal ...................................................................... 53
A.7.1.2.
Pantalla Entrenamiento ............................................................ 54
A.7.1.3.
Pantalla Entrenar ...................................................................... 54
A.7.1.4.
Pantalla Buscar Patente ........................................................... 55
A.8. Pruebas................................................................................................... 56
A.8.1. Plan de pruebas............................................................................... 56
A.8.2. Documento de diseño de la prueba ................................................. 56
A.8.3. Especificación de los casos de prueba ............................................ 57
A.8.4. Especificaciones del procedimiento de prueba ................................ 58
A.8.5. Informe de los casos de prueba ejecutados .................................... 59
A.8.6. Informe de la prueba........................................................................ 61
A.9. Mantenimiento ........................................................................................ 62
ii
Reconocimiento de patentes de automóvil
1. Introducción
El reconocimiento de patentes de automóviles - LPR (License Plate Recognition)
por sus siglas en ingles – es una tecnología de procesamiento de imágenes usada
para identificar vehículos por su patente, esta tecnología es usada en muchas
aplicaciones relacionadas con la seguridad y el tráfico.
El siguiente trabajo está orientado al análisis de las tecnologías de localización y
reconocimiento de patentes de automóviles. Se hará una introducción general a
los temas sobre los cuales se desarrollaran las ideas posteriores para luego
introducirse en el estado actual de la cuestión marcando sus alcances y los
objetivos pendientes.
Se busca mediante el uso novedoso de viejas y nuevas herramientas resolver el
problema del reconocimiento de patentes de automóviles automáticamente sin
intervención humana con un nivel de acierto mayor al que el mercado actual
puede ofrecer.
1
Reconocimiento de patentes de automóvil
2. Estado la Tecnología
2.1.
Procesamiento de información
El procesamiento de información es el cambio (procesamiento) de la información
de cualquier manera perceptible por un observador. Como tal, es un proceso que
describe todo lo que pasa (cambia) en el universo, desde la caída de una piedra
(un cambio de posición) hasta la impresión de un archivo de texto desde un medio
digital. En el segundo caso, un procesador de información está cambiando la
forma en que se presenta el archivo de texto. El procesamiento de información
puede ser definido más específicamente en los términos de Claude E. Shannon
como “la conversión de información latente en información manifiesta” [Shannon,
Claude E., 1948]
2.2.
Señal
En los campos de las comunicaciones, el procesamiento de señales y la ingeniería
eléctrica, una señal es cualquier valor que varia con el tiempo, sin embargo esta
definición es insuficiente en muchos casos y, en su lugar, se dice que una señal es
cualquier valor que varia en función de una variable independiente.
En el campo de la teoría de la información se define “señal” como un mensaje
codificado, esto es, la secuencia de estados en un canal de comunicación que
conforman un mensaje. [Shannon, Claude E., 1948]
Las señales pueden ser clasificadas de varias formas. La distinción más común
sobre el espacio en el que la función esta definidas, más específicamente si este
es discreto (digitales) o continuo (analógicas). Las señales discretas son llamadas
comúnmente series. Las señales continuas son llamadas de esta forma incluso
cuando la señal no sea continua, por ejemplo una onda cuadrada.
2.3.
Espacios
Un espacio es un conjunto con propiedades particulares y, generalmente, con
operadores, como pueden ser los de adición o multiplicación.
Los espacios vectoriales y específicamente el espacio Euclidiano pueden ser
vistos como generalizaciones del sistema de coordenadas Euclidiano. Un caso
concreto es la medida de distancias, que es abstraída en el concepto de espacio
métrico [Enciclopedia Británica Online, 2005].
El espacio tridimensional es al que más comúnmente se hace referencia, sin
embargo un espacio no necesariamente debe tener tres dimensiones para existir,
puede tener cero (un punto), una (una línea), dos (un plano), más de tres, finitas o
infinitas [Enciclopedia Británica Online, 2005].
Los matemáticos usualmente estudian estructuras generales que se sostienen
más allá del número de dimensiones de los espacios.
2
Reconocimiento de patentes de automóvil
2.3.1. Espacios de color
Un espacio de color es un modelo matemático abstracto que describe el modo en
que los colores pueden ser representados por una secuencia finita (tupla) de
números, típicamente como tres o cuatro valores, también llamados componentes
de color; retomando la definición de espacio, el conjunto son valores que
representan en forma abstracta colores, este conjunto es finito, por lo tanto los
colores que puede representar un espacio de color también lo son [Fairchild, Mark
D., 1998].
Este mapa compara cuanto del espectro de color (el ovalo grande en el fondo)
cubre cada espacio de color. El ProPhoto RGB cubre la mayor parte del espectro,
Adobe RGB es el segundo más extenso, y sRGB es el más pequeño. También se
muestran los límites de la impresora Epson 2200 [Adobe, 2007].
3
Reconocimiento de patentes de automóvil
2.4.
Transformadas
En su forma más general una transformada es una faceta de las funciones
matemáticas; el termino “mapeo” es usado muchas veces como un sinónimo de
transformada. Una transformada puede ser una función reversible de un conjunto
X a si mismo o de X a Y. El término transformada generalmente hace referencia a
funciones donde el interés está puesto en los aspectos geométricos [Halmos, Paul
R., 1993].
2.4.1. Transformadas geométricas
En matemáticas, una transformada geométrica es cualquiera de un diferente
conjunto de funciones geométricas, como ser la rotación, la reflexión o la
translación entre otras. Estas pueden ser llevadas a cabo en el espacio Euclidiano,
particularmente en los de dos y tres dimensiones. También hay operaciones que
pueden ser llevadas a cabo usando algebra lineal o matrices [Halmos, Paul R.,
1993].
Antes
Después
Las imágenes muestran una transformada no linear aplicada a un plano.
2.4.1.1. Transformada de Hough
La transformada de Hough es una técnica de extracción de características usada
en el procesamiento de imágenes digitales. La transformada clásica identifica
líneas en la imagen, pero se ha extendido para identificar la posición de imágenes
arbitrarias. La transformada usada universalmente hoy en día fue inventada por
Richard Duda y Peter Hart en 1972 y la llamaron “Transformada de Hough
generalizada” por la transformada clásica patentada en 1962 por Paul Hough.
La transformada fue popularizada en 1981 gracias al artículo titulado
“Generalizando la transformada de Hough para detectar formas arbitrarias” escrito
por Dana H. Ballard.
4
Reconocimiento de patentes de automóvil
El éxito de esta transformada (en su forma más general) se debe a que permite
encontrar una forma aunque esta haya sido ampliada, reducida y/o rotada en un
tiempo computacionalmente aceptable [Gonzalez, R. C. & Woods, R. E., 1993].
La transformada clásica transforma cada punto en pares de coordenadas (θ, ρ)
que representan líneas (la cantidad de líneas a las que se transforma depende de
las necesidades particulares) que pasan por ese punto [Duda, Richard O. & Hart,
Peter E., 1972].
Esta imagen muestra el resultado de la transformada de Hough aplicada a una
imagen compuesta por dos líneas gruesas. Los ejes de la matriz que se
representó gráficamente en la imagen de la derecha son “Distancia desde el
origen” en el eje vertical y “Angulo” en el horizontal.
Cada punto fue transformado en varias líneas, cada una de estas líneas es un
punto en la imagen de la derecha, las líneas que pasan por pocos puntos quedan
de un color gris oscuro, mientras que las que pasan por más puntos son más
brillantes. Los dos puntos más brillantes que aparecen en la imagen transformada
representan a las dos líneas de la imagen original.
Si se ve con detenimiento se verá que no son puntos sino más bien pequeños
óvalos rellenos, esto se debe a que las líneas originales son gruesas, es decir,
están compuestas de varias líneas, cada punto dentro del ovalo representa a cada
una de esas líneas que componen a la línea gruesa original.
5
Reconocimiento de patentes de automóvil
En estas imágenes se puede ver la transformada de Hough de tres puntos a seis
líneas cada uno, se puede observar que cada línea queda definida por el ángulo y
la distancia al origen.
También se puede ver que hay un par de coordenadas (ángulo, distancia al
origen) que se repite aproximadamente (la distancia varia entre 81.2 y 80.5) en los
tres puntos, esta línea, aproximadamente, pasa por los tres puntos.
2.5.
Operaciones sobre imágenes
2.5.1. Interpolación
Interpolación es un termino que viene de inter que significa entre y polación que
proviene de la palabra polo, nodo o punto. De esta forma interpolación es
cualquier forma de cálculo mediante la cual se obtiene un punto entre dos puntos
existentes [Schatzman, Michelle, 2002].
Hay varios métodos para hacer esto, muchos de ellos buscan una función que se
ajuste a la información y luego la evalúan en el punto deseado. Esto no excluye
otras formas, como pueden ser las estadísticas, como métodos validos para
obtener información interpolada [Schatzman, Michelle, 2002].
La forma más simple de interpolación es tomar el promedio entre dos puntos
adyacentes para obtener un valor en el medio. Esta operación es idéntica a la
interpolación lineal evaluada en el centro [Schatzman, Michelle, 2002].
6
Reconocimiento de patentes de automóvil
2.5.2. Composición
La composición es el proceso de combinación de múltiples imágenes para obtener
una imagen final. Este proceso se usa ampliamente en películas, animaciones, etc
[T. Porter & T. Duff, 1984].
Las operaciones más comunes de composición son la diferencia y la unión; esto
es una “resta” o una “suma” respectivamente entre dos o más imágenes.
2.5.3. Segmentación
El proceso de segmentación hace referencia al particionado de una región o
conjunto (los píxeles de una imagen por ejemplo) en múltiples regiones. El objetivo
de la segmentación es simplificar y/o cambiar la representación de la región para
obtener algo más significativo y simple de analizar [Shapiro, Linda G. & Stockman,
George C., 2001].
La segmentación de imágenes es usada típicamente para localizar objetos y
bordes (líneas, curvas, etc.) en imágenes.
El resultado de la segmentación de imágenes es un conjunto de regiones que
colectivamente cubren la imagen original entera, o un conjunto de contornos
extraídos de la imagen. Cada píxel en cada región comparte características
similares como color, intensidad o textura respecto de los demás píxel en la misma
región. Los píxeles en regiones adyacentes tienen grandes diferencias respecto de
las mismas características [Shapiro, Linda G. & Stockman, George C., 2001].
Algunas de las aplicaciones prácticas de la segmentación de imágenes son:
●
●
●
●
●
●
●
●
●
●
Médicas
Ubicación de tumores y otras patologías
Medición de volúmenes de tejido
Cirugía asistida por computadora
Diagnósticos
Planeamiento de tratamientos
Estudio de la estructura anatómica
Localización de objetos en imágenes satelitales (rutas, bosques, etc.)
Reconocimiento de caras
Sistemas automáticos de control de trafico
Muchas técnicas y algoritmos de uso general fueron desarrolladas para la
segmentación de imágenes. Ya que no hay una solución general para el problema
de segmentación estas técnicas suelen ser combinadas con conocimiento propio
del dominio para poder resolver con éxito problemas concretos [Shapiro, Linda G.
& Stockman, George C., 2001].
Algunos de los métodos más comunes de segmentación son:
● Métodos de clusterización
7
Reconocimiento de patentes de automóvil
●
●
●
●
●
●
●
2.6.
Métodos basados en histogramas
Métodos de región creciente
Métodos de particionado de grafos
Métodos basados en modelos
Métodos multiescala
Métodos semi-automáticos
Métodos con redes neuronales
Procesamiento de señales
El procesamiento de señales es el análisis, interpretación y manipulación de
señales. Las señales pueden ser sonoras, imágenes, biológicas (un
electrocardiograma por ejemplo), de radar o de cualquier otro tipo. El proceso de
señales incluye el almacenamiento, la reconstrucción, extracción de
características particulares, eliminación de ruido, compresión, etc.
Dependiendo de la naturaleza de la señal hay varios tipos de procesos. Por
ejemplo, si la señal es analógica y sonora es común aplicarle procesos de
amplificación y filtrado en los equipos de audio, o de modulación y demodulación
en las telecomunicaciones.
2.6.1. Procesamiento señales digitales
El procesamiento de señales digitales (DSP por sus siglas en ingles), es el estudio
de las señales en una representación digital y los métodos de procesamiento que
a estas se les aplican. El DSP y el procesamiento de señales analógicas son
campos contenidos dentro del procesamiento de señales. A su vez el DSP incluye
a otros campos, como ser el procesamiento de señales de audio, radar, sensores,
lumínicas, habla, imagen, comunicaciones, biomédicas, etc., siempre luego de un
pre-proceso analógico-digital [Porat, Boaz].
Es muy común que se requiera una salida analógica en vez de la digital que
provee este tipo de proceso, por esta razón es habitual efectuar un post-proceso
digital-analógico.
Los algoritmos requeridos para efectuar DSP pueden ser llevados a cabo por
computadoras especializadas compuestas por microprocesadores especializados
llamados procesadores de señales digitales (cuyas siglas en ingles también son
DSP), estos procesadores procesan señales en tiempo real [Porat, Boaz].
2.6.1.1. Procesamiento de imágenes bidimensionales
Se define el procesamiento de imágenes como cualquier tipo de procesamiento de
información en el cual la entrada es una imagen, como ser una fotografía o frames
de un video; la salida no es necesariamente una imagen, puede ser por ejemplo
una serie de características de la imagen. [John C. Russ, 2006] La mayoría de las
técnicas de procesamiento de imágenes consisten en tratar a la imagen como una
señal bidimensional y aplicarle técnicas estándar de procesamiento de señales.
[Steven W. Smith, 1997]
8
Reconocimiento de patentes de automóvil
Algunas de las operaciones más comunes en el procesamiento de imágenes son
[Ian T. Young, Jan J. Gerbrands & Lucas J. Van Vliet, 1995]:
● Transformaciones geométricas, como ser el cambio de tamaño o la
rotación.
● Correcciones de color, como pueden ser las de brillo, contraste o
transformación a otro espacio de colores.
● Composición de varias imágenes, las operaciones pueden ser de unión,
diferencia, etc.
● Recuperación de información a través de la interpolación.
● Segmentación de la imagen en regiones.
Este campo no está restricto a las imágenes bidimensionales sino que también
trabaja sobre un conjunto de imágenes. Al trabajar sobre un video se le agrega
una dimensión temporal al conjunto de imágenes. [Wang, Yao, Jörn Ostermann &
Ya-Qin Zhang, 2002]
2.6.2. Procesamiento de video
El procesamiento de video es una extensión del procesamiento de imágenes
bidimensionales; consiste, al igual que el procesamiento de imágenes, en aplicar
cualquier técnica de procesamiento de información a una señal digital para
obtener una salida, la única diferencia está en la naturaleza de la señal de entrada
a la que se le agrega una tercera dimensión, el tiempo, de esta forma la señal
pasa de tener a dos dimensiones a tener tres, si se fija la tercera dimensión se
tiene una imagen, al incorporar el tiempo se tiene una secuencia de imágenes y el
procesamiento puede ser a fijando la coordenada tiempo (sobre cada imagen
aplicando cualquiera de las técnicas antes mencionadas por ejemplo) y luego
procesar las salidas individuales, o puede ser sobre más de una imagen
simultáneamente (por ejemplo para detectar movimiento).
2.7.
Filtrado de imágenes
El filtrado es un proceso indispensable en toda actividad que involucre el manejo
de imágenes. Este es el primer proceso que se le aplica a las imágenes e incluso
muchas veces se realiza en el mismo dispositivo que realiza la captura, por
ejemplo el filtro de Bayer se aplica en prácticamente todas las cámaras
fotográficas digitales. [Sean McHugh, 2007] [Bryce E. Bayer, 1976]
Una posible clasificación de los filtros más utilizados en la actualidad puede ser la
siguiente:
● Filtros al espacio de color RGB y/o extracción de canales en este
espacio [Susstrunk, Buckley & Swen, 2005]
● Filtros al espacio de color HSL y/o extracción de canales en este
espacio [Foley, James D. & Andries van Dam, 1982]
● Binarización [Gonzalez, Rafael C. & Woods, Richard E., 2002]
● Morfológicos [Robyn Owens, 2007]
9
Reconocimiento de patentes de automóvil
● Convolución y Correlación [M.B. Priestley, 1982]
● Filtros aplicados entre dos imágenes (unión, diferencia, etc.)
● Detección de bordes [Canny, J., 1986]
Los filtros permiten destacar características particulares de las imágenes y
descartar las partes no deseadas, por ejemplo si lo que buscamos es una patente
de auto nos interesará mantener los pixels cercanos al blanco o al negro y
descartar los demás como ser los cercanos al azul, rojo o verde.
2.8.
Localización de las sub-imágenes de interés dentro de una
imagen
La localización de sub-imágenes es un proceso que, como cualquier proceso de
información, devuelve una serie de valores a partir de una entrada. En este caso
en particular la entrada son dos imágenes o una imagen y ciertos parámetros que
definen al conjunto de formas o imágenes que se van a buscar dentro de esta. La
salida son valores que indican la posición de la forma o imagen buscada dentro de
la imagen general. [Gonzalez, R.C. & Woods, R. E., 1993]
Todo método de localización de sub-imágenes requiere de uno o más filtros
previos (Ver 1.2), que resalten las sub-imágenes candidatas, es muy común
aplicar filtros de detección de bordes. [Gonzalez, R.C. and Woods, 2005]
Los métodos de localización no triviales deben ser independientes del tamaño y
orientación de la sub-imagen buscada, para lograr esto se suelen utilizar
transformadas.
Para localizar una sub-imagen se suelen usar puntos de interés [P. Montesinos, V.
Gouet, R. Deriche, D. Pelé, 1999], los más comunes son:
Bordes
Esquinas
Blobs (conjunto de puntos unidos con características similares diferentes de su
entorno, por ejemplo una forma blanca en un fondo negro).
Algunos de los algoritmos que permiten encontrar estos puntos de interés son:
Algoritmo
Borde
Canny [Canny, J., 1986]
X
Sobel [Sobel, I. & Feldman,G., 1968]
X
Harris & Stephens /Plessey [C. Harris & M. X
Stephens, 1988]
Esquin
a
Blob
X
10
Reconocimiento de patentes de automóvil
SUSAN [S. M. Smith & J. M. Brady, 1997]
X
X
Shi & Tomasi [J. Shi & C. Tomasi, 1994]
X
FAST [M. Trajkovic and M. Hedley, 1998]
X
Laplaciano del Gausiano [L. Bretzner & T.
Lindeberg, 1998] [T. Lindeberg, 1998] [D. G. Lowe,
2004]
X
X
Diferencia del Gausiano [L. Bretzner & T.
Lindeberg, 1998] [T. Lindeberg, 1998] [D. G. Lowe,
2004]
X
X
Determinante del Hessiano [L. Bretzner & T.
Lindeberg, 1998] [T. Lindeberg, 1998] [D. G. Lowe,
2004]
X
X
MSER [L. Bretzner & T. Lindeberg, 1998] [T.
Lindeberg, 1998] [D. G. Lowe, 2004]
X
Grey-level blobs [L. Bretzner & T. Lindeberg, 1998]
[T. Lindeberg, 1998] [D. G. Lowe, 2004]
X
2.9.
Inteligencia artificial
La definición moderna de inteligencia artificial – AI por sus siglas en ingles – es “el
estudio y diseño de agentes inteligentes”, donde “agente inteligente” es un sistema
que percibe su entorno y toma acciones que maximizan sus oportunidades de
éxito. [Russel, Stuart J. & Norving, Peter, 2003] o “la ciencia e ingeniería de hacer
máquinas inteligentes” [McCarthy, John & Hayes, P. J., 1969]
Otros nombres para el campo fueron propuestos, como ser “inteligencia
computacional” [Poole, David; Mackworth, Alan & Goebel, Randy, 1998],
“inteligencia sintética” [Law, Diane, 1994] o “racionalidad computacional” [Russel,
Stuart J. & Norving, Peter, 2003].
Los investigadores de AI usan herramientas e ideas de varios campos, estos
incluyen a las ciencias de la computación, psicología, filosofía, neurociencias,
ciencias cognitivas, lingüística, investigación operativa, economía, teoría de
control, probabilidad, optimización y lógica [Russel, Stuart J. & Norving, Peter,
2003].
Las investigaciones en AI también se solapan con otros desarrollos, como ser
robótica, sistemas de control, data mining, logística, reconocimiento de voz,
reconocimiento facial, etc.
11
Reconocimiento de patentes de automóvil
2.9.1. Redes neuronales
Entre los investigadores no hay una definición precisa sobre que es una red
neuronal, pero la mayoría está de acuerdo en que involucra redes compuestas de
elementos con procesamiento simple (neuronas), que pueden exhibir un
comportamiento complejo global, determinado por las conexiones entre los
elementos que procesan y los datos de entrada.
La inspiración para este tipo de sistemas fue la observación del sistema nervioso
central, las neuronas, los axones, dendritas y sinapsis.
En el modelo de las redes neuronales los nodos - comúnmente llamados
neuronas, neuronodos, elementos de proceso o unidades - están interconectados
para formar una red de nodos, esta es la razón por la cual se llama al modelo “red
neuronal”.
Una red neuronal no requiere ser adaptativa, sin embargo para su uso práctico se
la trabaja con algoritmos diseñados para alterar la fuerza (peso) de las conexiones
entre las neuronas para alterar su comportamiento en busca de ciertos resultados
globales [Lawrence, Jeanette, 1994].
Estas redes son similares a las redes neuronales biológicas en el sentido que las
neuronas operan colectivamente y en paralelo en vez de haber delineamientos
claros de subtareas a las que se asignan neuronas.
En términos más generales las redes neuronales son herramientas para el
modelado de datos, no lineales y estadísticas; también pueden ser usadas para
modelizar relaciones complejas entre entradas y salidas o para buscar patrones
[Lawrence, Jeanette, 1994].
2.9.1.1. Tipo de aprendizaje
Hay tres paradigmas principales en el tipo de aprendizaje. Estos son: supervisado,
no supervisado y por refuerzo.
2.9.1.1.1. Supervisado
En el aprendizaje supervisado se sabe con anticipación la salida esperada y se
busca que la salida de la red sea acorde a esta. El objetivo es usar después la red
ya entrenada con casos donde la salida no se conoce. En otras palabras se busca
inferir la relación entre los datos entrada y salida.
Existe una función de “costo” que esta relacionada con el error entre el resultado
esperado y la salida de la red. Una función usada comúnmente es la diferencia
entre el resultado buscado y el obtenido elevado al cuadrado (para que siempre
sea positivo) sumado para cada caso de prueba. Otra función de costo es la de
gradiente descendente, si se la usa para un tipo de red llamado Perceptron
Multicapa se obtiene el algoritmo Backpropagation.
Algunas aplicaciones de este tipo de aprendizaje son:
● Reconocimiento o clasificación de patrones - reconocimiento de
escritura, reconocimiento de voz.
12
Reconocimiento de patentes de automóvil
●
●
●
●
Regresión, también conocido como aproximación de funciones.
Identificación de objetos en visión por computadora.
OCR, reconocimiento de caracteres en textos digitalizados.
Detección de spam.
2.9.1.1.2. No supervisado
El aprendizaje no supervisado es cuando un modelo es ajustado según
observaciones. Se distingue del aprendizaje supervisado en el hecho de que no
hay una salida a priori. En el aprendizaje no supervisado se recolecta un conjunto
de datos que se usan como entrada, luego la red se va adaptando a la entrada
según algún criterio.
El aprendizaje no supervisado es útil también para la compresión de información:
todo algoritmo de compresión de datos, ya sea explícitamente o implícitamente, se
basa en la distribución de probabilidades de un conjunto de entradas.
Otra forma de aprendizaje no supervisado es la clusterización (clasificación).
2.9.1.1.3. Por refuerzo
En el aprendizaje por refuerzo la información es obtenida del entorno, en un
momento particular el agente – un sistema que interactúa con este entorno –
observa el estado del entorno usa esta información como sus datos de entrada.
Según estos datos de entrada el agente efectúa una acción sobre el entorno que
altera su estado. Existe una función que traduce el estado del entorno en un
puntaje que el agente tratará de maximizar o minimizar, según el resultado de sus
acciones el agente irá decidiendo las acciones futuras a efectuar.
Este tipo de aprendizaje se usa para problemas de control, juegos y otras tareas
de toma de decisiones secuenciales.
2.10. Reconocimiento de Patrones
El reconocimiento de patrones pertenece al área de la inteligencia artificial y el
aprendizaje automático [Christopher M. Bishop, 2007], sus aplicaciones actuales
son extremadamente amplias y abarcan áreas que van desde la geología hasta
las ciencias médicas, en esta última tiene especial interés en los diagnósticos
asistidos por computadora (CAD por sus siglas en ingles) [Dietrich Paulus &
Joachim Hornegger, 1998].
El reconocimiento de patrones busca clasificar datos de entrada en conjuntos de
estos con características similares. [Christopher M. Bishop, 2007]
Entre las aplicaciones del reconocimiento de patrones se encuentran el
reconocimiento de voz, la clasificación de documentos, el reconocimiento de
escritura, el reconocimiento de caras humanas y muchos otros.
Si para efectuar esta tarea se utilizan redes neuronales el aprendizaje puede ser
supervisado o no supervisado [Christopher M. Bishop, 2007], siendo el primero en
13
Reconocimiento de patentes de automóvil
el cual se conoce la clasificación de la información a priori y se usa para entrenar
al sistema.
La mayor ventaja de las redes neuronales sobre los otros métodos de
reconocimiento es su habilidad para ser usadas en casi cualquier contexto de la
misma forma dejando que la red “aprenda” sobre los datos de entrada. [Sergios
Theodoridis & Konstantinos Koutroumbas, 2006]
El uso de redes neuronales para este tipo de tareas se difundió rápidamente en
los últimos años con el auge de la informática y el incremento en la velocidad de
los procesadores. [Phiroz Bhagat, 2005]
Uno de los algoritmos más utilizados en el aprendizaje supervisado es el
Backpropagation sobre redes perceptron multi-capa. [Anderson, James A., 1995]
De los no supervisados el SOM (Self Organizing Map) es muy útil para este tipo de
tareas. [Kohonen, T., 1995]
14
Reconocimiento de patentes de automóvil
3. Problema
En varias industrias de seguridad y de control de acceso (playas de
estacionamiento, detección de infracciones) es deseable contar con un método
automático de identificar vehículos en forma automática sin necesidad de instalar
en ellos ningún dispositivo especial.
En particular las grandes playas de estacionamiento automatizadas tienen un
especial interés en contar con esta posibilidad, toda vez que ello le permitiría
disminuir considerablemente el riesgo de hurto de vehículos al proveer un sencillo
y eficiente medio de control adicional. Un sistema de esta naturaleza debe ser lo
suficientemente confiable como para constituir un control creíble, y al mismo
tiempo debe ser rápido para no interferir con la operación normal de la playa.
Existen playas de estacionamiento de gran movimiento de vehículos, con
numerosas entradas y salidas (ej. Alto Avellaneda) en las que si bien no se cobra
el servicio, se entregan tickets de entrada que se controlan a la salida con la
exclusiva finalidad de disminuir el riesgo de hurto o robo.
15
Reconocimiento de patentes de automóvil
4. Esbozo de la solución
La solución que se plantea al punto 3 es identificar a los vehículos por su patente
mediante un sistema que capture una imagen de la misma al momento de entrar o
salir y relacione la patente con el ticket evitando de esta forma el hurto de los
vehículos.
Para lograr esto se deben resolver los siguientes puntos:
a) Captura de la imagen
b) Localización de la patente en la imagen
c) Extracción de los caracteres
d) Reconocimiento de los caracteres
Captura de la imagen:
Se hará usando una cámara infrarroja, luces infrarrojas y un sensor de presión en
el piso, cuando el vehículo lo active frente a la barrera de entrada o salida se
capturará la foto. Se optó por el uso de cámaras y luces infrarrojas ya que son
independientes de la luz ambiental e incluso permiten sacar fotos en la oscuridad.
Localización de la patente:
Se hará usando una serie de filtros sobre la imagen como ser, corrección de brillo
y contraste, binarización usando Threshold calibrado a las imágenes obtenidas.
Luego se usará la transformada de Hough con modificaciones particulares para
este problema en particular, mediante esta transformada modificada se buscaran
dos líneas con características particulares: distancia mínima y máxima entre ellas,
ángulo mínimo y máximo de rotación y diferenciando la superior de la inferior (los
puntos de la superior son blancos con negro debajo mientras que los de la inferior
son blancos con negro arriba). De esta forma se encontrará el límite superior e
inferior de la patente independientemente de su ubicación, tamaño o rotación.
Luego se buscaran las líneas verticales dentro de esta franja usando la misma
transformada pero modificada para líneas verticales.
Extracción de caracteres:
Se hará mediante un algoritmo de camino mínimo entre la parte superior y la
inferior de la franja, donde los pixels blancos son los que incrementan el largo del
camino. Este algoritmo será modificado según las características de los caracteres
(ancho sobre todo), para que los caminos encontrados sean la separación de los
caracteres.
Reconocimiento de los caracteres:
16
Reconocimiento de patentes de automóvil
Se hará mediante una red neuronal donde los valores de entrada serán un
muestreo del carácter obtenido en el paso anterior, el tamaño de este se ajustará
para balancear de la mejor manera posible la tasa de éxito con el tiempo de
proceso.
Se usaran dos redes neuronales, una para las letras y otra para los números
logrando de esta forma una tasa mayor de acierto usando información particular
del problema (los primeros tres caracteres son letras y los siguientes tres
números).
Se probará con una Backpropagation y una SOM modificada para que cada
neurona recuerde cual es el carácter que representa, según los resultados se
elegirá la más adecuada.
4.1.
Uso de redes neuronales
Se optó por el uso de redes neuronales en vez de los métodos vectoriales
tradicionales ya que las redes neuronales:
● Soportan incertidumbre, informan “en cuanto se parece” el carácter de
entrada respecto a uno aprendido previamente, son menos propensas a
error por las variaciones en la iluminación y ángulo de captura
● En el entrenamiento extraen las características relevantes de los
caracteres y descartan las más variables haciendo más efectivo el
reconocimiento
● “Aprenden” del lote de prueba que se les provee evitando el trabajo
manual de ajuste inicial en cada estacionamiento al instalar
17
Reconocimiento de patentes de automóvil
5. Plan de trabajo
Etapas y tiempos
1
Obtención de datos de prueba (imágenes)
2
Estudio de algoritmos y filtros para análisis localización de la
patente
2 Semanas
3
Implementación de los algoritmos resultantes de la etapa 2
4
Ensayo y refinamiento de los algoritmos de la etapa 3 en
base a los datos de prueba
2 Meses
5
Estudio de algoritmos para extracción de caracteres
1 Semana
6
Implementación del algoritmo resultante de la etapa 5
2 Semanas
7
Estudio de redes neuronales para reconocimiento de
caracteres
2 Semanas
8
Implementación de la red resultante de la etapa 7
9
Entrenamiento de la red y refinamiento en base a los datos
de prueba
1 Mes
10 Integración
1 Mes
1 Mes
2 Semanas
2 Semanas
Tiempo total: 7 Meses
18
Reconocimiento de patentes de automóvil
6. Solución alcanzada
6.1.
Casos exitosos
19
Reconocimiento de patentes de automóvil
20
Reconocimiento de patentes de automóvil
6.2.
Imagen tomada muy cerca
21
Reconocimiento de patentes de automóvil
6.3.
Errores en la red
22
Reconocimiento de patentes de automóvil
6.4.
Errores en la localización
23
Reconocimiento de patentes de automóvil
24
Reconocimiento de patentes de automóvil
7. Conclusiones
Durante el transcurso del desarrollo varias cosas se hicieron evidentes, para el
óptimo funcionamiento de un sistema de estas características son necesarias
varias condiciones básicas.
En primer lugar tener condiciones de luminosidad controladas es una gran ventaja
(como puede lograrse con cámaras y luces infrarrojas), esto permite un sistema
que funcione con la misma tasa de aciertos independientemente de las
condiciones ambientales, las interferencias por las luces del mismo automóvil, el
sol, etc.
En segundo lugar tener una posición fija para la cámara facilita mucho la
localización de la patente, esto permite un ajuste mucho más fino de los
parámetros que en este sistema se dejaron muy flexible. La variación de las
dimensiones de la patente toleradas es muy amplia, un ajuste más fino
aprovechando las condiciones controladas incrementaría la tasa de éxito en forma
sustancial.
La elección de la transformada de Hough para la primera aproximación de la
localización fue un gran acierto, esta permitió una clara mejora en la performance
y la tasa de éxito del sistema.
Respecto al tipo de red para el reconocimiento de los caracteres se concluyó que
lo mejor era una red SOM, varias pruebas con redes Backpropagation mostraron
resultados poco satisfactorios.
Para concluir se puede observar que los tiempos de respuesta son aceptables
para el fin original, en el caso de utilizarse el sistema para un peaje o algún otro
punto de gran cantidad de tráfico se vuelve necesario encarar el desarrollo con
este requerimiento muy presente y, probablemente, utilizar lenguajes de más bajo
nivel.
25
Reconocimiento de patentes de automóvil
8. Referencias
Adobe, 2007. “A Color Managed Raw Workflow - From Camera to Final Print”
http://www.adobe.com/digitalimag/pdfs/color_managed_raw_workflow.pdf. Página
vigente al 20 de mayo de 2007.
Anderson, James A., 1995. “An Introduction to Neural Networks”. ISBN 0-26201144-1.
Bryce E. Bayer. 1976. “Bayer Color imaging array”. US3971065
C. Harris & M. Stephens, 1988. “A combined corner and edge detector”. Cuarta
conferencia
Alvey
Vision.
Páginas
147-151.
http://www.csse.uwa.edu.au/~pk/research/matlabfns/Spatial/Docs/Harris/A_Combi
ned_Corner_and_Edge_Detector.pdf. Página vigente al 12/05/2007
Canny, J., 1986. “A Computational Approach To Edge Detection”, IEEE Trans.
Pattern Analysis and Machine Intelligence.
Christopher M. Bishop, 2007. “Pattern Recognition and Machine Learning”,
Springer, ISBN 0-387-31073-8
D. G. Lowe, 2004. “Distinctive Image Features from Scale-Invariant Keypoints”.
International Journal of Computer Vision 60. Páginas 91-110
Dietrich Paulus & Joachim Hornegger, 1998 “Applied Pattern Recognition” 2nd
edition, Vieweg. ISBN 3-528-15558-2
Duda, Richard O. & Hart, Peter E., 1971. “Use of the Hough transformation to
detect lines and curves in pictures” http://www.ai.sri.com/pubs/files/tn036duda71.pdf
Enciclopedia Británica Online, 2005. Enciclopedia Británica Online accedida el 12
de Junio de 2005. http://www.britannica.com/
Fairchild, Mark D., 1998. “Color Appearance Models”, Addison-Wesley, Reading,
MA. ISBN 0-201-63464-3
Foley, James D. & Andries van Dam, 1982. “Fundamentals of Interactive Computer
Graphics”, Addison-Wesley. ISBN 0-201-14468-9.
Gonzalez, R. C. & Woods, R. E., 1993, “Digital Image Processing”, Prentice Hall.
Gonzalez, Rafael C. & Woods, Richard E., 2002. “Thresholding in Digital Image
Processing”, Pearson Education. Páginas 595–611 ISBN 81-7808-629-8
Halmos, Paul R., 1993. “Finite-Dimensional Vector Spaces”, Springer-Verlag. ISBN
0-387-90093-4
26
Reconocimiento de patentes de automóvil
Ian T. Young, Jan J. Gerbrands & Lucas J. Van Vliet, 1995 “Fundamentals of
Image Processing” ISBN 90-75691-01-7
J. Shi and C. Tomasi, 1994. “Good Features to Track”. Novena conferencia del
IEEE sobre Computer Vision and Pattern Recognition.
John C. Russ, 2006. “The Image Processing Handbook”. ISBN 0849372542 (2006)
Kohonen, T., 1995. “Self-Organizing Maps”, Springer. ISBN 3-540-67921-9, ISSN
0720-678X
L. Bretzner & T. Lindeberg, 1998. “Feature Tracking with Automatic Selection of
Spatial Scales”. Computer Vision and Image Understanding. Páginas 385-392
Law, Diane, 1994. “Searle, Subsymbolic Functionalism and Synthetic Intelligence”
Lawrence, Jeanette, 1994. “Introduction to Neural Networks”, California Scientific
Software Press. ISBN 1-883157-00-5
M. Trajkovic and M. Hedley, 1998. “Fast corner detection”. Image and Vision
Computing. Páginas 75-87.
M. B. Priestley, 1982. “Spectral analysis and time series”. London, New York :
Academic Press.
McCarthy, John & Hayes, P. J., 1969. “Some philosophical problems from the
standpoint of artificial intelligence”, Machine Intelligence 4: Páginas 463-502
P. Montesinos, V. Gouet, R. Deriche, D. Pelé, 1999. “Differential Invariants for
Color
Images”.
http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MONTESSINOS/cv_
online.html. Página vigente al 12/05/2007
Phiroz Bhagat, 2005. “Pattern Recognition in Industry”, Elsevier. ISBN 0-08044538-1
Poole, David; Mackworth, Alan & Goebel, Randy, 1998. “Computational
Intelligence: A Logical Approach”, Oxford University Press
Porat, Boaz “A Course in Digital Signal Processing”, Wiley, ISBN 0471149616
Robyn Owens, 2007. “Mathematical Morphology”, de las lecturas Computer Vision
http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/LECT3/node
3.html. Página vigente al 12/05/2007
Russel, Stuart J. & Norving, Peter, 2003. “http://aima.cs.berkeley.edu/Artificial
Intelligence: A Modern Approach” Segunda edición, Upper Saddle River, NJ:
Prentice Hall, ISBN 0-13-790395-2
27
Reconocimiento de patentes de automóvil
S. M. Smith & J. M. Brady, 1997. “SUSAN - a new approach to low level image
processing”. International Journal of Computer Vision 23. Páginas 45-78.
Schatzman, Michelle, 2002. “Numerical Analysis: A Mathematical Introduction.”
Clarendon Press, Oxford. ISBN 0-19-850279-6.
Sean
McHugh,
2007.
“Tutorials
–
Digital
http://www.cambridgeincolour.com/tutorials/sensors.htm.
12/05/2007
Camera
Sensors”
Página
vigente
al
Sergios Theodoridis & Konstantinos Koutroumbas, 2006. “Pattern Recognition”,
Tercera edición, Elsevier. ISBN 0-12-369531-7.
Shannon, Claude E., 1948. “A mathematical theory of communication”. Bell
System Technical Journal, vol. 27, páginas. 379-423, 623-656
Shapiro, Linda G. & Stockman, George C., 2001. “Computer Vision”, New Jersey,
Prentice-Hall, ISBN 0-13-030796-3
Sobel, I. & Feldman,G., 1968 “A 3x3 Isotropic Gradient Operator for Image
Processing”, presentado en la conferencia Stanford Artificial Project
Steven W. Smith, 1997. The Scientist and Engineer's Guide to Digital Signal
Processing. ISBN 0-9660176-3-3
Susstrunk, Buckley & Swen, 2005. “Standard RGB Color Spaces”.
http://infoscience.epfl.ch/getfile.py?mode=best&recid=34089 Página vigente al
12/05/20007
T. Lindeberg, 1998. “Feature detection with automatic scale selection”.
International Journal of Computer Vision 30. Páginas 77-116.
T. Porter & T. Duff, 1984. “Compositing Digital Images”
Wang, Yao, Jörn Ostermann & Ya-Qin Zhang, 2002 “Video Processing and
Communications” Signal Processing Series. Upper Saddle River, N.J.: Prentice
Hall ISBN 0130175471
28
Reconocimiento de patentes de automóvil
A. Metodología
En este capítulo se describe la metodología empleada en el desarrollo de la
aplicación.
Se enumeran los requerimientos (sección A.1) y se habla de las limitaciones
actuales (sección A.2).
Luego se descompone al sistema en dos subsistemas (sección A.3), uno de
entrenamiento (sección A.3.1) y otro productivo (sección A.3.2).
Se define la arquitectura (sección A.4), comparando la propuesta (sección A.4.1)
con la actual (sección A.4.2).
Se hace el análisis del sistema (sección A.5) mediante casos de uso (sección
A.5.1) y se muestra el diagrama de secuencia del proceso principal (sección
A.5.2). Se definen las clases mediante diagramas (sección A.5.3) tanto propias de
la aplicación (sección A.5.3.1) como del modulo externo utilizado (sección A.5.3.2)
indicando las modificaciones que se le realizaron.
Se aborda la codificación de la solución (sección 0) y se trabaja sobre su
implementación (sección 0) describiendo sus pantallas (sección A.7.1).
Luego se cubre la etapa de pruebas (sección A.8) estableciendo un plan de
pruebas (sección A.8.1), documentando el diseño de cada prueba (sección A.8.2),
especificando los casos de prueba (sección A.8.3), los procedimientos (sección
A.8.4), se confecciona un informe de los casos de prueba ejecutados (sección
A.8.5), así como un informe de la prueba (sección A.8.6).
Finalmente se describe el plan de mantenimiento (sección A.9).
29
Reconocimiento de patentes de automóvil
A.1. Requerimientos
La aplicación debe permitir:
●
●
●
●
Identificar el 80% de los caracteres de las patentes de automóvil
Efectuar la identificación en menos de 2 segundos
Tolerar cambios en el ángulo y distancia de la captura de la foto
Reentrenar las redes para lograr mayores tasas de éxito a medida que
se consiguen nuevos lotes de prueba
● Almacenar y recuperar las redes para su futuro uso
30
Reconocimiento de patentes de automóvil
A.2. Limitaciones actuales
El modo de trabajo actual consiste en la lectura humana de la patente y su registro
en el ticket de ingreso al estacionamiento y su comprobación al momento de la
salida.
Este proceso es costoso en tiempo y recursos ya que requiere de una persona
dedicada exclusivamente a esta tarea.
Esta forma de operar provee un tiempo de identificación superior a los 20
segundos por automóvil y limita la capacidad operativa del estacionamiento en
las horas pico.
Al momento de finalizado este trabajo profesional no existe en el país un sistema
capaz de identificar los numero patentes de los automóviles en un
estacionamiento con una tasa de éxito acorde a las expectativas del mercado.
31
Reconocimiento de patentes de automóvil
A.3. Subsistemas
El sistema descrito está compuesto de dos subsistemas.
A.3.1.
Subsistema de entrenamiento
Este subsistema recibe las características de configuración de la red (parámetros
iniciales de las redes neuronales SOM) y el lote de imágenes con sus
correspondientes salidas.
Su salida consiste en dos archivos que contienen una red neuronal entrenada
cada uno; uno es para letras “redLetras” y otro para números “redNumeros”. Estas
redes son la entrada del subsistema de identificación, se instalan en este último
copiando estos archivos en el directorio de la aplicación. Este proceso es idéntico
al mantenimiento (sección A.9A.8).
A.3.2.
Subsistema de reconocimiento
Este subsistema corresponde a la etapa productiva del sistema, la entrada es una
imagen de un automóvil, el sistema procesa la imagen y, utilizando las redes del
subsistema de entrenamiento, devuelve los caracteres que componen la patente
del automóvil.
Por tratarse de un trabajo profesional se unificó la interfaz de usuario de los dos
subsistemas para poder observar el funcionamiento global más fácilmente.
32
Reconocimiento de patentes de automóvil
A.4. Arquitectura
A.4.1.
Arquitectura de la nueva aplicación
Como se describió anteriormente el sistema está compuesto por dos subsistemas.
Él de entrenamiento debe ser ejecutado en una PC con gran poder de
procesamiento, el subsistema de reconocimiento tiene una complejidad menor y
requiere menor poder de procesamiento. Este diseño fue concebido para disminuir
los costos del sistema ya que la salida del primer subsistema puede ser utilizada
en todos los subsistemas de reconocimiento que se desee sin necesidad de volver
a generarla.
Para el subsistema de entrenamiento se requieren la siguiente arquitectura:
Hardware:
Pentium Core2 duo 1.6ghz (puede disminuirse a costa de un mayor tiempo de proceso)
1gb de Ram (puede disminuirse a costa de un mayor tiempo de proceso)
500mb de espacio libre para la aplicación
Software:
Windows (XP en adelante)
.Net Framework 2.0
Para el subsistema reconocimiento se requieren la siguiente arquitectura:
Hardware:
Pentium IV 3ghz (puede disminuirse a costa de un mayor tiempo de proceso)
1gb de Ram (puede disminuirse a costa de un mayor tiempo de proceso)
Cámara IP de video o cámara fotográfica y placa capturadora de video
Sensor de presión (se usa como disparador del proceso de reconocimiento, este sensor está
instalado actualmente ya que se usa para emitir el ticket de ingreso y levantar la barrera)
Software:
Windows (XP en adelante)
.Net Framework 2.0
Aclaración:
Una sola máquina puede atender más de una barrera, la cantidad de barreras que
puede atender depende del caudal de automóviles y la capacidad de
procesamiento de la máquina.
33
Reconocimiento de patentes de automóvil
A.4.2.
Arquitectura del sistema actual
Actualmente la arquitectura del estacionamiento consiste en:
Hardware:
Pentium I
128mb de Ram
Lector de código de barras (se lee el ticket al momento de salir)
Software:
DOS
Sistema para el control de tiempo de estacionamiento y cálculo del costo del
estacionamiento.
Aclaración:
Este sistema se conservará, solo se efectuará un paso previó a la apertura de la
barrera donde se verificará la correspondencia del ticket y la patente
automáticamente.
Referencia:
Estacionamiento situado en M. T. Alvear 350
34
Reconocimiento de patentes de automóvil
A.5. Análisis
A.5.1.
Casos de Uso
En la siguiente figura se presentan los casos de uso del sistema desde un enfoque
de alta abstracción. Estos corresponden a las acciones que el operador (actor)
realiza sobre el sistema.
ud Use Case Model
Cargar Red
Guardar Red
Operador
Entrenar
Buscar Patente
35
Reconocimiento de patentes de automóvil
A.5.1.1.
Cargar Red
Implica la carga desde un medio externo a la aplicación de la red para su uso.
ud Cargar Red
Construir red
Operador
Obtener datos red
Inicializar red
Antes de poder cargar los datos es necesario construir la red, ya sea la de letras
como la de números, luego se procede a la obtención de los datos y finalmente se
inicializa la red con los datos obtenidos.
36
Reconocimiento de patentes de automóvil
A.5.1.2.
Guardar Red
Implica el guardado en un medio externo a la aplicación de la red para su futuro
uso.
ud Guardar Red
Extraer datos red
Operador
Crear repositorio
datos
Persistir datos red
La primera tarea que se efectúa al guardar los datos es extraerlos de la red, ya se
la de letras como la de números, luego se crea el repositorio de datos y finalmente
los datos son persistidos en este.
37
Reconocimiento de patentes de automóvil
A.5.1.3.
Entrenar
Implica la ejecución del proceso de entrenamiento de la red mediante un lote de
pruebas.
ud Entrenar
Inicializar
entrenamiento
Operador
Obtener lote
imagenes
Entrenar cada
imagen
La primera tarea es la inicialización del entrenamiento, esto implica la inicialización
de la red y los parámetros de entrenamiento. Luego se obtiene el lote de imágenes
que se usaran para entrenar, finalmente se entrena la red, ya se la de letras como
la de números.
38
Reconocimiento de patentes de automóvil
A.5.1.4.
Buscar Patente
Implica el uso de la red neuronal cargada o entrenada para la identificación de los
caracteres en la patente.
ud Buscar Patente
Aplicar filtros
Operador
Localizar patente
Reconocer patente
Para buscar la patente se debe comenzar aplicando los filtros a la imagen, luego
se procede a localizar la patente y finalmente se reconoce la patente localizada
(sección 4)
39
File
reader:BinaryReader
Close
NetworkLetras(networkLetras)
peso:= ReadDouble
*CargarPesos(neurona, reader)
caracter:= ReadChar
*CargarNeurona(neurona, reader)
networkLetras:= DistanceNetwork(inputsCount, neuronsCount)
inputCount:= ReadInt32
neuronsCount:= ReadInt32
LoadNetwork(networkLetras, reader)
BinaryReader(archivo)
DistanceNetwork
PersistHelper
A.5.2.1.
archivo:= OpenRead(AppDomain.CurrentDomain.BaseDirectory + "\\redLetras")
LoadNetworks
DataHelper
A.5.2.
Operador
sd Cargar Red
Reconocimiento de patentes de automóvil
Diagrama de secuencia
Cargar Red
40
LoadNetworks
DataHelper
File
reader:BinaryReader
Close
NetworkLetras(networkLetras)
peso:= ReadDouble
*CargarPesos(neurona, reader)
caracter:= ReadChar
*CargarNeurona(neurona, reader)
networkLetras:= DistanceNetwork(inputsCount, neuronsCount)
inputCount:= ReadInt32
neuronsCount:= ReadInt32
LoadNetwork(networkLetras, reader)
BinaryReader(archivo)
DistanceNetwork
PersistHelper
A.5.2.2.
archivo:= OpenRead(AppDomain.CurrentDomain.BaseDirectory + "\\redLetras")
Operador
sd Cargar Red
Reconocimiento de patentes de automóvil
Guardar Red
41
LoadNetworks
DataHelper
File
reader:BinaryReader
Close
NetworkLetras(networkLetras)
peso:= ReadDouble
*CargarPesos(neurona, reader)
caracter:= ReadChar
*CargarNeurona(neurona, reader)
networkLetras:= DistanceNetwork(inputsCount, neuronsCount)
inputCount:= ReadInt32
neuronsCount:= ReadInt32
LoadNetwork(networkLetras, reader)
BinaryReader(archivo)
DistanceNetwork
PersistHelper
A.5.2.3.
archivo:= OpenRead(AppDomain.CurrentDomain.BaseDirectory + "\\redLetras")
Operador
sd Cargar Red
Reconocimiento de patentes de automóvil
Entrenar
42
retorno:= Reconocer(imagen, maximos, maximos2)
maximos2:= obtenerMaximos(imagenTransformada2, 1, angle2, 6, null, null, false)
imagenTransformada2:= transformadaDeHough(imagen, 0, imagen.Width, yMin, yMax, false)
obtenerRectangulo(p, angle, imagen.Height, imagen.Width, out minX, out maxX, out minY, out maxY)
maximos:= obtenerMaximos(imagenTransformada, 1, 80, 20, null, null, true)
imagenTransformada:= transformadaDeHough(imagen, true)
imagen:= Apply(imagen)
A.5.2.4.
imagen:= Apply(imagen)
imagen:= Apply(imagen)
AForge.Imaging.Image filterGamma:AForge.Imaging.Filters.GammaCorrection filterGrayScaleY:AForge.Imaging.Filters.GrayscaleYfilterThreshold:AForge.Imaging.Filters.Threshold
imagen:= FormatImage(imagen)
BuscarPatente
sd Buscar Patente
Reconocimiento de patentes de automóvil
Buscar Patente
43
Reconocimiento de patentes de automóvil
A.5.3.
Diagrama de Clases
A continuación se presentan los diagramas de clases fundamentales del proyecto
acompañado de una descripción de cada una de éstas:
A.5.3.1.
Diagrama de clases propias de la aplicación
A.5.3.1.1. ImageFilter
cd ReconocimientoDePatentes
ImageFilter
#
#
#
h: int
w: int
mask: int[][]
+
+
+
ImageFilter(int, int)
ImageFilter(int, int, int[][])
Apply(Bitmap) : void
HistogramEqualization
+ HistogramEqualization(int, int)
+ HistogramEqualization(int, int, int[][])
+ Apply(Bitmap) : void
LinearBestFitAdjust
GrayScaleConverter
+ LinearBestFitAdjust(int, int)
+ LinearBestFitAdjust(int, int, int[][])
+ Apply(Bitmap) : void
+ GrayScaleConverter(int, int)
+ GrayScaleConverter(int, int, int[][])
+ Apply(Bitmap) : void
LinearBestFitAdjust, GrayScaleConverter e HistogramEqualization son tres clases
que heredan e implementan ImageFilter (clase abstracta), todas ellas proveen
filtros para que se aplican sobre la clase Bitmap del Framework (.Net Framework
2.0)
44
Reconocimiento de patentes de automóvil
A.5.3.1.2. Helpers
cd ReconocimientoDePatentes
PersistHelper
DataHelper
+
+
-
SaveNetworks() : void
LoadNetworks() : void
SaveNetwork(Network, BinaryWriter) : void
LoadNetwork(DistanceNetwork*, BinaryReader) : void
-
_networkNumeros: DistanceNetwork = null
_networkLetras: DistanceNetwork
+ «property» NetworkNumeros() : DistanceNetwork
+ «property» NetworkLetras() : DistanceNetwork
RecongnitionHelper
-
_constErrorMaximo: double = Helpers.Persist...
+
+
+
+
+
+
«property» _errorMaximo() : double
ReconocerLetra(Image, double*) : string
ReconocerLetra(Image, Image*, double*) : string
ReconocerNumero(Image, double*) : string
ReconocerNumero(Image, Image*, double*) : string
Reconocer(Image, List<Image>*, List<Image>*, Char[]*, Decimal[]*) : void
DataHelper es la clase encargada de la persistencia a largo plazo de las redes.
PersistHelper es la clase encargada de la persistencia a corto plazo de las redes,
es decir, mientras la aplicación se está ejecutando.
RecongnitionHelper es la clase encargada de reconocer letras o números
individuales u obtener los seis caracteres que componen a una patente. Estos
métodos también devuelven el porcentaje de similitud entre el/los caracteres que
se ingresaron y el carácter devuelto, este valor es similar a un índice de confianza
sobre el resultado emitido.
45
Reconocimiento de patentes de automóvil
A.5.3.2.
Diagrama de clases del modulo AForge para la
implementación de las redes neuronales
A.5.3.2.1. IActivationFunction
cd Neuro
«interface»
SigmoidFunction
IActivationFunction
+ Function(double) : double
+ Derivative(double) : double
+ Derivative2(double) : double
-
alpha: double = 2
+
+
+
+
+
+
«property» Alpha() : double
SigmoidFunction()
SigmoidFunction(double)
Function(double) : double
Derivative(double) : double
Derivative2(double) : double
BipolarSigmoidFunction
-
alpha: double = 2
+
+
+
+
+
+
«property» Alpha() : double
BipolarSigmoidFunction()
BipolarSigmoidFunction(double)
Function(double) : double
Derivative(double) : double
Derivative2(double) : double
ThresholdFunction
+
+
+
+
ThresholdFunction()
Function(double) : double
Derivative(double) : double
Derivative2(double) : double
Estas son las clases que implementan las distintas funciones de activación, todas
implementan la interfase IActivationFunction.
46
Reconocimiento de patentes de automóvil
A.5.3.2.2. Network
cd Neuro
Network
#
#
#
#
inputsCount: int
layersCount: int
layers: Layer[]
output: double[]
+
+
+
+
#
+
+
«property» InputsCount() : int
«property» LayersCount() : int
«property» Output() : double[]
«indexer» this(int) : Layer
Network(int, int)
Compute(double[]) : double[]
Randomize() : void
DistanceNetwork
ActivationNetwork
+ «indexer» this(int) : ActivationLayer
+ ActivationNetwork(IActivationFunction, int, int[])
+
+
+
+
+
«indexer» this(int) : DistanceLayer
DistanceNetwork(int, int)
GetWinner() : int
GetWinners(int) : List<KeyValuePair<int, double>>
GetSalidaPonderada(int, int) : char
ActivationNetwork y DistanceNetwork son las clases que implementan las redes,
como se puede ver ambas heredan de Network que contiene una colección de
Layer (capas) que se describe en 2.1.2.3.
47
Reconocimiento de patentes de automóvil
A.5.3.2.3. Layer
cd Neuro
Network
Layer
#
#
#
#
inputsCount: int = 0
neuronsCount: int = 0
neurons: Neuron[]
output: double[]
#
#
#
#
inputsCount: int
layersCount: int
layers: Layer[]
output: double[]
+
+
+
+
#
+
+
«property» InputsCount() : int
«property» NeuronsCount() : int
«property» Output() : double[]
«indexer» this(int) : Neuron
Layer(int, int)
Compute(double[]) : double[]
Randomize() : void
+
+
+
+
#
+
+
«property» InputsCount() : int
«property» LayersCount() : int
«property» Output() : double[]
«indexer» this(int) : Layer
Network(int, int)
Compute(double[]) : double[]
Randomize() : void
ActivationLayer
DistanceLayer
+ «indexer» this(int) : ActivationNeuron
+ ActivationLayer(int, int, IActivationFunction)
+ «indexer» this(int) : DistanceNeuron
+ DistanceLayer(int, int)
ActivationLayer y DistanceLayer son las clases que implementan las capas, como
se puede ver que ambas heredan de Layer, a su vez Layer está contenida en
Network y contiene una colección de Neuron que se describe en 2.1.2.4.
48
Reconocimiento de patentes de automóvil
A.5.3.2.4. Neuron
cd Neuro
Neuron
Layer
«interface»
IActivationFunction
+
+
+
Function(double) : double
Derivative(double) : double
Derivative2(double) : double
#
#
#
#
#
-
inputsCount: int = 0
weights: double[] = null
output: double = 0
rand: Random = new Random( (in...
randRange: DoubleRange = new DoubleRange...
_salida: char = '?'
+
+
+
+
+
+
+
+
+
«property» RandGenerator() : Random
«property» RandRange() : DoubleRange
«property» InputsCount() : int
«property» Output() : double
«indexer» this(int) : double
Neuron(int)
Randomize() : void
Compute(double[]) : double
«property» Salida() : char
ActivationNeuron
#
#
threshold: double = 0.0f
function: IActivationFunction = null
+
+
+
+
+
«property» Threshold() : double
«property» ActivationFunction() : IActivationFunction
ActivationNeuron(int, IActivationFunction)
Randomize() : void
Compute(double[]) : double
#
#
#
#
inputsCount: int = 0
neuronsCount: int = 0
neurons: Neuron[]
output: double[]
+
+
+
+
#
+
+
«property» InputsCount() : int
«property» NeuronsCount() : int
«property» Output() : double[]
«indexer» this(int) : Neuron
Layer(int, int)
Compute(double[]) : double[]
Randomize() : void
DistanceNeuron
+ DistanceNeuron(int)
+ Compute(double[]) : double
En el nivel atómico se encuentra Neuron (neurona), implementada por
ActivationNeuron y DistanceNeuron.
ActivationNeuron contiene una IActivationFunction (descripta en 2.1.2.1). El
método fundamental de Neuron es Compute (abstracto), mediante el cual se
evalúa la salida de la neurona.
Neuron está contenida en Layer (descripta en 2.1.2.3)
Es importante notar que a Neuron se le agregó la propiedad Salida que es el
carácter que representa al neurona (ver 2.1.2.6).
49
Reconocimiento de patentes de automóvil
A.5.3.2.5. ISupervisedLearning
cd Learning
«interface»
ISupervisedLearning
BackPropagationLearning
-
network: ActivationNetwork
learningRate: double = 0.1
momentum: double = 0.0
neuronErrors: double[][] = null
weightsUpdates: double[][][] = null
thresholdsUpdates: double[][] = null
+
+
+
+
+
-
«property» LearningRate() : double
«property» Momentum() : double
BackPropagationLearning(ActivationNetwork)
Run(double[], double[]) : double
RunEpoch(double[][], double[][]) : double
CalculateError(double[]) : double
CalculateUpdates(double[]) : void
UpdateNetwork() : void
+ Run(double[], double[]) : double
+ RunEpoch(double[][], double[][]) : double
DeltaRuleLearning
PerceptronLearning
-
network: ActivationNetwork
learningRate: double = 0.1
-
network: ActivationNetwork
learningRate: double = 0.1
+
+
+
+
«property» LearningRate() : double
DeltaRuleLearning(ActivationNetwork)
Run(double[], double[]) : double
RunEpoch(double[][], double[][]) : double
+
+
+
+
«property» LearningRate() : double
PerceptronLearning(ActivationNetwork)
Run(double[], double[]) : double
RunEpoch(double[][], double[][]) : double
BackpropagationLearning, DeltaRuleLearning y PerceptronLearning se utilizaron
en la etapa de inicial de investigación pero fueron descartadas por SOMLearning
(descripta en 2.1.2.6) ya que con esta última se obtuvieron mejores resultados.
Como se ve las tres clases implementan ISupervisedLearning.
50
Reconocimiento de patentes de automóvil
A.5.3.2.6. IUnsupervisedLearning y SOMLearning
cd Learning
«interface»
SOMLearning
IUnsupervisedLearning
+ Run(double[]) : double
+ RunEpoch(double[][]) : double
ElasticNetworkLearning
-
network: DistanceNetwork
distance: double[]
learningRate: double = 0.1
learningRadius: double = 0.5
squaredRadius2: double = 2 * 7 * 7
+
+
+
+
+
«property» LearningRate() : double
«property» LearningRadius() : double
ElasticNetworkLearning(DistanceNetwork)
Run(double[]) : double
RunEpoch(double[][]) : double
-
network: DistanceNetwork
width: int
height: int
learningRate: double = 0.1
learningRadius: double = 7
squaredRadius2: double = 2 * 7 * 7
+
+
+
+
+
+
«property» LearningRate() : double
«property» LearningRadius() : double
SOMLearning(DistanceNetwork)
SOMLearning(DistanceNetwork, int, int)
Run(InputDePrueba) : double
RunEpoch(InputDePrueba[]) : double
InputDePrueba
-
_inputs: double[]
_caracter: char
+ «property» Inputs() : double[]
+ «property» Caracter() : char
ElasticNetworkLearning implementa IUnsupervisedLearning, SOMLearning
también implementaba esta clase originalmente, sin embargo se cambiaron los
parámetros de entrada a las funciones Run y RunEpoch en SOMLearning y se
dejó de implementar IUnsupervisedLearning para poder identificar el carácter
clusterizado por la red. Para efectuar este mapeo entre la neurona y el carácter
clusterizado se implementó la clase InputDePrueba que contiene el parámetro
original (double[]) y el carácter mapeado permitiendo que SOMLearning se lo
informe a las neuronas Neuron y en la etapa de reconocimiento estas lo puedan
informar mediante Salida (ver 2.1.2.4).
51
Reconocimiento de patentes de automóvil
A.6. Codificación
La codificación se entrega en el CD que acompaña este trabajo profesional, para
esta se utilizó el lenguaje C# (.Net Framework 2.0) y como repositorio de datos se
utilizaron archivos binarios con formato propio.
52
Reconocimiento de patentes de automóvil
A.7. Implementación
A continuación de muestran las pantallas del sistema
A.7.1.
A.7.1.1.
Pantallas
Pantalla Principal
Pantalla principal que permite acceder a las distintas funcionalidades del
programa.
53
Reconocimiento de patentes de automóvil
A.7.1.2.
Pantalla Entrenamiento
Esta pantalla permite cargar el lote de imágenes para usar en el entrenamiento.
A.7.1.3.
Pantalla Entrenar
Esta pantalla permite seleccionar las características de la red y ejecutar el
entrenamiento, en la barra se puede ir viendo el progreso.
54
Reconocimiento de patentes de automóvil
A.7.1.4.
Pantalla Buscar Patente
En esta pantalla se puede seleccionar la imagen a reconocer y ejecutar el proceso
de reconocimiento.
Se pueden observar:
● Los limites de la patente encontrados por la aplicación como líneas rojas
sobre la imagen
● El rectángulo extraído de la imagen que forman estos limites (imagen a
procesar) luego de aplicarle los filtros
● Los caracteres extraídos de la imagen a procesar
● Los caracteres a los que más se asemejan en la red (neuronas
ganadoras)
● El porcentaje de acierto de cada carácter
● El Nº de patente reconocido
55
Reconocimiento de patentes de automóvil
A.8. Pruebas
A.8.1.
Plan de pruebas
Objetivo de la prueba
Objetos a probar
Detectar errores de programación
funcionamiento en el sistema
y
● Entrenamiento
● Guardar Red
● Buscar Patente
● Cargar Red
Características a probar
Funcionamiento de cada uno de los procesos
para un conjunto de tareas definido a tal fin.
La prueba se realizará en entorno Windows.
Características a no probar
No se probará la performance o velocidad de
la herramienta.
Cantidad de casos de prueba
A.8.2.
Documento de diseño de la prueba
Procedimiento de
pruebas
Las pruebas serán llevadas a cabo de acuerdo a lo
descripto en la sección A.8.4 (Especificación del
procedimiento de prueba) registrándose las anomalías
observadas.
Métodos de prueba Se utilizará el método de caja negra, adivinación de
a utilizar
errores, para poder así determinar las posibles fallas del
sistema.
Criterio para la
aprobación de las
pruebas
Los criterios para la aprobación de las pruebas se
realizarán de acuerdo a la siguiente tabla:
Excelente: Cuando el resultado obtenido luego de
realizada la prueba es idéntico al resultado citado en la
sección A.8.3 - Especificación de los casos de prueba.
Muy bueno: Cuando el resultado obtenido luego de
realizada la prueba es parecido al resultado citado en la
sección A.7.3 - Especificación de los casos de prueba.
Bueno: Cuando el resultado obtenido luego de realizada la
prueba no fue el resultado citado en la sección A.7.3 -
56
Reconocimiento de patentes de automóvil
Especificación de los casos de prueba, pero no ha
provocado anomalías en el funcionamiento de la
herramienta.
Regular: Cuando el resultado obtenido luego de realizada
la prueba no fue el resultado citado en la sección A.7.3 Especificación de los casos de prueba, pero ha provocado
anomalías en el funcionamiento del programa.
Malo: Cuando el resultado obtenido luego de realizada la
prueba no fue el resultado citado en la sección A.7.3 Especificación de los casos de prueba, pero ha provocado
anomalías en el funcionamiento del programa tales como
la salida del sistema o “colgarse”.
A.8.3.
Ítem
Especificación de los casos de prueba
Objetivo
Acción
Entrada
Resultado Esperado
1
Entrenar sin haber Ejecutar
cargado una red ni Entrenar Red
haber entrenado
previamente
Lote
prueba
de El entrenador crea
una red para letras y
otra para números y
las entrena
2
Entrenar habiendo Ejecutar
cargado una red
Entrenar Red
Lote
prueba
de El
entrenador
reemplaza las redes
de números y letras
por nuevas redes
entrenadas
3
Entrenar habiendo Ejecutar
entrenado
Entrenar Red
previamente
Lote
prueba
de El
entrenador
reemplaza las redes
de números y letras
por nuevas redes
entrenadas
4
Guardar una red Ejecutar
sin
haber Guardar Red
entrenado
ni
cargado
-----------------
Se debe informar al
usuario y no intentar
guardar la red
5
Guardar una red Ejecutar
luego de entrenar
Guardar Red
-----------------
Se debe guardar la
red
6
Cargar una red Ejecutar
luego de haber
-----------------
Se debe cargar la red
57
Reconocimiento de patentes de automóvil
guardado
Cargar Red
7
Cargar una red sin Ejecutar
haber
guardado Cargar Red
previamente
-----------------
8
Cargar una
habiendo
entrenado
previamente
Lote
de Se deben reemplazar
prueba para las redes entrenadas
el
por las cargadas
entrenamiento
previo
9
Reconocer
sin Ejecutar
haber cargado ni Buscar
entrenado una red Patente
Imagen
Se debe informar al
usuario y no intentar
buscar la patente
10
Reconocer
habiendo
entrenado
Ejecutar
Buscar
Patente
Imagen
Se busca la patente
11
Reconocer
Ejecutar
habiendo cargado Buscar
una red
Patente
Imagen
Se busca la patente
A.8.4.
Ítem
red Ejecutar
Cargar Red
Se debe informar al
usuario y no intentar
cargar la red
Especificaciones del procedimiento de prueba
Objetivo
Acción
Entrada
Resultado Esperado
1
Entrenar sin haber Ejecutar
cargado una red ni Entrenar Red
haber entrenado
previamente
Lote
prueba
de El entrenador crea
una red para letras y
otra para números y
las entrena
2
Entrenar habiendo Ejecutar
cargado una red
Entrenar Red
Lote
prueba
de El
entrenador
reemplaza las redes
de números y letras
por nuevas redes
entrenadas
3
Entrenar habiendo Ejecutar
entrenado
Entrenar Red
previamente
Lote
prueba
de El
entrenador
reemplaza las redes
de números y letras
por nuevas redes
entrenadas
4
Guardar una red Ejecutar
-----------------
Se debe informar al
58
Reconocimiento de patentes de automóvil
sin
entrenado
cargado
haber Guardar Red
ni
usuario y no intentar
guardar la red
5
Guardar una red Ejecutar
luego de entrenar
Guardar Red
-----------------
Se debe guardar la
red
6
Cargar una red Ejecutar
luego de haber Cargar Red
guardado
-----------------
Se debe cargar la red
7
Cargar una red sin Ejecutar
haber
guardado Cargar Red
previamente
-----------------
Se debe informar al
usuario y no intentar
cargar la red
8
Cargar una
habiendo
entrenado
previamente
Lote
de Se deben reemplazar
prueba para las redes entrenadas
el
por las cargadas
entrenamiento
previo
9
Reconocer
sin Ejecutar
haber cargado ni Buscar
entrenado una red Patente
Imagen
Se debe informar al
usuario y no intentar
buscar la patente
10
Reconocer
habiendo
entrenado
Ejecutar
Buscar
Patente
Imagen
Se busca la patente
11
Reconocer
Ejecutar
habiendo cargado Buscar
una red
Patente
Imagen
Se busca la patente
red Ejecutar
Cargar Red
A.8.5.
Informe de los casos de prueba ejecutados
Ítem
Objetivo
Acción
Entrada
Resultado
Esperado
Resultado
Obtenido
1
Entrenar
sin Ejecutar
haber cargado Entrenar
una red ni Red
haber
entrenado
previamente
Lote
prueba
de El entrenador Excelente
crea una red
para letras y
otra
para
números y las
entrena
2
Entrenar
Lote
de El
Ejecutar
entrenador Excelente
59
Reconocimiento de patentes de automóvil
habiendo
cargado
red
Entrenar
una Red
Ejecutar
Entrenar
Red
prueba
Lote
prueba
reemplaza las
redes
de
números
y
letras
por
nuevas redes
entrenadas
3
Entrenar
habiendo
entrenado
previamente
de El entrenador Excelente
reemplaza las
redes
de
números
y
letras
por
nuevas redes
entrenadas
4
Guardar
una Ejecutar
red sin haber Guardar
entrenado
ni Red
cargado
-----------------
Se
debe Excelente
informar
al
usuario y no
intentar guardar
la red
5
Guardar
una Ejecutar
red luego de Guardar
entrenar
Red
-----------------
Se
debe Excelente
guardar la red
6
Cargar una red Ejecutar
luego de haber Cargar
guardado
Red
-----------------
Se debe cargar Excelente
la red
7
Cargar una red Ejecutar
sin
haber Cargar
guardado
Red
previamente
-----------------
Se
debe Excelente
informar
al
usuario y no
intentar cargar
la red
8
Cargar una red Ejecutar
habiendo
Cargar
entrenado
Red
previamente
Lote
de
prueba para
el
entrenamiento
previo
Se
deben Excelente
reemplazar las
redes
entrenadas por
las cargadas
9
Reconocer sin Ejecutar
haber cargado Buscar
ni
entrenado Patente
una red
Imagen
Se
debe Excelente
informar
al
usuario y no
intentar buscar
la patente
60
Reconocimiento de patentes de automóvil
10
Reconocer
habiendo
entrenado
Ejecutar
Buscar
Patente
Imagen
Se busca
patente
la Excelente
11
Reconocer
Ejecutar
habiendo
Buscar
cargado
una Patente
red
Imagen
Se busca
patente
la Excelente
A.8.6.
Informe de la prueba
El banco de pruebas funcionó de acuerdo a lo esperado al ser sometido a las
pruebas descriptas en las secciones anteriores.
61
Reconocimiento de patentes de automóvil
A.9. Mantenimiento
Se debe efectuar mantenimiento cuando la tasa de acierto de la red caiga por
debajo de un umbral especificado.
El mantenimiento se realiza exactamente igual que el entrenamiento inicial
(sección A.3.1), se obtiene un lote de imágenes con sus respectivas salidas y se
las ingresa al subsistema de entrenamiento especificando las características de la
red. Una vez que se obtienen las redes de salida se las instala en los subsistemas
de reconocimiento.
La instalación consiste en reemplazar los archivos “redLetras” y “redNumeros” en
el directorio de la aplicación.
62
Descargar