Download Reconocimiento de Patrones utilizando Tecnologías

Document related concepts
no text concepts found
Transcript
Reconocimiento de Patrones utilizando Tecnologías de Internet
Marcelo Vera, Renato Salinas, PhD
Departamento de Ingeniería Eléctrica, Universidad de Santiago de Chile
rsalinas@lauca.usach.cl
Resumen
Este trabajo presenta la implementación de un sistema de monitoreo y reconocimiento de eventos mediante
lenguaje Java. El objetivo primario consiste en evaluar la eficacia de detectar intrusión en forma remota, vía
Internet, minimizando los falsos positivos y garantizando una respuesta a un usuario preestablecido. El tipo
de respuesta puede ser vía mensaje de texto, email, o bien un llamado a su celular, o quizás una acción de
control.
Keywords: Java, Internet, Pattern Recognition, Intrusion Detection
INTRODUCCIÓN
Nuestro estudio tiene como objetivo el generar una base práctica para el desarrollo de un sistema de
reconocimiento, monitoreo de imágenes y envío de respuesta (habilitando al usuario para tomar acción
respecto del fenómeno observado) utilizando tecnologías de Internet. En particular, la transmisión de datos
vía protocolo IP y procesamiento, mediante lenguaje Java, de la información obtenida. El enfoque de este
trabajo apunta a la implementación de un sistema híbrido, de bajo costo, modular y escalable, con las
bondades de la detección automática y del buen juicio humano. En un lenguaje más concreto, supongamos
que nuestra problemática es la detección de intrusión en forma remota, es decir, queremos controlar el
ingreso a alguna habitación o recinto. El sistema, una vez instalado y configurado, podrá detectar movimiento
en dicha habitación y contar los objetos que cambiaron. Al ser detectado algún cambio se emitirá una alarma
en forma de correo electrónico para el usuario final. El usuario notificado del evento podrá acceder a la
información recogida por la cámara, tanto actual como histórica, simplemente ingresando a una página Web
destinada para ello (Panel de Control). Acá podrá verificar los indicadores de estado, las imágenes
procesadas, configurar el sistema en forma remota y emitir una función de respuesta hacia la cámara (o
sistema de captura y procesamiento). Los beneficios de esta modalidad de acceso son evidentes: bajo costo y
accesible desde cualquier parte del mundo utilizando una plataforma estándar. La figura 1 muestra un
esquema básico del sistema propuesto.
Captura y
Procesamiento
de imagen (1):
Cámara, PC
conectado a internet,
Java
INTERNE
T
Cliente(3):
Estación conectada
a Internet (PC,
Celular, PDA, etc.)
Despliegue(2):
Servidor WEB,
Front End,
Base de Datos de
imágenes
Figura 1. Diagrama del sistema propuesto.
El esquema original se basa en un subsistema que captura, analiza y envía la imagen o imágenes procesadas
(1) a un sistema de despliegue web (2). Los clientes del servicio (3) acceden a la información necesaria por
medio de páginas web dinámicas (programadas con Java Servlets), que además les permiten interactuar con
el sistema de captura y procesamiento y recibir alarmas (vía correo electrónico).
Esquema general de funcionamiento interno.
Dado lo expuesto en la sección anterior, la idea de utilizar Java fue totalmente congruente, dado el origen del
mismo. Java nació como herramienta de programación para pequeños equipos conectables a una red. Por
tanto se pensó que lo más coherente como implementación sería una cámara que contuviera un sistema
procesador de información, con una máquina Virtual Java incorporada y con las clases Java programadas
para realizar la tarea de reconocimiento de patrones y de comunicación vía ftp con un servidor de
publicación. Es evidente que en términos de hardware esta situación, si bien es bastante atractiva, también es
mucho más compleja. Sin embargo, consideramos que una aproximación aceptable de este sistema sería una
cámara web comercial conectada con un computador personal, con las clases programadas y los protocolos
de comunicación correspondientes. Esta consideración es válida y consistente con la idea original dada la
portabilidad de la plataforma de programación Java. Esto quiere decir que las clases programadas para este
trabajo pueden ser ejecutadas en cualquier dispositivo que tenga una máquina virtual instalada y los recursos
disponibles según cada caso (contexto gráfico para procesamiento de imágenes y protocolo de comunicación
TPC/IP). De hecho, podrían ser ejecutadas en una cámara portátil adaptada con los sistemas de
procesamiento correspondientes, teniendo en consideración solamente los problemas al nivel de hardware,
interfaces gráficas, sistemas de archivo y comunicaciones. Lo anterior puede sonar bastante imbricado, pero
cualquier computador personal actual (por pequeño que sea) posee estas características y su adaptación a un
dispositivo más pequeño sería un problema que sale del ámbito de este trabajo. Más aún, las cámaras
digitales actuales manejan tanto el sistema de archivos requerido, cómo el contexto gráfico necesario. Sería
sólo cuestión de adaptar para ellas una JVM y un sistema de comunicaciones acorde. La figura 2 muestra en
detalle las partes que constituyen el sistema desarrollado.
Captura y
Generador de
archivos JPG
Cámara
PC conectado a Internet
Máquina Virtual Java (JVM)
Procesamiento de imágenes
Recepción
Acción
Usuario
Comunicación vía
Protocolos
FTP – SMTP
Set de protocolos TCP/IP
Envío de
imágenes y
registros. Envío de
correo de alerta
Recepción y envío
de archivos de
estado, registro y
comando usuario
Recuperación
de archivo de
configuración.
INTERNET
INTRANET
Recuperación e-mail
alerta.
Sistema de
Servidor de WEB
Servicio FTP
Base de
datos
Imágenes
Servicio HTTP
Registros
de
estado y
Soporte Servlets
JVM
Front End
Páginas
Dinámicas
Recepción y
respuesta
requerimientos
web
Envío
requerimientos
vía página web
y recepción de
la respuesta.
Figura 2. Esquema general de funcionamiento.
Clientes Servicio
Reconocimiento y Detección.
El hecho de decodificar la imagen capturada tiene una serie de implicancias respecto de la interpretación
hecha: ¿Cuáles son los umbrales?; ¿Qué es lo que la cámara obtiene como información?; ¿Cómo se interpreta
dicha información?; ¿Qué procedimientos podemos establecer para determinar la exactitud de la
interpretación hecha en forma automática?. Estas son algunas de las preguntas que nos motivaron y para las
cuales se buscaron respuestas.
Cómo "ve" la cámara.
Cuando decimos cómo "ve" la cámara, evidentemente nos referimos a qué información obtiene la cámara y
cómo podemos interpretarla. Internamente, el sistema toma dos imágenes consecutivas y genera una matriz
de variación, que es la resta entre las componentes RGB de ambas imágenes. Si la resta de las componentes
de un píxel es mayor que cierto umbral se marca un 1, en caso contrario se marca un 0. La figura 3 muestra
un esquema de la situación.
Cámara
Imagen 2
Imagen 1
1111111111
111111111111111
1
111111111111111
111111
111111111111111
11111111
111111111111111
111111111
I
Figura 3. Generación de matriz de diferencia.
Respecto a este punto, es importante destacar que la decisión asociada a la detección depende mucho del
objetivo del muestreo. Para este procedimiento experimental se asumió que una inspección visual desde la
perspectiva humana sería aceptable. Esto es, se consideran aceptables aquellos cambios que fuesen relevantes
para la percepción humana, y con iluminación natural este umbral es de aproximadamente de 30 unidades.
Consideramos también que el tamaño de la porción que cambia era relevante. La calibración de este
parámetro afecta tanto al algoritmo de detección de movimientos, como al de conteo de objetos. Al primero
en el sentido de que se determinará si hubo un cambio relevante sólo si el número de puntos cambiados es
mayor o igual a dicho umbral. Al segundo en el sentido de que un objeto conexo (de acuerdo con el
algoritmo empleado) será considerado para el conteo sólo si el número de sus pixeles conectados sobrepasa o
iguala a este umbral. En este punto, es más evidente aún que hay que tomar en cuenta la apreciación humana,
es decir ¿de qué tamaño debe ser un objeto/región de la imagen para que se considere como un cambio
apreciable? En la figura 4 aparece una escena con un mueble que contiene libros. También aparece una
figurilla, la cuál fue destacada encerrándola en un círculo. Para visualizar las proporciones, esta figurilla es
un pingüino plástico de 11 cm de alto y 6 cm de ancho. La toma fue hecha desde aproximadamente 1.30 m.
En la imagen, la figurilla puede ser enmarcada en un cuadro de 12x18 pixeles (216 pixeles), lo cual
representa un 1,25% de la imagen total (160x120 pixeles). Para nuestro caso, el pensar en un umbral de 1%
del tamaño total de la imagen es aceptable. Sin embargo revisando este razonamiento llegaremos a la misma
conclusión: la determinación de este parámetro depende del uso y de los factores particulares involucrados en
el muestreo. Si por ejemplo se requiriera reconocer un cambio en la intensidad de luz de la imagen, el umbral
de tamaño podría ser ubicado en cualquier punto entre 1 y 100%.
Figura 4. Imagen parte de muestra de menor luminosidad.
Algoritmos de reconocimiento
Si bien el sistema fue probado con dos tipos de algoritmos de reconocimiento, éstos podrían ser
reemplazados con simplemente cambiar, o modificar, la clase JAVA respectiva. Los algoritmos que se
utilizaron fueron: a) detección de movimiento, y b) conteo de objetos. Ambos plantean una comparación
pixel a pixel de una imagen con la siguiente, esto es, hacer la diferencia aritmética de cada componente de
color (RGB), punto a punto, entre una imagen y la consecutiva. Sobre la base de lo anteriormente expuesto,
el vector de características propuesto (vector que servirá para interpretar el resultado del proceso de
reconocimiento) tendría las siguientes componentes:
x1 = Porcentaje de puntos que sufrieron un cambio (respecto del área total de la imagen
capturada). Esto equivale al tamaño de la región cambiada.
x2 = Promedio de variación de color de los puntos que cambiaron. Esto equivale a indicar qué tan
notorio (opaco o transparente) fue el cambio en la región detectada y cuantificada de tamaño
x1 .
Nuestro clasificador queda rápidamente especificado por este vector. Si ambas componentes pasan un umbral
determinado estamos en presencia de un evento (se detectó movimiento), en caso contrario no ha habido
cambio. Es decir, quedan determinadas nuestras dos clases, como lo ilustra la figura 5.
x2
Umbral
cambio de
color
Movimiento
Detectado
No se
detectó
Movimiento
Umbral
tamaño del
cambio
x1
El algoritmo de detección de objetos es una extensión del anterior, al cual se le incorpora un algoritmo de
componentes conexas modificado, el cuál permite evaluar si los cambios encontrados en la imagen son
continuos. En términos estrictos, el algoritmo de componentes conexas será evaluado considerando los
cambios entre una imagen y otra. Por tanto, detectará si las regiones de la imagen son conexas y cuántas son.
Interfaz de Cliente
Anteriormente se mencionó que el usuario podrá obtener mayor información acerca del evento detectado
revisando una serie de páginas Web dinámicas, que se denominan el Panel de Control. Estas páginas fueron
desarrolladas utilizando Java Servlets. Estas permiten al usuario ver la situación actual del sistema, la historia
de los eventos ocurridos y configurar los parámetros, tanto en la cámara remota como en el despliegue de la
información. (Ver Figura 6).
(a)
(b)
Figura 6. Ejemplos de la interfaz cliente. (a) Normal, (b) Alarma, (c) Histórica
Respuesta del Usuario
Como se mencionó anteriormente, el usuario podrá emitir un comando que será recibido por el Subsistema de
captura y reconocimiento (cámara). Esto es simplemente que, en la interfaz cliente, el usuario tiene una
opción que gatilla la ejecución de un Servlet en el servidor Web, más precisamente en el servidor de
aplicaciones instalado sobre el servidor web (Tomcat). Este Servlet escribe un archivo en el servidor. Este
archivo es periódicamente monitoreado por el sistema de captura y reconocimiento por medio de una
conexión FTP (este mismo principio se utiliza para la configuración del sistema). Cuando el sistema detecta
la presencia de este archivo, ejecuta una acción, que para nuestro caso de prueba era desplegar un mensaje en
pantalla.
Consideraciones de rendimiento
Por rendimiento nos referimos al tiempo de respuesta del sistema, tanto para enviar como para recibir
información. Nótese que cada uno de los subsistemas (captura, despliegue y clientes) trabajan entrelazados
por el envío de información de un sistema al otro, y, de acuerdo con lo observado experimentalmente, es el
tiempo asociado con el tráfico de información lo que pone la cota al proceso completo, más que los procesos
de análisis de información.
En ese subsistema existen básicamente dos áreas dónde poder analizar el comportamiento en torno al tiempo
de respuesta del sistema: análisis de las imágenes y envío de información hacia el sistema de despliegue
(incluyendo comandos de borrado y directorio).
Revisando el proceso de análisis y reconocimiento se observó que, dependiendo de las actividades que esté
realizando el procesador, el tiempo promedio requerido para ello es del orden de 700 ms. Se pudo apreciar
que el tiempo de comunicación (comandos FTP asociados al traspaso, listado y borrado de archivos), en
promedio, supera en aproximadamente 6 veces al tiempo de análisis de la imagen, sobre una red LAN que de
por sí es bastante rápida. Para el caso de una conexión telefónica de 45.333 kbps se obtuvieron similares
resultados. La mejora del tiempo de respuesta de esta parte del sistema tiene dos alternativas no excluyentes y
complementarias:
Instalar el sistema sobre un ancho de banda adecuado. En el caso de una LAN, el sistema funciona en
forma bastante fluida.
Manejar la cantidad de información transmitida y recibida. En total, la cantidad de información transmitida
para el caso de alarma es aproximadamente 13.7Kb y aproximadamente 4.7Kb para estado de no alarma.
Esta información incluye imágenes, registros de estado y marcas para sincronización. No se incluyen los
tiempos asociados a borrado y listado de archivos.
En nuestra operatoria experimental hicimos uso de ambas herramientas. En el caso del segundo punto se
enfatizó el minimizar el tamaño de las imágenes, que son los archivos más grandes (de 20 KB a 5KB),
obteniéndose una considerable mejora del rendimiento.
Conclusiones
Se ha presentado un sistema de reconocimiento de eventos vía Internet, desarrollado combinando varias
herramientas, tanto de hardware como de software. Las estadísticas de la percepción de inseguridad en la
ciudadanía y necesidad de monitoreo remoto, hacen de este sistema una proposición bastante oportuna para
nuestro medio. La implementación de este sistema tuvo como mayor costo el hardware involucrado, dado
que tanto la plataforma de sistema operativo (Linux), como de programación (Java) son de acceso gratuito en
Internet. Adicionalmente, este tipo de tecnologías se encuentra ampliamente difundida y su documentación
es, en gran parte, de libre acceso en Internet.
Agradecimientos
Los autores agradecen el apoyo del proyecto Dicyt - USACH 069913SS.
REFERENCIAS
1.
2.
3.
4.
M. Vera. "Sistema de reconocimiento de patrones usando tecnología de Internet". Memoria Ing. Civil
Eléctrica, Departamento de Ingeniería Eléctrica, USACH, 2001.
J. Durán, J. Villacorta y A. Izquierdo. "Modelado de un sistema de vigilancia video-acústico". IX
Congreso Intl. de Telecomunicaciones, Valdivia, Nov. 2000, pp. 155-161.
R. Navarro y R. Salinas. "Visualización de imágenes de alta resolución en Internet". IX Congreso Intl.
de Telecomunicaciones, Valdivia, Nov. 2000, pp. 49-54.
R. González y R. Woods. Tratamiento Digital de Imágenes. Addison-Wesley/Díaz de Santos, 1996.