martes, 21 de mayo de 2013

Visión Computacional- Reporte de Proyecto

PRESENTACIÓN




_________________________________________________________________________________

Detección de Armas

Roberto Axel Valenzuela Padilla
robertovalenzuela91@gmail.com
FIME - UANL

Propósito y Justificación
El propósito de este proyecto es la creación de un sistema para la detección  y clasificación de armas, utilizando técnicas de visión computacional. Este proyecto utiliza la captura en tiempo real de una cámara de video donde se analiza si el objeto buscado se encuentra o no en la grabación , de ser encontrado el objeto se enmarca su posición.

Justificación

Elegí  este proyecto ya que la inseguridad vivida actualmente en México y principalmente en Nuevo León, es muy alta y necesita medidas urgentes para contrarrestarla. 

Es muy frecuente que en conciertos, bares o antros incluso en plazas comerciales ocurran este tipo de hechos violentos,si se implementarán más medidas de seguridad  en conjunto con este proyecto , este tipo de actos podrían verse reducidos significativamente.

Este proyecto puede ser implementado en muchos lugares como:


  • Bares 
  • Antros 
  • Conciertos 
  • Palenques
  • Aeropuertos
  • Plazas Comerciales
Entonces el proyecto se basa en esta inseguridad vivida como un método mas para prevenirla, reducirla y evitar que siga creciendo.

Diseño del Software

El software fue diseñado en el lenguaje de programación Python, utilizando la librería de OpenCV y el prototipo implementado y por cuestiones económicas probado en una computadora Dell, utilizando como sistema operativo Ubuntu 12.04.

OpenCV Logo with text.png         

Primeramente para la detección de imágenes ser entreno una red neuronal , donde se buscaron las imágenes "positivas" que en este caso son las fotografías de las armas y las "negativas" que serían cualquier imagen donde se encuentre presente el objeto a buscar.

La detección de los objetos en el video se hace analizando cada frame, y el archivo pistoladetect.xml es llamado en el código para analizarse si se encuentra o no el objeto buscado, para el preprocesamiento se utilizan las técnicas de visión y tareas vistas en clase como escala de grises y filtros. 

Se van guardando imágenes de cada parte del proceso y finalmente si el objeto es detectado es enmarcado en la pantalla.

Podríamos dividir el programa en varias partes:
  • Inicio: Donde se utiliza OpenCV para abrir la cámara de video de la computadora que sera tomado como dato de entrada.
  • Procesamiento: La función que lee cada frame y donde se mandan a llamara las demás funciones 
  • Preprocesamiento: la función se encarga de leer cada frame y de mandar llamar las funciones necesarias para procesarlas.
  • Procesamiento: Primero se pasa la imagen a escala de grises, después de eso se hace difusa la imagen y se binariza para poder eliminar el ruido.
  • Análisis de Captura: Después se llama al documento .xml y para hacer el Haar Detection , si es encontrado en la captura se enmarca y muestra en la pantalla el numero de armas detectadas como texto en el video.
                   


Imágenes del proceso.



Primero a escala de a escala de grises:




Ahora se aplica el filtro blur y convolución y binarización:
















Se aplica Haar Detection  y se muestra en pantalla.













Librerías



Para la realización de este proyecto se utilizaron diferentes librerías.

  • OpenCV: es una librería libre de visión computacional. Se ha utilizado para un sin fin de aplicaciones, desde seguridad con detección de movimiento hasta aplicativos de control de procesos donde se requiere reconocimiento de objetos.
  • Matplot: Que esuna librería para la generación de gráficos.
  • Numpy: Que constituye una biblioteca de funciones matemáticas de alto nivel para operar con esos vectores o matrices.
  • PIL (Python Imaging Library): Es una librería que nos ayuda para abrir, manipular y guardar diferentes imágenes en diferentes formatos.  
Desempeño

Para las pruebas se utilizó un equipo DELL Inspiron N4050 con:


  1. CPU Intel Core i4
  2. RAM 2GB
  3. Sistema operativo Ubuntu 12.04 particionado

Para evaluar el desempeño se tomó el tiempo que se tardaba en realizar todo el procedimiento  hasta encontrar y enmarcar un objeto  primeramente se realizó la prueba con las técnicas de visión solamente y después con las funciones que nos ofrece OpenCV.



Debilidades


Una de las debilidades más importantes es que al estar realizando tantos procesos en tiempo real se vuelve realmente demasiado pero demasiado lento y poco usable el proyecto, esto porque se implementaron las técnicas de visión sin utilizar funciones de OpenCV, aunque también se diseño el código utilizando funciones de OpenCV de igual manera se dejan los dos diseños y para el demo se utiliza OpenCV con todas sus funcionalidades que ofrece.

Trabajo a futuro y posibles mejoras


Creo que potencialmente aún hay muchas cosas que se le podrían implementar a este sistema, ya que como se mencionó un sistema de seguridad regularmente abarca distintos tipos de mecanismos de seguridad en conjunto.


Para mejorar el proyecto habría que adquirir cámaras , esto implica un gasto pero una gran mejora en el sistema, porque como se mencionó en el reporte fue realizado en una computadora Dell haciendo uso de su cámara integrada, así que cámaras externas mejorarían considerablemente el alcance y atractivo de este sistema.

 Otra idea en la que podría transformarse es en la de una empresa que brinda seguridad , totalmente ajena a los establecimientos ya sean locales ,plazas comerciales , bares , palenques, conciertos etc y ofrecer un monitorio remoto, esta empresa externa instalaría las cámaras de seguridad y su monitoreo.



Control de versiones


El proyecto se encuentra en línea en un repositorio. La liga del repositorio es la siguiente:

Repositorio

VIDEO - DEMO




Referencias

  • [1] HaarTraining doc Este documento puede obtenerse de OpenCV/apps/HaarTraining/doc en tu directorio de instalacion OpenCV[Accessed: 14 May 2013].
  • [2] Rainer Lienhart and Jochen Maydt. An Extended Set of Haar-like Features for Rapid Object Detection. IEEE ICIP 2002, Vol. 1, pp. 900-903, Sep. 2002. http://www.lienhart.de/ICIP2002.pdf[Accessed: 14 May 2013].
  • [3] Modified HaarTraining doc Este es una versión modificada de la referencia [1][Accessed: 14 May 2013].
  • [4]Rahman, Abid. (June 2012). Countours. OpenCV Python Tutorials. http://opencvpython.blogspot.mx/2012/06/hi-this-article-is-tutorial-which-try.html[Accessed: 14 May 2013].

2 comentarios:

  1. Sería bueno limpiar los archivos extra del repositorio. Lo de "en el periodo enero-agosto 2013" en tu readme da la idea que piensas reprobar y seguir en veranos; este semestre es enero-junio. Van 9 pts por la presentación.

    ResponderEliminar
  2. Sigues metiendo espacios donde no es alrededor de la puntuación... En todas las referencias a material en línea sería bueno tener una liga activa. Hay algunos detalles de ortografía además de la puntuación. 8 pts por el reporte.

    En el repo se pudiera haber mejorado los nombres de los archivos y no creo que ayuda tener los archivos de fases intermedios que se generan durante la ejecución incluidos en el repo, salvo que si los pones en una carpeta de ejemplo aparte. Pedazos del código te quedaron sin comentarios. 8 pts por el repo.

    ResponderEliminar