Re-identificación de personas en redes de sensores RGBD
Full text
Re-identificaci´on de personas en redes de sensores RGBD Proyecto Fin de Carrera Alberto Manuel Mireles Su´arez Tutor: Modesto Castrill´on Santana Tutor: Javier Lorenzo Navarro Tutor: Daniel Hern´andez Sosa Las Palmas de Gran Canaria, Mayo de 2015
Agradecimientos Me gustar´ıa mostrar mi agradecimiento a todas las personas que, de un modo u otro, me han ayudado a lo largo de estos ´ultimos a˜nos en la carrera. En primer lugar quiero darle las gracias a mis tutores: Modesto, Javier y Daniel, por brindarme su apoyo y conocimientos, sin los cuales no habr´ıa sido capaz de completar este proyecto. A mis profesores y todos aquellos que formaron parte de esta etapa formativa tambi´en les doy las gracias. Debo mencionar tambi´en a los asistentes a las reuniones peri´odicas con los tutores: Rub´en, Luis, Pedro, Eduardo y Dani en las que ´ıbamos mostrando nuestros avances y las dificultades que surg´ıan. Muchas gracias por todas esas peque˜nas ideas y sugerencias que ayudaron a sortear los obst´aculos que aparecieron por el camino. Lo mejor que me llevo de estos a˜nos en la universidad son los amigos que he hecho, con los que he vivido muchos momentos buenos y algunos que otros dif´ıciles. Quiero nombrar a Dani, Aitor, Eduardo, Mayca y David por haberme ayudado siempre, ser unos muy buenos amigos y haber tenido tanta paciencia conmigo durante las muchas pr´acticas que realizamos. Tambi´en quiero mencionar a Atte, quien siempre me apoy´o y ayud´o cuando lo necesitaba. A ellos y al resto de mis compa˜neros, muchas gracias. Por ´ultimo, quiero agradecer a mis padres y mi hermana por todo el apoyo que me han dado. Gracias por estar ah´ı cuando os he necesitado y haber tenido tanta paciencia conmigo.
´ Indice general ´ Indice de figuras III Lista de algoritmos V 1. Introducci´on 1 1.1. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Sistemas de identificaci´on . . . . . . . . . . . . . . . . . . . . 2 1.2.1. Detecci´on de presencia . . . . . . . . . . . . . . . . . . 3 1.2.2. Rasgos biom´etricos . . . . . . . . . . . . . . . . . . . . 3 1.3. Reconocimiento de personas . . . . . . . . . . . . . . . . . . . 3 2. Herramientas de desarrollo 7 2.1. C´amaraKinect .......................... 7 2.2. Software utilizado . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.1. Biblioteca OpenCV . . . . . . . . . . . . . . . . . . . 9 2.2.2. Biblioteca PCL . . . . . . . . . . . . . . . . . . . . . . 10 2.2.3. MATLAB ......................... 11 2.3. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . 12 3. Planificaci´on 13 3.1. Metodolog´ıa............................ 13 3.2. Temporizaci´on........................... 13 3.3. Coste de la instalaci´on . . . . . . . . . . . . . . . . . . . . . . 15 4. Escenario experimental 17 4.1. Posicionamiento de la c´amara . . . . . . . . . . . . . . . . . . 18 4.2. Etiquetado............................. 19 4.3. Calibraci´on ............................ 21 5. Desarrollo e implementaci´on 23 5.1. Generaci´on de nube de puntos . . . . . . . . . . . . . . . . . 24 i
5.2. Detecci´on de personas . . . . . . . . . . . . . . . . . . . . . . 25 5.2.1. Identificaci´on del fondo . . . . . . . . . . . . . . . . . . 25 5.2.2. Sustracci´on del fondo . . . . . . . . . . . . . . . . . . 28 5.3. Segmentaci´on de individuos . . . . . . . . . . . . . . . . . . . 29 5.4. Seguimiento de personas . . . . . . . . . . . . . . . . . . . . . 34 5.5. Caracterizaci´on de la identidad . . . . . . . . . . . . . . . . . 41 5.5.1. Caracter´ısticas f´ısicas . . . . . . . . . . . . . . . . . . . 42 5.5.2. Color............................ 46 5.5.3. Modelado ......................... 49 5.6. Almacenamiento de las caracter´ısticas . . . . . . . . . . . . . 52 5.7. M´ultiples c´amaras . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.8. B´usqueda de correspondencias . . . . . . . . . . . . . . . . . 54 6. Resultados de las pruebas 61 6.1. Espacio de color RGB normalizado . . . . . . . . . . . . . . . 61 6.2. Espacio de color HSV . . . . . . . . . . . . . . . . . . . . . . . 68 6.3. An´alisis de resultados . . . . . . . . . . . . . . . . . . . . . . . 71 7. Trabajo futuro y conclusiones 73 7.1. Mejoras del sistema . . . . . . . . . . . . . . . . . . . . . . . 73 7.1.1. Dispositivo de captura . . . . . . . . . . . . . . . . . . 73 7.1.2. Detecci´on y segmentaci´on . . . . . . . . . . . . . . . . 74 7.1.3. Caracterizaci´on . . . . . . . . . . . . . . . . . . . . . . 74 7.2. Posibles aplicaciones del sistema . . . . . . . . . . . . . . . . . 75 7.3. Conclusiones............................ 76 Glosario 79 Bibliograf´ıa 81 ii
´ Indice de figuras 1.1. Sistema autom´atico de control de aduanas SmartGate. . . . . 4 1.2. Comprobaci´on de la identidad mediante huella dactilar en un punto de actualizaci´on del DNIe . . . . . . . . . . . . . . . . . 5 1.3. Muestra de las limitaciones de reconocimiento del usuario en XboxOne.............................. 6 2.1. C´amara Kinect de Microsoft . . . . . . . . . . . . . . . . . . . 8 2.2. Rango de visi´on de la c´amara Kinect. . . . . . . . . . . . . . . 8 2.3. Logotipo de la biblioteca OpenCV. . . . . . . . . . . . . . . . 10 2.4. Logotipo de la biblioteca Point Cloud Library. . . . . . . . . . 10 2.5. Logotipo de MATLAB. . . . . . . . . . . . . . . . . . . . . . . 11 3.1. Diagrama representativo de la temporizaci´on del proyecto. . . 14 3.2. Diagrama representativo de la temporizaci´on de la fase de desarrollo.............................. 14 4.1. Geometr´ıa del posicionamiento de la c´amara Kinect. . . . . . . 19 4.2. Ejemplo del visor mostrando los datos etiquetados para una persona. .............................. 20 5.1. Fases que componen el sistema. . . . . . . . . . . . . . . . . . 23 5.2. Captura de la escena que representa el fondo que debe ser eliminado.............................. 25 5.3. Resultados de la detecci´on de planos empleando la biblioteca PCL................................. 26 5.4. Nube de puntos con ruido que representa el modelo del fondo detectado.............................. 27 5.5. Fondo modificado al abrir una puerta en un momento posterior almodelado............................. 28 5.6. Ejemplo de sustracci´on de fondo . . . . . . . . . . . . . . . . . 31 5.7. Ejemplo que resalta el ´area de inter´es en el que se encuentran individuos diferentes que pueden ser segmentados . . . . . . . 33 iii
aplicaciones menos cr´ıticas en un entorno m´as personal. Existe un gran inter´es en investigar y lograr sistemas de reconocimiento de personas con altas tasas de acierto, ya que son un medio que permite automatizar algo que hasta ahora s´olo los humanos podemos hacer con gran precisi´on. A su vez es algo de lo que depende la seguridad, ya sea de un pa´ıs, una empresa o individuo, ya que reconocer a alguien es algo que se realiza de forma cotidiana. Desde pagar en un comercio con medios electr´onicos, acudir a un banco a hacer alguna transacci´on, acceder al puesto de trabajo, entrar en zonas de acceso restringido o incluso viajar, todo ello requiere que nos identifiquemos. Figura 1.1: Sistema autom´atico de control de aduanas SmartGate. [SAFRAN Morpho, 2015] En la actualidad algunos de estos sistemas ya se han implantado, como por ejemplo el que aparece en la figura 1.1, SmartGate, el cual seg´un [Australian Customs, 2015], es un sistema automatizado de control de pasaportes en funcionamiento en Australia y que, para los portadores de un n´umero limitado de pasaportes electr´onicos, permite pasar por la aduana del aeropuerto empleando un sistema de reconocimiento para comparar el individuo con los datos que figuran en el pasaporte. Un sistema similar a este es el IRIS (Iris Recognition Immigration System), el cual seg´un [Daugman, 2009] es usado para el control de fronteras en el Reino Unido con la diferencia de que emplea la retina para reconocer a los individuos. 4
Otro sistema m´as sencillo y que puede considerarse bastante extendido es la identificaci´on por huella dactilar. Es un m´etodo que se considera fiable y v´alido como prueba en los juzgados, ya que suele determinar la presencia de un individuo en una escena. Por otro lado, es un sistema empleado por las Fuerzas y Cuerpos de Seguridad del Estado para confirmar la identidad de un individuo ya que, desde el momento en el que, al menos en Espa˜na, se obtiene un documento de identidad, las huellas dactilares son escaneadas. Figura 1.2: Comprobaci´on de la identidad mediante huella dactilar en un punto de actualizaci´on del DNIe. [Viafirma Developers, 2015] Finalmente, tambi´en existen sistemas de reconocimiento que hacen uso de las t´ecnicas anteriormente mencionadas en un entorno m´as personal que van desde el reconocimiento del usuario que sostiene un m´ovil, o identificar al usuario que enciende una consola que disponga de una c´amara, como puede ser la Xbox 360 con el sensor Kinect. En este ´ultimo caso, se almacenan datos sobre la fisonom´ıa del jugador, aunque principalmente se basan en la cara, lo cual hace que sea dif´ıcil la re-identificaci´on si el usuario cambia ligeramente su aspecto, como podr´ıa ser quitarse o ponerse unas gafas, tal y como se muestra en la figura 1.3. A pesar de todos estos avances, el empleo de sistemas de re-identificaci´on por lo general est´an limitados por las estrictas normativas en cuanto a la privacidad de los datos. En este aspecto, los datos biom´etricos como la huella dactilar, la imagen de la retina o el ADN son considerados informaci´on 5
Figura 1.3: Muestra de las limitaciones de reconocimiento del usuario en Xbox One. [Ackerman, 2013] sensible que debe ser protegida. Es por tanto debido a la compleja regulaci´on que se aplica a esta informaci´on, por lo que no se emplea de manera habitual en los entornos p´ublicos. En [Grupo de Trabajo del Art´ıculo 29, 2012], podemos encontrar un informe en el que se tratan los riesgos de los sistemas biom´etricos m´as habituales en el que se concluye que cierta informaci´on, como el ADN, se consideran un dato sensible y sobre el que se deber´an aplicar garant´ıas especiales aparte de los principios generales de protecci´on de datos. 6
Cap´ıtulo 2 Herramientas de desarrollo Este cap´ıtulo se centra en describir las bases tecnol´ogicas del proyecto, presentando las diferentes herramientas, tanto hardware como software, que se han empleado. El soporte hardware es la c´amara Kinect, cuyas caracter´ısticas se detallan en la secci´on 2.1. Por otro lado, el soporte software del que se ha hecho uso es el descrito en la secci´on 2.2. 2.1. C´amara Kinect Como se ha comentado anteriormente, el sensor de profundidad utilizado es la Kinect de Microsoft. Se escogi´o este, debido a lo extendido que est´a su uso y que existe una comunidad activa desarrollando nuevas aplicaciones que hacen uso del mismo. A su vez, la principal raz´on por la que se decidi´o emplear este tipo de c´amaras, que detectan la profundidad y el color es que se puede hacer uso de la informaci´on de profundidad, la cual no es tan sensible a los cambios de iluminaci´on, pudiendo operar incluso en ambientes oscuros. De depender s´olo de im´agenes RGB se tendr´ıan dificultades en ciertos entornos en la que la iluminaci´on no es suficiente para obtener datos fiables. Como se puede apreciar en la figura 2.1, el dispositivo tiene una c´amara RGB, un sensor de profundidad y un micr´ofono multi-array bidireccional que, en conjunto, capturan im´agenes y movimientos de los cuerpos en 3D, adem´as de ofrecer reconocimiento facial y comandos de voz. Tal y como se detalla en [Mathe et al., 2012], el sensor de Kinect obtiene im´agenes de video mediante un sensor CMOS de color a una frecuencia de 30 Hz con formato RGB de 32 bits y una resoluci´on VGA de 640x480 p´ıxeles. El canal de video monocromo CMOS es de 16 bits con una resoluci´on QVGA 7
Figura 2.1: C´amara Kinect de Microsoft. Imagen tomada de [Wikipedia, 2010]. de 320x240 p´ıxeles y hasta 65.536 niveles de sensibilidad. Para poder calcular la distancia entre un cuerpo y el sensor, se emite un haz l´aser infrarrojo que proyecta un patr´on de puntos sobre los cuerpos cuya distancia quiere ser determinada. Una c´amara infrarroja capta este patr´on y, mediante hardware, calcula la profundidad de cada punto. El rango de profundidad del sensor est´a entre 0,4 y 4 metros. Figura 2.2: Rango de visi´on de la c´amara Kinect. [Kinect for Windows, 2012] El ´angulo de visi´on (FOV) es de 58ohorizontales y 45overticales. Por otro lado, la c´amara dispone de un pivote que permite orientar en elevaci´on, hacia arriba o hacia abajo incrementando por tanto del FOV hasta en 27o. 8
Sin embargo, las caracter´ısticas oficiales del sensor, tal y como se muestra en la figura 2.2 corresponden a los valores ´optimos de visi´on seg´un el fabricante. Durante el desarrollo de este proyecto, Microsoft lanz´o al mercado una nueva versi´on de la c´amara Kinect, la Kinect para Xbox One. A pesar de emplear una tecnolog´ıa similar al anterior sensor ofreciendo, entre otros aspectos, una mayor resoluci´on de imagen, no se plante´o utilizarla debido a la fase en la que encontraba el proyecto. 2.2. Software utilizado Teniendo en cuenta el ´area en el que se enmarca este proyecto, es necesario hacer uso de bibliotecas de software que faciliten el tratamiento de im´agenes. Se ha decidido emplear la biblioteca OpenCV (Open Computer Vision, [OpenCV, 2015]) la cual se describir´a con m´as detalle en la secci´on 2.2.1, para el manejo de los datos de entrada, es decir, las im´agenes RGB y de profundidad. Con el fin de asemejar las im´agenes obtenidas al mundo real se hace uso de la biblioteca PCL (Point Cloud Library) [PCL, 2011d], la cual, seg´un se ampliar´a en la secci´on 2.2.2, representa las im´agenes como nubes de puntos tridimensionales, algo muy ´util a la hora de fusionar informaci´on de color en dos dimensiones con informaci´on de profundidad. Finalmente, tras procesar los datos de entrada se obtienen valores num´ericos que caracterizan la identidad, por lo que se hace uso de la herramienta de software matem´atico MATLAB (MATrix LABoratory) para analizar los resultados de las comparaciones. Se detallar´a m´as sobre esta herramienta en la secci´on 2.2.3. 2.2.1. Biblioteca OpenCV OpenCV es una biblioteca de c´odigo libre de visi´on artificial que proporciona m´ultiples funciones para el tratamiento de im´agenes. Est´a escrita en c´odigo C y C++ y su c´odigo est´a muy optimizado aprovechando las caracter´ısticas de bajo nivel del lenguaje, lo cual le permite ofrecer un rendimiento suficiente para ser empleada en aplicaciones de tiempo real. 9
Figura 2.3: Logotipo de la biblioteca OpenCV. Se distribuye bajo licencia BSD por lo que es posible usarla con fines comerciales o de investigaci´on, dentro de los l´ımites de la misma. Esto ha propiciado que sea ampliamente utilizada en diferentes entornos como la vigilancia o los sistemas reconocedores de objetos. En el presente proyecto se han empleado una serie de funciones de OpenCV para realizar las operaciones necesarias sobre las im´agenes con el fin de detectar personas, seguirlas a lo largo de la trayectoria y la comparaci´on de los histogramas de color, aspectos del proyecto que se tratar´an m´as adelante. 2.2.2. Biblioteca PCL PCL es una biblioteca de relativamente reciente creaci´on, en relaci´on a la anteriormente mencionada. Se encuentra completamente escrita en C++ y en sus inicios apost´o por el aprovechamiento de los avances en los conjuntos de instrucciones de los procesadores. A su vez, ofrece soporte para OpenMP (Open Multi-Processing, [OpenMP, 2015]) e Intel R TBB (Intel R Threading Building Blocks, [Intel, 2015]) para explotar la paralelizaci´on en los procesadores con m´ultiples n´ucleos. Figura 2.4: Logotipo de la biblioteca Point Cloud Library. La creaci´on de esta biblioteca fue motivada por la bajada de precios de los sensores 3D como la c´amara Kinect. Esta prove´ıa informaci´on de una escena tridimensional y era necesario establecer mecanismos para procesar 10
de manera eficiente las nubes de puntos [Bogdan Rusu and Cousins, 2013]. Se podr´ıa considerar que se trata de la evoluci´on del concepto de la biblioteca OpenCV la cual se emplea para el tratamiento de datos en dos dimensiones puesto que tienen en com´un m´ultiples funciones. En la aplicaci´on que se ha desarrollado se ha empleado esta biblioteca no s´olo por la idoneidad de la misma para el manejo de nubes de puntos, sino que adem´as, representa la informaci´on de una manera m´as cercana al concepto humano de una escena tridimensional. Es por ello por lo que resulta m´as sencillo tratar de resolver los diferentes problemas que se han abordado a lo largo del proyecto, tal y como veremos m´as adelante. 2.2.3. MATLAB MATLAB es un lenguaje de alto nivel dise˜nado para realizar c´alculos t´ecnicos. Integra el c´alculo, la visualizaci´on y la programaci´on en un entorno sencillo de utilizar donde los problemas y las soluciones se expresan con notaci´on matem´atica. Se trata de un sistema basado en int´erprete y orientado al desarrollo r´apido de prototipos que no precisa de declaraci´on o dimensionamiento previo de las variables, lo cual permite resolver muchos problemas matem´aticos de forma c´omoda, especialmente aquellos que involucren vectores y matrices. Figura 2.5: Logotipo de MATLAB. La principal ventaja de MATLAB es la disponibilidad de funciones de ´areas espec´ıficas llamadas toolboxes. Se trata de grupos de funciones y comandos que pueden emplearse para resolver problemas de diferentes ´ambitos como puede ser el procesamiento digital de se˜nales, los sistemas de control o las redes neuronales. 11
2.3. Entorno de desarrollo A la hora de desarrollar el sistema, se quiso optar por una soluci´on portable, con el fin de poder emplear diferentes equipos. Por otro lado, se decidi´o emplear un entorno de escritorio basado en Linux, ya que existe mayor documentaci´on de las bibliotecas que se iban a utilizar para esta plataforma. Por ello el desarrollo se llev´o a cabo en una m´aquina virtual, la cual se ejecutaba con VirtualBox [Oracle, 2003], en la que se instal´o el sistema operativo Ubuntu 12.04 LTS, el cual no se modific´o durante todo el desarrollo, una vez fueron instaladas las bibliotecas y se comprob´o su correcto funcionamiento. La ventaja que aportaba el uso de una m´aquina virtual es que era posible replicarla f´acilmente y por tanto se obten´ıa un entorno de trabajo estable. La m´aquina virtual se configur´o de manera que hiciera uso de dos procesadores y un m´aximo de 2048MB de memoria RAM. Cabe destacar que al ser PCL una biblioteca a´un en desarrollo, si es comparada con OpenCV, fue necesario hacer m´ultiples cambios ya que al seguir los pasos indicados en la gu´ıa de referencia de PCL, el funcionamiento de esta no era estable y se generaban errores de dependencias al ejecutar ciertas funciones b´asicas. Tras un an´alisis y b´usqueda de informaci´on, se descubri´o que la versi´on que se estaba usando no dispon´ıa de un fichero pcl-geometry.pc el cual era indispensable para ejecutar ciertos m´etodos. Por otro lado, tambi´en fue necesario realizar modificaciones en el fichero flann.pc, el cual tambi´en est´a incorporado en la biblioteca OpenCV, sin embargo, ambos son diferentes y PCL no es capaz de funcionar correctamente haciendo uso del que proporciona OpenCV, por ello se edit´o este fichero con el fin de asegurar que se use la versi´on de PCL. A su vez se emple´o un sistema de control de versiones para almacenar y poder trabajar desde las diferentes m´aquinas virtuales que se encontraban en diferentes equipos. Se decidi´o usar el sistema Git [Git, 2008], ya que ya hab´ıa trabajado anteriormente con dicho sistema y el repositorio se almacen´o en Bitbucket, similar a otros como Github, sin embargo, este permite tener repositorios privados en cuentas gratuitas y adem´as permite grupos gratuitos de hasta 5 usuarios. 12
Cap´ıtulo 3 Planificaci´on 3.1. Metodolog´ıa Para el desarrollo del proyecto desde el punto de vista de la ingenier´ıa del software se decidi´o usar una metodolog´ıa evolutiva en espiral tal y como se define en [Boehm, 1988]. Esta metodolog´ıa es la que se consider´o la m´as indicada para desarrollar el sistema ya que, en cada iteraci´on, iba evolucionando para ir adquiriendo nuevas funcionalidades. Tras cada iteraci´on, se analizaban los objetivos a realizar en la siguiente, en base a los resultados que se obten´ıan tras finalizar la anterior. A su vez, conforme se iba avanzando cada iteraci´on fue necesario ir revisando los objetivos o los m´etodos para llevarlos a cabo, lo cual implicaba una fase de b´usqueda dentro de cada iteraci´on. Por ello esta metodolog´ıa se adaptaba a las necesidades del proyecto. 3.2. Temporizaci´on Tal y como se ha indicado anteriormente, este proyecto se compone de diferentes partes. Para la realizaci´on del mismo se ha tenido que dedicar una cantidad de tiempo determinada a cada uno de los componentes que forman el proyecto. En la figura 3.1 se puede apreciar el tiempo que se ha dedicado de manera global a cada una de las fases, destacando la etapa del desarrollo del sistema, la cual requiri´o el 51 % del tiempo total del proyecto. Cabe destacar que si bien representa una gran parte, tal y como se indica en la secci´on 5, durante el desarrollo fue necesario realizar b´usquedas bibliogr´aficas con el fin de ir 13
Tipo de prenda de las piernas y color Presencia de mochila Presencia de bolso Presencia de algo en las manos Tipo de zapatos Indicaci´on de entrada o salida de la habitaci´on Primer y ´ultimo fotograma del individuo Localizaci´on aproximada de la cabeza La extracci´on de tanta informaci´on se debe a que pueda reutilizarse para otros prop´ositos, por lo que optaron por definir la mayor cantidad de informaci´on posible al etiquetar las im´agenes. A su vez, la librer´ıa incluye un visor para mostrar las caracter´ısticas mencionadas anteriormente junto con el fotograma correspondiente. En la figura 4.2 se muestra un ejemplo de lo que muestra el visor. (a) Fotograma resaltando el individuo etiquetado. (b) Datos definidos para el individuo. Figura 4.2: Ejemplo del visor mostrando los datos etiquetados para una persona. Una vez obtenidos los datos sobre la identidad, que es de la que se har´a uso en este proyecto, se dispone de la informaci´on necesaria para, en etapas posteriores, comparar los resultados obtenidos por el sistema de reidentificaci´on con la realidad, obteniendo as´ı una comparaci´on coherente con 20
la identidad real de la persona. Tal y como se analizar´a con m´as detalle en el apartado 5.8, ser´a necesario realizar un segundo etiquetado de los datos que manejar´a el sistema para poder hacer la comparaci´on. 4.3. Calibraci´on Desafortunadamente, las im´agenes que se obtienen de la c´amara Kinect no tienen el mismo tama˜no. El sensor de profundidad proporciona datos sobre un ´area menor que el ´area de la imagen de color. Por ello, es necesario centrar las im´agenes para que al seleccionar un p´ıxel en ambas im´agenes, ´este se corresponda con la misma posici´on en ambas. Las im´agenes con las que se ha trabajado para realizar este proyecto ya estaban calibradas puesto que quienes facilitaron las im´agenes conoc´ıan esta caracter´ıstica de los datos obtenidos, por lo que no fue necesario calcular, y luego corregir la diferencia. Puesto que las im´agenes de profundidad son menores en tama˜no, el ´area de detecci´on se ve reducida, ya que es un requisito tener los datos de color y profundidad para poder realizar la re-identificaci´on. Debido a esto, existe una peque˜na zona en la que se desprecian los datos de color al no existir correspondencia en la imagen de profundidad. En la secci´on 5.1, se tratar´a tambi´en la calibraci´on de la c´amara, ya que al tener datos de profundidad, no disponemos de posiciones absolutas en la escena que discurre ante la c´amara. Por ello, en el proceso de conversi´on de los datos de color y profundidad a una nube de puntos que s´ı representa una escena 3D, ser´a necesario aplicar una matriz de calibraci´on que permita pasar a coordenadas en un espacio 3D, el valor de la profundidad junto con las coordenadas X e Y en la imagen 2D. 21
22
Cap´ıtulo 5 Desarrollo e implementaci´on En este cap´ıtulo se tratar´an los aspectos del desarrollo y la implementaci´on del sistema. Se ha decidido separar el cap´ıtulo en las tareas o fases que pueden considerarse independientes entre s´ı, lo cual permite entender en l´ıneas generales los pasos que se han seguido para obtener un reconocedor funcional. A su vez, tal y como se detallar´a en el apartado 5.5.3, se expondr´an algunas funcionalidades interesantes que fueron desarrolladas y operan correctamente pero que finalmente no se incluyeron en la versi´on final debido a que lo que aportaban a la mejora de la tasa de acierto no era significativo, teniendo en cuenta, principalmente, su complejidad computacional. En la figura 5.1 se muestran las diferentes fases que forman el sistema. A lo largo de este cap´ıtulo se ir´a detallando el funcionamiento de cada uno de ellas seg´un el orden en el que se ejecutan, el cual coincide con el de la figura 5.1. Figura 5.1: Fases que componen el sistema. 23
5.1. Generaci´on de nube de puntos A lo largo del desarrollo del sistema, la conversi´on de los datos a una nube de puntos se ha hecho en diferentes etapas, con el fin de hacer uso de la potencia de la biblioteca PCL a la hora de tratar los datos. Puesto que se nombrar´a en diferentes secciones, se explicar´a en primer lugar en qu´e consiste el proceso de generar una nube de puntos a partir de la imagen de profundidad y la de color, proporcionadas por el sensor. La t´ecnica aplicada se basa en lo expuesto en [ROS, 2014] y [PCL, 2014] para obtener la transformaci´on que se ha de realizar para ajustar los datos de profundidad para cada punto X e Y a una escena en 3D. Esto se obtiene partiendo de la longitud focal del sensor y de su matriz de proyecci´on, habiendo usado los valores que se proponen, los cuales dan buenos resultados. Tal y como se propone en [PCL, 2014], se debe calcular un nuevo valor de X e Y para cada punto, por lo que se desplaza cada punto de profundidad junto con los datos de color a las coordenadas transformadas con el fin de que se corresponda con la escena en 3D. Por lo tanto, para un punto Pen RGBD obtenemos el equivalente P0en PCL de la siguiente manera: P0 X= (PX−M(0,2)) ∗PD∗FIX P0 Y= (PY−M(1,2)) ∗PD∗FIY P0 Z=PD (5.1) siendo PXyPYlas componentes XeYdel punto RGBD, Mla matriz de calibraci´on del sensor, PDla profundidad en el punto RGBD y FIXyFIY las longitudes focales inversas en cada componente del sensor. El primer paso es instanciar una nueva nube de puntos que ser´a del tama˜no de la imagen de profundidad, por lo que en primer lugar se declaran sus dimensiones y se define su tama˜no en base a ellas. A continuaci´on se recorre la estructura tratando de asignar los valores correspondientes a las componentes de color RGB y las coordenadas XYZ, empleando la transformaci´on descrita en 5.1. La ausencia de datos se se˜nalar´a mediante la instrucci´on std::numeric limits<float>::quiet NaN(), la cual establecer´a dicho punto con un valor nulo. Una vez realizada esta operaci´on para todos los puntos, se volver´an a reafirmar las dimensiones de la nube para poder acceder a sus datos como si fuera una matriz de dos dimensiones. 24
5.2. Detecci´on de personas Una de las primeras etapas a la hora de desarrollar el sistema es la detecci´on de las personas. Esto se debe a que no siempre estar´an pasando personas bajo el sensor, por lo que se pueden obviar todos los datos relacionados con im´agenes en las que no aparecen personas. Por ello, en primer lugar, partiendo de las im´agenes de profundidad y mediante el uso de la biblioteca OpenCV, se debe detectar e identificar el fondo de la escena, tal y como se explicar´a a continuaci´on. Seguidamente, en el apartado 5.2.2 se detallar´a el proceso por el cual se logra separar a las personas, eliminando el fondo. 5.2.1. Identificaci´on del fondo Figura 5.2: Captura de la escena que representa el fondo que debe ser eliminado. Tal y como se ha indicado, el primer paso para detectar las personas en el sistema es identificar el escenario que aparece en las capturas como el de la figura 5.2. Partiendo del hecho que la c´amara no se mueve ni se inclina una vez iniciada la grabaci´on, hay partes de la escena que son est´aticas, como pueden ser el suelo, las paredes u otros objetos, que deben ser ignorados, ya que a priori conocemos que no son personas y por lo general no tienden a moverse. Esto puede conseguirse aplicando una sustracci´on de fondo a todas las im´agenes, para lo cual es necesario establecer lo que se considera el fondo 25
o suelo. Figura 5.3: Resultados de la detecci´on de planos empleando la biblioteca PCL. Una primera aproximaci´on para resolver este problema fue aprovechar la potencia de la biblioteca PCL, trabajando directamente con una nube de puntos obtenida del primer fotograma que se graba, en el que no debe haber nadie. Se pretend´ıa unificar la detecci´on de fondo con la eliminaci´on, buscando los planos en la nube de puntos, es decir, las superficies que forman planos. El suelo es liso, por lo que en la escena 3D formar´a un plano, al igual que las posibles paredes, puertas u objetos inm´oviles. Esto se hizo empleando los m´etodos disponibles en la biblioteca de b´usqueda de planos a partir de puntos. La figura 5.3 muestra los resultados obtenidos. Como se observa, se han detectado correctamente los planos correspondientes a las puertas, se˜nalados en color azul y malva. Sin embargo, la detecci´on de planos no es capaz de reconocer el que forma la superficie del suelo, salvo algunas ´areas. Esto se debe a la irregularidad del suelo, consecuencia del ruido que proviene del sensor, algo que no es posible solucionar, por lo que se opt´o por buscar otra v´ıa. Se decidi´o emplear el m´etodo de modelado del fondo indicado en [Lorenzo Navarro et al., 2013b] en el que el fondo se calcula a partir de los fotogramas iniciales. La nube de puntos del fondo ¯pc, se calcula mediante el promedio de las kprimeras nubes de puntos como: 26
Figura 5.4: Nube de puntos con ruido que representa el modelo del fondo detectado. ¯pc(i, j) = Pk l=1 pcl(i, j) k donde pcl(i, j) son las coordenadas (x, y, z) asociadas al p´ıxel (i, j) de las nubes de puntos empleadas para modelar el fondo. Por supuesto, durante el proceso de modelado del fondo no debe haber tr´ansito de personas bajo el ´area del sensor ya que, de lo contrario, el fondo se detectar´ıa de forma err´onea, debido a las irregularidades que se formar´ıan (picos de profundidad en el suelo que deber´ıa ser liso). Finalmente tras este proceso se obtiene el modelo de la figura 5.4. Durante el procesamiento de diferentes grupos de im´agenes, capturadas en diferentes d´ıas, se puede apreciar el comportamiento del sistema cuando se produce un cambio inesperado en el fondo detectado. En el caso expuesto en la figura 5.5, se realiz´o de forma correcta la detecci´on del fondo, en el que hab´ıa una puerta cerrada. Sin embargo, alguien procede a abrir la puerta, con el fin de que pasen personas, lo cual desencadena un fallo en el sistema de detecci´on, ya que considerar´a que la puerta es una persona. Este tipo de fallos pueden ser solucionados empleando el sistema de detecci´on de cabezas del proyecto [Quesada D´ıaz, 2015]. Finalmente, tras el proceso se obtiene una matriz del tama˜no de la imagen de profundidad que representa el fondo, de manera que en pasos posteriores podamos compararla con las im´agenes en las que aparecen personas. 27
Figura 5.5: Fondo modificado al abrir una puerta en un momento posterior al modelado. 5.2.2. Sustracci´on del fondo Tal y como se ha explicado anteriormente, debemos diferenciar en las im´agenes de entrada la parte que se considera que es el suelo, de las personas. Para ello se realizar´a una comparaci´on, basada en realizar una sustracci´on del fondo de la imagen de profundidad. En primer lugar se intent´o aprovechar los m´etodos existentes en la biblioteca PCL con el fin de eliminar los elementos est´aticos. Para ello se us´o la funci´on getPointCloudDifference, la cual, para dos nubes de puntos devuelve otra que contiene s´olo las diferencias entre las dos primeras. Sin embargo, al ejecutarlo no se produc´ıan cambios en la nube resultante, es decir, no se realizaba la eliminaci´on del fondo y se observ´o que computacionalmente, el proceso era bastante costoso, ya que se empleaban ´arboles de b´usqueda para realizar dicha operaci´on. Tras examinar en detalle la biblioteca, se lleg´o a la conclusi´on que no era posible usar dicho m´etodo ya que, la nube de puntos generada a partir de una conversi´on desde la imagen de entrada no era compatible con la nube que se gener´o a partir de la imagen de fondo. Esto se debe a la organizaci´on interna de los datos de la nube, que se realiza en base a los datos que almacena, perdiendo la informaci´on de la posici´on X e Y de los puntos. Al tener cada punto una posici´on relativa a la nube, puesto que las dos nubes no provienen de las mismas fuentes, resultan datos de posici´on diferentes, de ah´ı que el m´etodo sea incapaz de encontrar puntos en com´un. A esto hay que sumar el hecho que los datos de profundidad son muy ruidosos y pueden no coincidir siempre en ambas nubes. 28
Tras el intento de emplear funciones de PCL para realizar la sustracci´on de fondo, se decidi´o emplear el m´etodo de sustracci´on de fondo propuesto en [Lorenzo Navarro et al., 2013b] el cual se basa en el concepto que los puntos m´as cercanos tendr´an una componente zmayor. Por tanto, se considera que un p´ıxel no forma parte del fondo si la diferencia de la distancia con el mismo p´ıxel del fondo es mayor a un umbral. La imagen que representar´a el primer plano se calcula partiendo de un umbral de distancia aplicado al valor del modelo del fondo (x, y, z), tomando como p´ıxeles del primer plano aquellos cuya diferencia en la componente zde la nube actual con el modelo del fondo sea mayor que un umbral que est´a establecido en 10 cent´ımetros. Para un p´ıxel, en una nube de puntos pc(i, j), su correspondiente p´ıxel en la imagen del primer plano, fg, se calcula de la siguiente manera: fg(i, j) = pc(i, j) si pc(i, j)> bg(i, j) + τ 0 en otro caso De esta manera, tras finalizar este proceso obtendremos la nueva matriz con la parte de la escena de inter´es para realizar la posterior segmentaci´on de los individuos, tal y como se explicar´a en la secci´on 5.3. 5.3. Segmentaci´on de individuos Una vez se ha eliminado la informaci´on irrelevante, en este caso, el fondo, nos queda s´olo la parte que nos interesa, es decir, las personas u objetos que pasan por el campo de visi´on del sensor. Si bien era posible empezar con la segmentaci´on directamente desde las im´agenes obtenidas, se intent´o aplicar una etapa de filtrado previa. Esto se debe a que el sensor introduce mucho ruido, por lo que se obtienen m´ultiples valores esp´ureos o puntos que no ten´ıan informaci´on de color. Puesto que estos valores s´olo pod´ıan detectarse al combinar la informaci´on de profundidad y la de color, al formar la nube de puntos se decidi´o posponer la aplicaci´on de filtros a una etapa en la que se tuviera la nube de puntos. El proceso de filtrado que se sigui´o puede verse en detalle en la secci´on 5.1. El siguiente paso en el proceso consiste en separar las diferentes personas que pueden aparecer en una misma captura. Para ello, se empez´o por buscar m´etodos en la biblioteca PCL, y se encontr´o en la documentaci´on un sistema de extracci´on de grupos que se implement´o, partiendo de [PCL, 2015a]. El proceso resultante, denominado extracci´on de grupos eucl´ıdeo se resume en 29
Un contador del n´umero de nubes parciales. El tama˜no del ´area que ocupa. Un n´umero identificativo. N´otese que con ´ultima aparici´on nos referimos a la ´ultima vez que aparec´ıa el sujeto con respecto a la trayectoria que estaba siguiendo. Esto es necesario para ir eliminando de memoria las personas que ya han cruzado la zona y han salido del ´area de detecci´on. Para seguir la trayectoria de cada persona y asignar la nube parcial a la persona correcta, se parte de la m´ascara de profundidad creada en la fase de segmentaci´on. Lo que se har´a para determinar las siguientes nubes parciales de una persona que va avanzando es buscar intersecciones entre la m´ascara actual con la ´ultima m´ascara de todas las personas que se tienen en memoria, y se considera que a´un est´an en la imagen. En el algoritmo 2 se describe en l´ıneas generales el proceso para realizar el seguimiento de las personas en cada fotograma. Algoritmo 2 Seguimiento de la trayectoria de una persona si lista no est´a vac´ıa entonces Verificar si hay personas que salieron fin si para todo personas segmentadas hacer si lista vac´ıa entonces Crear nueva persona con datos actuales si no para todo personas de la lista hacer si ´area de intersecci´on entre persona de la lista y la segmentada es mayor que el umbral entonces Actualizar m´ascara de la lista con la nueva y actualizar contadores fin si fin para si no se ha actualizado ninguna persona de la lista entonces Crear nueva persona fin si fin si fin para Al finalizar este proceso se obtienen todas las nubes parciales de los sujetos organizadas en carpetas. Aparte de las nubes parciales, tambi´en se almacena 36
en cada carpeta un fichero de texto con las rutas a cada una de las nubes parciales de la persona y, a su vez, se almacena en un fichero de texto las rutas a cada uno de estos ficheros. De esta manera tenemos un fichero para poder acceder a los datos de cada persona, y de cada persona tenemos un fichero para acceder a sus nubes. As´ı, para la siguiente fase, la extracci´on de las caracter´ısticas de cada individuo, tan solo tenemos que indicar la ruta del fichero que almacena las rutas al fichero donde se encuentra la informaci´on de todas las personas que se han segmentado. Figura 5.9: Ejemplo en el que se muestra el correcto seguimiento de las personas. Durante las pruebas del m´odulo de seguimiento se detect´o que, en ciertas ocasiones, pod´ıa ocurrir que se perdiera la trayectoria de la persona cuando se encuentra a mitad de su paso bajo el sensor, debido a que el ´area que forma la intersecci´on no supera el umbral. Se averigu´o que ocurr´ıa principalmente en momentos en los que discurr´ıan muchas personas a la vez o si coincid´ıa que la persona avanzaba m´as r´apido de lo esperado en momentos en los que la tasa de im´agenes por segundo ca´ıa, por lo que la distancia que camin´o 37
la persona entre una imagen y otra es muy grande como para obtener un ´area de intersecci´on. Por tanto, al no ser capaz de asignarle esa nube a ninguna persona existente, el sistema considera que es una nueva persona. En la figura 5.7, podemos observar c´omo una persona es detectada como una nueva, al estar marcado el identificador de persona en azul, cuando existen im´agenes previas de esa persona. En este caso, conocemos que una persona no aparece en la zona central espont´aneamente, sino que debe pasar primero por los bordes de detecci´on, por lo que llegamos a la conclusi´on que no es una persona nueva, sino una que se encuentra ya en la imagen. Habr´ıa pues que reconsiderar el m´etodo empleado para seguir las personas con el fin de contemplar estos casos, provocados principalmente por los datos de entrada, sin embargo se decidi´o continuar sin solucionarlo y plantearlo como una posible mejora ya que no compromet´ıa el objetivo principal de re-identificar personas. Como se ha indicado, con este paso obtenemos la informaci´on organizada y separada a partir de la que se tendr´a que extraer las caracter´ısticas. Esto se ha hecho as´ı ya que el sistema debe ser capaz de funcionar como m´ınimo con dos fuentes de entrada, es decir, necesita de dos conjuntos de datos para poder comparar. Al separar el sistema en diferentes aplicaciones independientes se puede lograr tener un proceso en ejecuci´on para cada fuente de datos, que adem´as pueden ejecutarse en diferentes m´aquinas, para un procesamiento posterior en la misma u otra m´aquina. Esto es importante debido al elevado coste computacional que tienen por lo general los sistemas que manejan gran cantidad de datos, ya que hay que tener en cuenta que este sistema maneja f´acilmente varios Gigabytes de informaci´on para grabaciones de pocos minutos. A la hora de analizar el funcionamiento de la segmentaci´on de personas se observ´o que, tal y como se aprecia en la figura 5.10, en m´ultiples ocasiones, las personas se juntaban para poder pasar por la puerta a la vez. Este caso no estaba contemplado, form´andose un conjunto solapado conteniendo personas previamente segmentadas, lo cual derivaba en un fallo de detecci´on, ya que adem´as, al separarse, s´olo se asignaban las im´agenes a una de las personas y el resto se detectaban como nuevos individuos. Esto se denomin´o la fusi´on de varios sujetos durante el paso bajo el sensor y se consider´o algo imperativo como m´ınimo detectar estos casos, ya que aportar´ıa informaci´on err´onea. Con el fin de detectar los casos en los que dos o m´as personas se fusionaban, es decir, se juntaban tanto como para formar un solo blob en 38
Figura 5.10: Ejemplo en el que se muestra el momento en el que varias personas se juntan para poder pasar y se detectar´a como una fusi´on. la imagen, se decidi´o primero observar las im´agenes capturadas con el fin de analizar c´omo ocurr´ıan estos casos e intentar encontrar alg´un patr´on. Tras observar detenidamente las im´agenes, se lleg´o a la conclusi´on de que, al producirse una fusi´on, el ´area del blob crec´ıa, y en ocasiones llegaba a ser mucho mayor que el doble que en la captura anterior. Por tanto, se tom´o como medio de detecci´on de la fusi´on de personas el ´area que ocupa cada persona en base a la m´ascara anterior. Es decir, al buscar intersecciones del blob actual con las personas que est´an en memoria, se compara el ´area ocupada por la persona en el fotograma anterior con el actual para, en el caso de haber aumentado al doble o m´as de su tama˜no anterior, ser considerado como una fusi´on, y tratar este caso aparte. Con esto se logr´o detectar todas las fusiones, sin embargo, se produc´ıan falsos positivos en los extremos de las im´agenes cuando, al entrar una persona s´olo se encuentra en el rango de la c´amara el pie o una peque˜na parte de la pierna. En estos casos, en la siguiente imagen, al pasar a verse el resto del cuerpo, se produce un aumento del ´area que ocupa la persona, detect´andose como una fusi´on. Con el fin de evitar estos casos que se produc´ıan con mucha frecuencia se decidi´o incorporar una condici´on adicional al considerar como fusiones s´olo la uni´on de dos o m´as personas que 39
en una imagen anterior estaban bien definidas. Si bien esto podr´ıa implicar una limitaci´on a la hora de detectar fusiones, hemos de tener en cuenta que en los extremos no se tendr´ıa informaci´on suficiente sobre las personas de forma individual como para garantizar una correcta detecci´on y extracci´on de la informaci´on. A su vez, tal y como se comentar´a m´as adelante, las nubes de los extremos no contienen tanta informaci´on ´util como el resto. Una vez detectados los casos en los que se producen fusiones de personas, es necesario distinguirlas y seguirlas individualmente para que, una vez separadas, la detecci´on y el seguimiento continue normalmente, de manera que no se produzca un fallo de detecci´on al separarse y las personas no se asignen correctamente a las mismas antes de producirse esta situaci´on. Con el fin de separar las m´ultiples personas que pueden encontrarse en un blob grande se analiz´o la situaci´on que produc´ıa este caso. Antes de una fusi´on existen como m´ınimo dos personas que ya han sido detectadas y segmentadas. Por tanto, al producirse una fusi´on, el ´area deber´ıa poder solaparse con todas las personas que se han juntado del fotograma anterior. Esto llev´o a implementar, antes de seguir a las personas en los casos de fusi´on, una detecci´on de falsos positivos ya que, de detectar una fusi´on debido a un aumento s´ubito del ´area que ocupa una persona, si en dicha ´area s´olo puede solaparse con una persona de las que aparecen en el fotograma anterior, implica que no se trata de una fusi´on, tal y como se ha definido, por lo que se tratar´a como un caso normal. Aprovechando esta comprobaci´on, se decidi´o emplear este mismo m´etodo para seguir las personas en blobs fusionados. Sin embargo, al contrario que en el caso anterior, en vez de almacenar como m´ascara del fotograma anterior el blob completo fusionado, se almacena s´olo el ´area que intersecta entre el blob fusionado y el fotograma anterior. Por un lado esto limita el seguimiento, ya que se dispondr´a de un ´area menor para realizar el siguiente solape, pero es necesario para garantizar que no existen correspondencias con el ´area ocupada por otras personas, debido a no poder discernir en el ´area ocupada por las personas, que parte le corresponde a cada una, es decir, subdividir el blob en blobs individuales. Si bien con el m´etodo expuesto se logr´o realizar el correcto seguimiento de las personas a´un produci´endose fusiones, se lleg´o a la conclusi´on que de las nubes parciales en las que hab´ıan varias personas juntas no se podr´ıan extraer caracter´ısticas debido a no ser capaz el sistema de separarlas. Se realiz´o una b´usqueda con el fin de encontrar m´etodos que pudieran ser a˜nadidos al mismo y mejorar la segmentaci´on en estos casos. Existe un proyecto de 40
fin de carrera, [Quesada D´ıaz, 2015], en el que se detectan las cabezas y de esa manera se pod´ıa asegurar el n´umero de personas que hab´ıa en una imagen, sin embargo, a´un estaba en desarrollo durante la realizaci´on de este proyecto y requer´ıa cambiar m´ultiples partes de las fases anteriores, por lo que se descart´o. Por otro lado, se encontr´o un art´ıculo, [Zhang et al., 2012], en el que se planteaba un m´etodo para resolver segmentaciones basado en el planteamiento del algoritmo Watershed [Roerdink and Meijster, 2001] de manera no supervisada y de forma m´as eficiente, mediante la simulaci´on de inundaci´on del ´area y analizando las zonas en las que se acumular´ıa agua. Se decidi´o, debido a que por lo general se obtiene informaci´on previa o posterior de las personas fusionadas, no implementar ning´un tipo de segmentaci´on para blobs fusionados, al valorar la complejidad de resolverlo en comparaci´on a la mejora que se obtendr´ıa. Finalmente, las nubes parciales resultantes de fusiones se almacenar´an como si fuera un nuevo individuo, sabiendo que est´a compuesto por m´ultiples personas, ya que ocurren casos en los que se produce una identificaci´on correcta de una de las personas que se encuentra en uno de estos conjuntos. Por otro lado, estas nubes que representan los sujetos fusionados no se asignar´an a las personas que han sido segmentadas correctamente, con el fin de tener la informaci´on con el menor ruido o elementos que puedan interferir a la hora de extraer las caracter´ısticas. En el siguiente apartado se tratar´an en detalle los aspectos que se han tenido en cuenta a la hora de determinar lo que caracterizar´a a una persona en el sistema, partiendo de las nubes parciales que han sido obtenidas, las cuales, se recuerda, se han volcado en disco mediante una estructura organizada en carpetas. 5.5. Caracterizaci´on de la identidad En esta secci´on se explicar´an las diferentes aproximaciones al problema de caracterizar la identidad de un individuo con la informaci´on obtenida en las fases anteriores. En este punto conviene recordar que se dispone de m´ultiples nubes parciales para cada persona que camina bajo el sensor, pudiendo pasar varias veces la misma persona y siendo detectada como personas diferentes cada vez ya que en las fases anteriores no existe ning´un m´etodo de identificaci´on, s´olo se realiza un seguimiento de las trayectorias. Tal y como se ha visto en la secci´on 1.2.2, existen m´ultiples maneras 41
para caracterizar la identidad de una persona, y por tanto, ser capaz de reconocerla. A d´ıa de hoy ya existen m´ultiples sistemas que emplean este tipo de informaci´on para realizar una identificaci´on, tal y como se ha mostrado en la secci´on 1.3. Sin embargo, para este proyecto se decidi´o imponer una restricci´on importante con respecto a dichos sistemas, no se podr´a captar la parte frontal un individuo, por lo que no se dispondr´a de la imagen de la cara de las personas con el fin de preservar su intimidad y evitar, en la medida de lo posible almacenar informaci´on sensible. A continuaci´on se detallar´an las diferentes caracter´ısticas de una persona que se extrajeron de las nubes de puntos, si bien, tal y como se comentar´a m´as adelante, no todas se incluyeron en el sistema final. 5.5.1. Caracter´ısticas f´ısicas Las personas por lo general se diferencian unas de otras por sus rasgos o caracter´ısticas f´ısicas. Como se ha indicado en el apartado anterior, no se dispone de la informaci´on de la cara de los individuos, por lo que se han de extraer otro tipo de caracter´ısticas. Partiendo de lo expuesto en [Lorenzo Navarro et al., 2013a] se pueden considerar los datos como altura, el ´area, el volumen proyectado o la velocidad como caracter´ısticas f´ısicas de la persona que pueden ser de utilidad a la hora de distinguirla. Si bien se expondr´an de forma independiente las caracter´ısticas extra´ıdas, muchas de ellas se extraen de forma conjunta al analizar las nubes parciales, siendo algunas medidas procesadas despu´es para tener en cuenta todos los valores obtenidos y dar un resultado m´as fiable. Altura En primer lugar se intent´o extraer la informaci´on sobre la altura de la persona ya que, en comparaci´on con otras caracter´ısticas, puede considerarse como la m´as b´asica y que debe incorporarse obligatoriamente. Adem´as de caracterizar la identidad, es un indicador que permite descartar personas que tengan una diferencia de altura muy grande puesto que, por lo general, una persona no sufre cambios muy apreciables en la altura, si no tenemos en cuenta posibles cambios en el calzado o en el peinado. Puesto que partimos, para cada persona, de m´ultiples nubes parciales, disponemos de muchas alturas diferentes para un mismo individuo que sabemos a priori que es el mismo. Esto se debe, como se aprecia en la figura 5.11, al rango de visi´on de la c´amara ya que, en los extremos, que est´an 42
Figura 5.11: Todas las nubes parciales que representan a una persona, cada una en un color. representadas como las primeras y las ´ultimas nubes de la persona, entre otras, no suele aparecer la cabeza ya que al entrar y al salir la persona del rango de detecci´on, s´olo se aprecian sus pies y piernas. Por tanto, estas nubes no son representativas de la altura de la persona. Para resolver este problema se plante´o ir recorriendo todas las nubes disponibles sobre la persona e ir obteniendo la altura a partir del punto m´as alto que corresponde a la persona, e ir guardando las tres medidas mayores con el fin de poder realizar un promedio. Tras realizar esta operaci´on, los resultados obtenidos no eran los esperados, ya que se obten´ıan alturas mayores a dos metros y medio, por lo que eran err´oneas al no corresponder esta altura a ninguna de las personas que figuran en las im´agenes. Se decidi´o pues, analizar en profundidad los datos de la nube de puntos realizando un histograma de las alturas de cada punto para valores de altura comprendidos entre 300 y 3000 mil´ımetros, obteniendo los resultados que pueden verse en la figura 5.12. A su vez, esto sirvi´o para analizar las zonas del cuerpo que eran m´as visibles para el sensor en base a la posici´on del individuo. Por ejemplo, para la figura 5.12(a) tenemos el histograma de altura cuando el individuo se encuentra cerca del extremo del rango de detecci´on el cual nos indica que hay un elevado n´umero de puntos para parte de la cabeza, el torso y las piernas, teniendo menos informaci´on sobre el pelo. Por otro lado, la figura 5.12(b), representando un individuo bajo el sensor, nos revela que hay mucha informaci´on sobre el pelo y los hombros, teniendo mucha menos informaci´on del torso y las piernas en comparaci´on 43
con el caso anterior. (a) Histograma de profundidad de persona cerca del extremo de detecci´on del sensor. (b) Histograma de profundidad de persona bajo el sensor. Figura 5.12: Histogramas de la profundidad a la que se encuentran los puntos. Analizando los resultados del histograma de alturas se observ´o que segu´ıan apareciendo valores esp´ureos con alturas que no se corresponden con la altura de la persona. Para poder obtener un valor fiable de la altura se decidi´o realizar un histograma de alturas para cada nube parcial, lo cual permite obtener una representaci´on de las diferentes alturas que aparecen en la nube. Se observ´o que los valores esp´ureos son valores aislados, y aunque a veces aparecen algunos con la misma altura, no tienden a haber muchos en una misma altura, o en alturas pr´oximas. Por otro lado, se observ´o que para alturas muy cercanas a la altura real de la persona exist´ıa una gran acumulaci´on de puntos, lo cual se corresponde con los puntos que representan la parte alta de la cabeza, que est´an aproximadamente a la misma 44
altura. Tras descubrir esta particularidad del problema, fue sencillo encontrar una soluci´on al mismo. Se opt´o por recorrer los histogramas, desde alturas mayores a menores, buscando acumulaciones de puntos, por lo que, de llegar a una altura determinada, se examinan las 20 menores posiciones del vector, las cuales representan un rango de 2 cent´ımetros, buscando acumulaciones de puntos. De encontrarse m´as de 20 puntos en dicho rango, se tomar´a esa como la altura de la persona en dicha nube parcial. Finalmente, tras obtener para cada nube parcial la altura, nos quedamos con las tres alturas mayores para luego realizar el promedio. Este promedio ser´a la altura que se considera que tiene la persona y se almacenar´a para, en pasos posteriores, recuperarla con el fin de realizar la re-identificaci´on. ´ Area Otra informaci´on que puede ser de inter´es es el ´area que ocupa la persona en la escena, ya que permitir´ıa distinguir entre personas m´as o menos voluminosas. Con el fin de obtener esta informaci´on se plantearon diferentes m´etodos. En primera instancia se intent´o contar el n´umero de puntos de la persona para luego obtener el promedio, sin embargo, debido a que en cada imagen se puede disponer de una parte del cuerpo diferente a las que aparecen en otra im´agenes, sumado al hecho de que las nubes en los extremos de la trayectoria s´olo dan informaci´on de las piernas, no se consider´o como un buen m´etodo para obtener el ´area. Otra aproximaci´on fue limitar la selecci´on de puntos a la hora de considerarlos para calcular el ´area de solamente los puntos de la cabeza, por lo que se podr´ıa aproximar el ´area de esa zona. En este caso tenemos el mismo problema anterior con respecto a la acumulaci´on de los puntos para obtener una media, salvo por el hecho de que la cabeza no sufre tantos problemas derivados de las detecciones en los extremos y las oclusiones como en brazos y piernas. Tras analizar el ´area de la cabeza obtenida en diferentes casos de personas iguales se apreciaban diferencias elevadas. Por ello, se descart´o este m´etodo de obtenci´on del ´area. Finalmente, se opt´o por obtener un ´area menor, seleccionando la parte alta de la cabeza y calculando el ´area de dicha zona. A su vez, para ello se decidi´o no realizar un promedio, debido a las grandes diferencias que se encuentran entre distintas nubes, as´ı que se obtuvo el ´area ´unicamente de la nube parcial de cada persona en la que la altura de la misma sea mayor. Para elegir qu´e puntos tomar en consideraci´on se decidi´o contar aquellos que se 45
Figura 5.16: Resultado de generar el modelado de una persona a partir de m´ultiples nubes parciales. Desgraciadamente, el resultado que se obten´ıa no era satisfactorio ya que, en un principio no se obten´ıa ninguna malla y luego, tras ajustar los par´ametros de la funci´on, la imagen obtenida no era una representaci´on de la persona. Como se puede apreciar en la figura 5.16, se obtiene una figura similar a un busto, el cual esta unido a una gran superficie, por lo que no se genera una malla con s´olo la figura de la persona. Debido a lo expuesto, si bien el generar un modelo de una persona ser´ıa muy positivo y aportar´ıa bastante informaci´on ´util, debido a los problemas que se encontraron se decidi´o no incorporarlo al sistema final, aunque se mantiene como un m´odulo independiente que podr´ıa funcionar correctamente de tener im´agenes con menos ruido y si s´olo tenemos en cuenta el torso de la persona, el cual tiende a moverse menos que las extremidades en las im´agenes obtenidas. 5.6. Almacenamiento de las caracter´ısticas Anteriormente se han explicado las diferentes caracter´ısticas que se intentaron extraer de las personas, qued´andonos finalmente con los datos de la altura y el color de la persona, debido a lo poco ´util o los problemas que daban otras caracter´ısticas que se consideraron. Por tanto, se ha de extraer, 52
procesar y almacenar la informaci´on que describir´a a una persona de alguna manera. En primer lugar, tras obtener la altura y el ´area, se procede a realizar los histogramas de las nubes parciales cuya altura supera el 90 % de la altura de la persona, lo cual llamaremos histogramas v´alidos. Recordemos que se realizan cuatro histogramas en base a las cuatro secciones definidas anteriormente. Cada histograma es almacenado en disco en un fichero de tipo XML, en el formato de ficheros de OpenCV, con el fin de simplificar la lectura y escritura de los mismos. En este fichero se almacena el ´area de la nube parcial, que se representa como el ´area que ocupa la zona que consideramos como el pelo, la altura m´axima de la persona en dicha nube y los cuatro histogramas de manera separada. Estos archivos que contienen los histogramas se almacenar´an de forma consecutiva en base al orden de las im´agenes de entrada. Una vez almacenados los histogramas parciales de la persona, se generar´a otro fichero de tipo XML. En ´el se almacenar´a el n´umero de la persona asignado para dicha c´amara, la altura, el ´area y el n´umero de histogramas v´alidos que tiene la persona. De esta manera se conoce el n´umero m´aximo de histogramas que existen, los cuales se encuentran almacenados en la misma ruta que las nubes parciales y el fichero con los datos de la persona. En este punto, una vez procesadas todas las personas detectadas, se tienen almacenadas todas las caracter´ısticas como valores num´ericos, reduciendo, de manera muy considerable el tama˜no de la informaci´on asociada a cada persona si lo comparamos con la fase en la que se dispon´ıa de las nubes de puntos. 5.7. M´ultiples c´amaras Hasta ahora no se ha tratado el tema del funcionamiento de la captura de datos desde m´ultiples fuentes ya que tan s´olo se ha explicado individualmente el funcionamiento de cada parte. Si bien es cierto que no ha sido necesario a´un, es imprescindible para poder realizar comparaciones, tal y como se detallar´a en la secci´on 5.8, el obtener datos desde diferentes c´amaras, o la misma en diferentes momentos. Tal y como se ha explicado anteriormente, la informaci´on que se obtiene es un volumen considerable de datos, por lo que se ha separado el sistema 53
en diferentes m´odulos o programas que pueden ejecutarse de manera independiente, siempre que se les proporcione la entrada de datos adecuada a cada uno de ellos, raz´on por la que se vuelca en disco toda la informaci´on en las etapas intermedias. Por tanto, cada ejecuci´on independiente se considera una c´amara diferente. Es decir, para cada c´amara se ejecutar´an los pasos expuestos en las secciones anteriores y la informaci´on resultante ser´a la que se procese y se considere como una c´amara. En la fase de comparaci´on, explicada en la secci´on 5.8, ser´a donde se carguen al mismo tiempo los datos de todas las c´amaras en el mismo proceso, con el fin de buscar las similitudes entre las personas de las diferentes c´amaras. La ventaja que aporta plantear as´ı el sistema es que las c´amaras no tienen que estar conectadas al mismo tiempo ni en el mismo equipo. S´olo es necesario recoger los datos y se podr´an analizar posteriormente en cualquier equipo. Esto tambi´en permite que el proceso de conversi´on de los datos y la extracci´on de las caracter´ısticas, que son los procesos m´as costosos computacionalmente y los que ocupan m´as espacio en memoria, se hagan de manera distribuida en el equipo que controla cada c´amara, para luego s´olo tener que transferir la informaci´on necesaria para la re-identificaci´on al equipo que se encargue de buscar coincidencias. 5.8. B´usqueda de correspondencias Una vez se dispone de la informaci´on necesaria para cada persona y al menos dos fuentes diferentes de datos, que puede traducirse en dos c´amaras o en una c´amara en diferentes momentos, llega el momento de buscar coincidencias. Siguiendo el modelo empleado en el resto de fases del proyecto, se decide crear un m´odulo independiente que realice esta tarea, y que, al invocarlo, se le pase por par´ametros la ruta de informaci´on de cada c´amara, de manera que se instanciar´an tantas c´amaras o fuentes de datos como par´ametros. Antes de explicar el funcionamiento, debemos tener en cuenta la informaci´on de la que se dispone en este punto. Para cada persona se conoce su altura, su ´area y los histogramas. Recordemos que las nubes de puntos conten´ıan mucha informaci´on, lo cual ocupaba demasiada memoria. A lo largo de las diferentes etapas esta informaci´on se ha ido resumiendo para, en este punto tener, para cada persona, si despreciamos el tama˜no ocupado por la estructura de los datos, dos valores reales. Si suponemos que una persona puede tener hasta 25 histogramas obtenemos que el tama˜no ocupado por 54
cada persona puede ser de un m´aximo de: (3 ∗128 ∗32bits)∗4∗25 + 64bits = 150Kbytes , teniendo en cuenta que para cada histograma tenemos 3 canales con 128 bins de valores reales, para cada una de las 4 partes en las que se ha dividido a la persona. Se puede apreciar que la reducci´on de la informaci´on es considerable. Esto se tuvo en cuenta a la hora de plantear la carga de los datos en este m´odulo de comparaci´on ya que, con este tama˜no, nos podemos permitir cargar todas las personas de una c´amara en memoria, siempre que se trate de un n´umero razonable de personas ya que un equipo moderno tiene memoria suficiente para manejar esta cantidad de datos. A continuaci´on se plante´o definir una estructura para cargar en memoria todos los datos que se encontraban en disco, y se emple´o la estructura representada en la figura 5.17. Como puede observarse, se instanciar´an tantas c´amaras como sea necesario, que ser´an identificadas por un valor entero y, usando las listas proporcionadas por C++, se define la lista de personas que han sido detectadas por dicha c´amara. A continuaci´on tenemos que cada persona almacenar´a la ruta en la que se encuentran sus histogramas, un identificador de la persona a˜nadido manualmente, con el fin de, posteriormente poder calcular la tasa de aciertos o fallos del sistema, el n´umero de histogramas que se dispone para dicha persona, los datos de altura y el ´area, y finalmente la lista de los histogramas que estar´an ordenados. Cada tipo Histograma contendr´a la altura m´axima de la persona para dicho histograma y los histogramas de cada secci´on. De esta manera, una vez cargados todos los datos desde el disco, se puede acceder a toda la informaci´on disponible para cada c´amara, a trav´es de la estructura planteada, ya que contendr´a todo lo necesario para la comparaci´on con otras personas. Esto nos permite tener los datos organizados en listas y en clases separadas, e ir liberando datos que dejen de ser ´utiles conforme se vaya ejecutando el programa, en caso de ser necesario. En la fase de comparaci´on, se definir´an y cargar´an los datos de todas las c´amaras pasadas como argumentos al programa en base a la estructura que se acaba de explicar. En este punto hemos de aclarar que la comparaci´on se realizar´a de par en par de c´amaras, es decir, no se buscar´a simult´aneamente en todas las c´amaras. Se decidi´o hacerlo de esta manera para encuadrar este en el tipo de problema de re-identificaci´on denominado multi-versus-multi shot. Por lo tanto, de cara a la ejecuci´on, para cada persona de la c´amara 1 del par de c´amaras, tendremos que buscar entre un conjunto de personas de 55
Figura 5.17: Estructuras de datos empleadas en el m´odulo de comparaci´on. la c´amara 2. Esto se llama en el campo de la re-identificaci´on la muestra y la galer´ıa respectivamente. Lo que se espera obtener es, para cada muestra una lista ordenada de personas de la galer´ıa en base a su similitud. Por ello, debemos condensar a´un m´as la informaci´on para expresar la similitud de una persona en base a otra mediante un valor. Es decir, la salida que se obtendr´ıa ser´ıa una tabla en la que se tendr´an tantas filas como muestras y tantas columnas como personas hay en la galer´ıa, en la que aparecer´an los diferentes valores que miden la similitud o distancia entre cada persona. Sin embargo, este tipo de salida no es la adecuada para analizar la tasa de aciertos del sistema, por lo que se decidi´o generar una matriz binaria del mismo tama˜no que la tabla mencionada. Para cada fila, tendremos ordenadas las personas de la misma manera que la tabla, sin embargo, en el caso de coincidir con la identidad, sea cual sea la posici´on, se pondr´a como valor en ese punto un 1, y si no, un 0. Esto se puede hacer ya que durante las grabaciones se anotaron las identidades de las personas y se a˜nadi´o dicha informaci´on con el fin de automatizar la generaci´on de los resultados, los cuales se explicar´an en la siguiente secci´on. Tal y como se ha comentado en apartados anteriores, ocurren muchos 56
casos de fusiones, algunos incluso, a pesar de detectarse, no pueden ser manejados correctamente, por lo que se decidi´o mantener algunas personas fusionadas como un individuo ´unico de cara al sistema. Esto es as´ı, ya que, tal y como se analizar´a en detalle m´as adelante, es posible la re-identificaci´on de un sujeto en un grupo de personas fusionadas. Se tuvo que analizar individualmente todas las personas separadas por el sistema para encontrar estos casos de fusiones y etiquetar correctamente las que aparecen para luego, al comprobar la identidad a la hora de generar la matriz binaria, permitir que el individuo que se busca se encuentre entre un conjunto de personas y se vea reflejado en dicha matriz. Recordemos pues que nos basaremos en la altura y los histogramas disponibles de cada sujeto para obtener una medida de distancia que poder usar. En primer lugar, debemos resolver la comparaci´on de histogramas de cada parte. Se decidi´o hacer uso de los histogramas de tres instantes de tiempo para cada persona. Desde el punto de vista de la lista, estos ser´ıan el primero, el central y el ´ultimo. El primero representa el individuo entrando, por lo que se pueden apreciar los colores de la parte frontal, el central es aquel con altura m´axima, es decir, el punto en el que pasa m´as cerca del sensor, para poder apreciar bien el pelo y la cabeza, y el ´ultimo es en el que va saliendo del ´area de detecci´on, por lo que se dispone de la informaci´on de color de la parte trasera de la persona. En todos estos histogramas hay suficiente informaci´on representativa ya que, recordemos que provienen de la fase anterior y est´a representado como m´ınimo el 90 % del cuerpo. Para comparar los diferentes histogramas se hizo uso de la funci´on compareHist de OpenCV, ya que los histogramas, a pesar de haber sido calculados manualmente en vez de con funciones de la biblioteca, son compatibles con los de OpenCV y adem´as, se puede indicar a la funci´on mediante un par´ametro que emplee diferentes medidas de distancia para calcular su diferencia, siendo las que se encuentran disponibles: la correlaci´on, Chi-Cuadrado, intersecci´on y Bhattacharyya: Intersecci´on [Zhang and Canosa, 2014]: Distancia en la que se comparan los elementos del mismo conjunto realizando la intersecci´on de los dos histogramas a comparar. intersec(H, H0) = n X i=1 min(Hi, H0 i) Correlaci´on [Mar´ın Reyes, 2015]: Medida de distancia que compara los mismos elementos de dos conjuntos la cual refiere a una relaci´on 57
estad´ıstica que implica dependencia. correlation(H, H0) = Pn i=1(Hi−¯ H)(H0 i−¯ H0) pPn i=1(Hi−¯ H)2Pn i=1(H0 i−¯ H0)2 Chi-Cuadrado [Zhang and Canosa, 2014]: Distancia que compara los elementos del mismo conjunto de origen estad´ıstico en la que se tiene en cuenta que la diferencia entre un conjunto peque˜no puede ser m´as importante que la diferencia de otras conjuntos m´as grandes. χ2(H, H0) = n X i=1 2(Hi−H0 i)2 Hi+H0 i Bhattacharyya [Naik et al., 2009]: Medida de distancia que compara los mismos elementos de dos conjuntos, en la que se mide la similitud de dos distribuciones de probabilidad. Bhattacharyya(H, H0)=1−v u u t n X i=1 pHiH0 i pPn i=1 HiPn i=1 H0 i Tras hacer pruebas con los diferentes m´etodos de distancia, se observ´o que el m´etodo de Bhattacharyya daba los mejores resultados. Adem´as, seg´un se recoge en [Mar´ın Reyes, 2015], de los m´etodos de los que disponemos se trata de uno de los recomendados en t´erminos de re-identificaci´on en el caso de histogramas. Cabe destacar que se hacen comparaciones de cada parte del cuerpo de forma individual, es decir, teniendo en cuenta que se extraen datos de tres instantes, se comparan con uno a uno con los de dos personas, cada histograma de cada parte del cuerpo con el correspondiente de la otra persona. Sin embargo, pueden ocurrir casos en los que no existan puntos suficientes para una secci´on y que la comparaci´on de histogramas indique que los colores son independientes, algo que ocurre principalmente en los extremos. Esto se denominan valores perdidos, ya que no se dispon´ıa de datos suficientes, algo que suele ocurrir en an´alisis estad´ısticos. Como se indica en [Navarro Pastor, 1998], esto no debe ser un problema para continuar con el an´alisis ya que se suele asignar un valor a cada dato perdido y continuar con el an´alisis. Existen muchos m´etodos diferentes para imputar los valores e incluso se propone el uso de redes neuronales para dicho fin. Esto supon´ıa desviarse del objetivo principal del proyecto, por lo que se plante´o inferir el valor a partir de la comparaci´on de otro de los histogramas con la misma secci´on, algo que mejor´o la tasa de aciertos, por lo que se solucion´o el problema que 58
provocaban los valores perdidos. Una vez obtenidos los resultados de la comparaci´on de histogramas se puede continuar con el proceso de comparaci´on en base al resto de datos. Tal y como se ha comentado anteriormente, tenemos la altura y el ´area, despreciando este ´ultimo dato debido a que, tras las pruebas realizadas, no es representativo de la persona. Por tanto, s´olo se tendr´a en cuenta la altura, aparte de los histogramas de color. En primer lugar, se intent´o podar los resultados ya que a priori sabemos que, por lo general, si la altura entre dos personas difiere mucho, no son la misma persona, por lo que se estableci´o que si la diferencia de altura entre la muestra y el candidato de la galer´ıa era mayor de dos cent´ımetros, se descartar´ıa el candidato y en caso contrario se establecer´ıa un valor de distancia en base a un c´alculo ponderado entre la diferencia de altura y el color. Sin embargo este tipo de resultados no era el deseado ya que esto no permit´ıa obtener los resultados conforme al est´andar en este tipo de problemas, en los que todo depende del valor de la diferencia y no se descarta ning´un candidato. Por ello se decidi´o asignar pesos a todos los datos comparativos para obtener un ´unico valor de diferencia, asignando un mayor peso a la altura que a los colores, sin embargo, se obten´ıa una tasa de acierto menor al 30 % debido a que, a´un a pesar de tener alturas diferentes, ten´ıan colores muy similares y ten´ıa valores de diferencia muy similares al compararlo con la persona que en efecto era la misma. Analizando las medidas de diferencia para esta aproximaci´on se constat´o que no era la adecuada. Se decidi´o entonces tener en cuenta lo que se sabe a priori del problema, y es que una persona no suele cambiar espont´aneamente de altura, por lo que se debe priorizar en cierto modo las personas que tienen alturas m´as cercanas, ya que existen m´as probabilidades de que sea un buen candidato. Para intentar simular esto, se decidi´o establecer una asignaci´on de pesos y c´alculo de distancia variable, en base a la altura, simplific´andolo a dos tipos de c´alculos y pesos, uno para candidatos con alturas muy cercanas, y otro para el resto. El primer caso, para un candidato de altura cercana tenemos que la distancia Dist se calcula de la siguiente manera: Dist1= (DistIT orso +DistIP iernas +DistF T orso +DistF P iernas +DistCT orso) ∗0,14 + DistCP elo ∗0,08 + DistCCabeza ∗0,2 en la que DistIT orso representa la distancia entre los histogramas del inicio del torso, DistIP iernas la distancia entre los de las piernas en el inicio, DistF T orso la distancia entre los histogramas finales del torso, DistF P iernas la distancia 59
entre los ´ultimos de las piernas, DistCT orso la distancia entre los histogramas del punto central de mayor altura del torso, DistCP elo, la distancia entre los del pelo del punto central y DistCCabeza, la distancia entre los histogramas de la secci´on de la cabeza del punto central. Como se aprecia mediante los pesos, se obtiene un resultado entre 0 y 1, indicando mediante 0 que se trata de la misma persona y 1 que las personas son totalmente diferentes. Por otro lado, si el candidato tiene una diferencia en altura mayor a un umbral, aplicar´ıamos otro criterio para calcular la distancia, en el que s´ı tenemos en cuenta la diferencia de altura. DifAltura, en el c´alculo. En este caso la distancia ser´ıa la siguiente: Dist2= (DistIT orso +DistIP iernas +DistF T orso +DistF P iernas +DistCT orso) ∗0,1 + DistCP elo ∗0,05 + DistCCabeza ∗0,15 + DifAltura ∗0,3 De esta manera, a pesar de existir una diferencia en la altura, se tiene en cuenta a la hora de hallar la distancia al asignarle un peso. Este m´etodo de c´alculo se emple´o tras probar m´ultiples aproximaciones y analizando los valores de distancia que se obten´ıan, tanto el valor final como la similitud entre cada histograma. Fue de esa manera por la que se asignaron los pesos que figuran para cada parte. Se debe a que se observ´o que exist´ıa un patr´on y que los colores obtenidos en ciertas zonas eran m´as fiables para la re-identificaci´on que otros, como por ejemplo el color de la cabeza. Sin embargo, algo que sorprendi´o fue que el color del pelo no arrojara muy buenos resultados ya que, no exist´ıa tanta variedad en las muestras y muchos individuos ten´ıan colores similares, los cuales, al pasar por el proceso de reducci´on del color, se volv´ıan muy similares. Tal y como se ha indicado, el m´etodo de comparaci´on empleado no se escogi´o de manera arbitraria, sino que se hicieron m´ultiples pruebas en las que se fueron descubriendo las zonas que mejores valores de distancia daban para la misma persona, es decir, se bas´o en el m´etodo de prueba y error para ir mejorando el proceso hasta conseguir un m´etodo que diera buenos resultados en las muestras que se dispon´ıan. A continuaci´on se detallar´an los resultados que se obtuvieron. 60
Cap´ıtulo 6 Resultados de las pruebas En este cap´ıtulo se detallar´an los diferentes resultados que se obtuvieron una vez se completaron todas las fases del sistema y se probaron todas en conjunto. Esto llev´o a utilizar diferentes espacios de color a la hora de realizar los histogramas, y a los cambios mencionados en la etapa de b´usqueda de correspondencias sobre los diferentes m´etodos para calcular las distancias. Para mostrar los resultados obtenidos, representados mediante la tasa de aciertos del sistema, se realiz´o una peque˜na funci´on en MATLAB con el fin de generar unos resultados m´as legibles, empleando gr´aficas. Para la realizaci´on de las pruebas se analizaron im´agenes en las que se recogen 121 trayectorias de personas bajo el sensor, produci´endose el paso de las mismas personas en diferentes ocasiones. Las im´agenes se encuentran divididas en dos conjuntos, tomando uno como muestra, representando una grabaci´on de tres minutos de duraci´on y otro como galer´ıa de cuatro minutos y medio de duraci´on. 6.1. Espacio de color RGB normalizado En primer lugar se opt´o por cambiar el espacio de color RGB al RGB normalizado ya que, en este espacio de color, la luminancia no se encuentra como una componente independiente. Con el fin de minimizar variaciones de color debidas a cambios de la iluminaci´on, se decidi´o realizar esta conversi´on, la cual se calcula de la siguiente manera: r=R R+G+Bg=G R+G+Bb=B R+G+B La primera prueba que se ejecut´o fue comparar todas las personas que se encontraban en el grupo de las muestras con todos los del grupo de la galer´ıa, 61
Figura 6.6: Resultados de la prueba en la que se modifica el umbral de altura. 6.2. Espacio de color HSV Partiendo de las conclusiones de [Mar´ın Reyes, 2015], se decidi´o emplear el espacio de color HSV. En este esquema, una de sus componentes, el valor, representa la luminancia, por lo que, de producirse alteraciones en la iluminaci´on de la escena, s´olo esta componente se ver´a afectada. Por tanto, se puede ignorar el valor del color, y tan solo tener en cuenta las componentes H y S, el matiz y la saturaci´on a la hora de hacer los histogramas, los cuales son invariantes a las condiciones lum´ınicas. Para realizar la conversi´on desde los valores RGB se decidi´o hacer uso de la funci´on disponible en la biblioteca PCL, PointXYZRGBtoXYZHSV, la cual para un punto dado en RGB, genera uno equivalente en HSV, pudiendo a continuaci´on acceder a las componentes H, S y V para generar los histogramas correspondientes. La primera prueba que se realiz´o empleando este espacio de color se hizo modificando el rango de valores del matiz del color, es decir, la componente 68
H, a la mitad pasando de 360 a 180 posibles valores, manteniendo el rango de la saturaci´on e ignorando el valor del color. Empleando estos valores para realizar los histogramas se obtuvo el resultado que se muestra en la figura 6.7. Figura 6.7: Resultados de la primera prueba empleando el espacio de color HSV y H[0-180]. Tal y como se puede apreciar, no se han producido cambios significativos en la tasa de aciertos para los dos primeros candidatos; sin embargo, para los tres primeros candidatos se aprecia una mejora en los aciertos del sistema. Por otro lado, los resultados conforme se exploran m´as candidatos son similares a los obtenidos en el espacio de color RGB. A continuaci´on se decidi´o modificar el valor de la componente S, la saturaci´on, y reducirlo a la mitad, de manera que se tendr´ıan 50 posibles valores, en vez de 100, con el fin de analizar si el seguir reduciendo el espectro de colores tiene efectos positivos en la fiabilidad de los resultados. Tras este cambio, se obtuvo el resultado mostrado en la figura 6.8. 69
Figura 6.8: Resultados del espacio de color HSV para H[0-180] y S[0-50]. En este caso, al igual que para la prueba anterior, no se produjo un cambio en los dos primeros candidatos, pero s´ı se produce un ligero empeoramiento de la tasa de acierto para los tres primeros. Esto puede indicar que reducir la componente S puede reducir la fiabilidad de los resultados que genera el sistema. Por ello, se decide reducir la componente H a´un m´as y mantener el rango original para la componente S. Habiendo disminuido a 100 posibles valores el matiz se obtuvo el resultado de la figura 6.9. Al examinar el resultado de esta prueba, se puede apreciar que se ha obtenido el mismo resultado para los histogramas con un rango de la componente H de 180 valores, el mostrado en al figura 6.7, y para un rango de 100, es decir, el de la figura 6.9. Al contrario de lo esperado, no se ha producido ninguna mejora. 70
Figura 6.9: Resultados del espacio de color HSV para H[0-100] y S[0-100]. 6.3. An´alisis de resultados Tal y como se ha podido constatar en la secci´on anterior, a pesar de realizar m´ultiples pruebas del sistema ajustando diferentes par´ametros, no se ha logrado obtener una buena tasa de acierto para el primer candidato, obteniendo un 53 % en el mejor caso. Sin embargo se ha obtenido una tasa del 75 % en el mejor caso para la aparici´on de la persona buscada entre los tres primeros candidatos, llegando hasta un 84 % para los cinco primeros candidatos con m´as parecido al individuo buscado, seg´un el sistema. Para poder interpretar estos resultados hemos de tener en cuenta que muchos de los datos que se hab´ıan planteado extraer de los individuos, como el ´area o el volumen de la misma, no han dado buenos resultados a la hora de realizar la comparaci´on, teniendo pues que descartar esta informaci´on. Esto ha provocado que el sistema dependa en exceso de la informaci´on de color, la cual sufre muchos cambios y provoca errores en la re-identificaci´on en el 71
caso en el que el individuo lleve alguna prenda de diferente color entre cada c´amara. Por otro lado, hemos de tener en cuenta el elevado ruido que poseen las im´agenes, lo cual deriva en una posible falta de precisi´on o fallos en la detecci´on de la profundidad y en el color. A pesar de haber encontrado estos contratiempos, se han intentado identificar las diferentes etapas que son susceptibles de ser mejoradas, tal y como se detalla en la secci´on 7.1 donde a su vez se proponen soluciones, m´etodos alternativos y otras posibles opciones para caracterizar a cada individuo que podr´ıan hacer mejorar de forma significativa el sistema, proporcionando resultados m´as fiables. 72
Cap´ıtulo 7 Trabajo futuro y conclusiones Este proyecto se ha realizado con el fin de obtener un sistema que permita re-identificar personas en base a sus caracter´ısticas f´ısicas. A lo largo del desarrollo se han encontrado algunos problemas que no han podido resolverse completamente, sin embargo, se han intentado abarcar y se han propuesto soluciones a muchos de ellos. Estas soluciones o mejoras podr´ıan ser tomadas en consideraci´on con el fin de aumentar la tasa de acierto en la re-identificaci´on, o aplicar el sistema desarrollado a ciertas tareas que en un principio no se hab´ıan planteado, pero que, de llevarse a cabo ciertas modificaciones el sistema podr´ıa tener m´ultiples aplicaciones. 7.1. Mejoras del sistema Tal y como se ha indicado anteriormente, durante algunas de las fases del sistema se han encontrado imprevistos que impidieron utilizar ciertos datos u obtener cierta informaci´on ´util, que en un principio se plante´o como indispensable a la hora de caracterizar a una persona. A continuaci´on se plantear´an las posibles mejoras en las diferentes partes del proyecto que, podr´ıan aplicarse de continuar con el mismo. 7.1.1. Dispositivo de captura En primer lugar, como bien se ha expresado en diversas ocasiones, el dispositivo de captura, la c´amara Kinect no posee una resoluci´on muy grande, ni un nivel de detalle o precisi´on suficiente. Esto se aprecia en la cantidad de ruido de los datos que esta proporciona. Al comienzo del desarrollo del proyecto, se decidi´o usar este sensor, a´un sabiendo sus limitaciones ya que, en ese momento, era de las mejores opciones que pod´ıan considerarse y exist´ıa 73
una extensa documentaci´on sobre su uso. Sin embargo, m´as adelante se lanz´o al mercado una nueva Kinect, la cual ten´ıa una mayor resoluci´on y precisi´on en comparaci´on con su predecesora, llegando incluso a estimar el pulso de una persona mediante los cambios que se producen en la piel. Una posible mejora ser´ıa emplear sensores con mayor resoluci´on como el mencionado, el cual a´un no dispone de controladores oficiales para su uso desde un ordenador, ya que no existir´ıa tanto ruido en las im´agenes y no se tendr´ıan tantos puntos en la imagen de color sin datos de profundidad, tal y como ocurre con la c´amara utilizada. 7.1.2. Detecci´on y segmentaci´on En la fase de detecci´on y segmentaci´on es posible aplicar algunas mejoras con el fin de evitar falsas detecciones, tal y como se ha comentado. Se podr´ıa incluir el sistema de detecci´on de cabezas de [Quesada D´ıaz, 2015] para evitar que cambios en el entorno entorpezcan la detecci´on. A su vez, la detecci´on de cabezas ser´ıa de utilidad para aumentar la fiabilidad la detecci´on de personas fusionadas, es decir, dos personas que pasan juntas, pero que en im´agenes anteriores aparec´ıan separadas. Recordemos que este comportamiento estaba controlado en este proyecto, sin embargo, no se diferencia el ´area que pertenece a cada persona en el ´area fusionada, lo cual facilitar´ıa el seguimiento de la persona. 7.1.3. Caracterizaci´on A lo largo del desarrollo se ha constatado lo complicado que ha resultado obtener caracter´ısticas f´ısicas de la persona, debido principalmente a la falta de precisi´on del sensor, lo cual se traduce en valores muy diferentes para diferentes mediciones de la misma persona. Por ello, este apartado ser´ıa muy importante al objeto de que el sistema funcione bien re-identificando a personas durante diferentes d´ıas, debido a la alta dependencia de los datos de color, tal y como se ha desarrollado en el proyecto. Esta falta de datos ser´ıa uno de los puntos que se podr´ıa mejorar si nos basamos en [Quesada D´ıaz, 2015], donde se detecta el sexo de la persona y se obtienen valores de circularidad de la cabeza. Por otro lado tenemos la textura que representa el modelo de la persona, el cual no se generaba correctamente debido principalmente al ruido del sensor. Ser´ıa interesante a˜nadir esta informaci´on como caracter´ısticas f´ısicas con el fin de analizar si se produce un aumento considerable en la tasa de acierto, ya que lo esperable es que mejore en cierta medida. 74
7.2. Posibles aplicaciones del sistema Si bien el proyecto tiene como objetivo lograr un sistema funcional, no se ha tenido en cuenta que sea un producto que pueda usarse de forma directa. Se trata de intentar realizar un sistema que podr´ıa tener m´ultiples usos en diferentes ´areas. En primer lugar podemos pensar en una gran superficie que desee analizar las zonas por las que pasan los clientes y de qu´e manera. De tener un n´umero considerable de sensores instalados, ser´ıa posible identificar a cada individuo que pasa bajo el ´area de detecci´on, pudiendo as´ı saber, tras analizar toda la informaci´on, las zonas por las que ha pasado, lo cual podr´ıa traducirse en las zonas que m´as le atraen. Esto puede ser de utilidad en estudios de mercado, ya que se podr´ıan analizar las zonas que son m´as o menos atractivas para los clientes, y en el caso de mejorar el sistema para incluir datos como el sexo, se podr´ıa hacer un an´alisis en mayor profundidad teniendo en cuenta el sexo de los clientes. En ´ambitos de seguridad, este sistema puede emplearse para seguir a una persona a lo largo de una zona con m´ultiples c´amaras, en el caso que se desee saber los lugares en los que ha estado. Esto ser´ıa a´un m´as ´util de lograr hacer que el sistema se ejecute en tiempo real, algo que se podr´ıa llegar a hacer, teniendo en cuenta el tiempo de procesamiento de los datos. Como se ha indicado, cada m´odulo del sistema es independiente y puede tenerse un equipo ejecutando las primeras fases y enviando los datos caracter´ısticos de cada persona a un sistema central, el cual reciba los datos de las c´amaras. A´un as´ı, sigue suponiendo una elevada carga computacional a tener en cuenta. Relacionado con lo anterior, en el caso de funcionar en tiempo real, el sistema podr´ıa usarse con otros fines ya que, hasta ahora, nos hemos basado en analizar el comportamiento de las personas una vez han pasado por las c´amaras. Sin embargo, podr´ıa emplearse para buscar alg´un patr´on que pudiera aparecer en el futuro. Para ejemplificar esta situaci´on supongamos un centro comercial con m´ultiples c´amaras, donde se da la circunstancia de que un menor se separa de sus padres y se pierde. El sistema podr´ıa usarse, tras ciertas modificaciones, para que, tras introducir los datos b´asicos de la persona que se ha perdido como la altura aproximada o el color de su ropa, detecte cuando alguien con dichas caracter´ısticas pasa bajo alguna de las c´amaras lanzando un aviso, por lo que se podr´ıa localizar f´acilmente a la persona perdida. 75
7.3. Conclusiones Con este proyecto se ha querido proponer y dise˜nar un sistema que permita re-identificar a personas a partir de las im´agenes capturadas por un sensor externo sin obtener im´agenes del rostro de las mismas. Como se ha podido comprobar, se ha logrado obtener un sistema funcional, sin embargo las tasas de acierto no son lo suficientemente elevadas para lograr que el sistema funcione de manera totalmente aut´onoma, por lo que ofrece una serie de candidatos entre los que se puede encontrar una persona que coincida con la que se busca. Tras el desarrollo, se ha podido comprobar que el tratamiento de im´agenes puede ser una tarea compleja a la hora de procesarlas y extraer de ellas una determinada informaci´on. Esto se debe a m´ultiples razones entre las que podemos destacar que el sensor que captura las im´agenes introduce mucho ruido, generando valores perdidos o informaci´on err´onea en ciertos puntos. Si a esto le sumamos el hecho de que el escenario puede sufrir alteraciones y pueden ocurrir casos que no est´an contemplados, como por ejemplo que dos personas decidan pasar con sus cabezas juntas, comprendemos que es necesario que el sistema tenga una cierta tolerancia a fallos. As´ı pues, se ha propuesto y logrado un sistema alternativo a los que pueden encontrarse actualmente en el mercado, si bien este tiene un fin diferente y que intenta preservar la intimidad de las personas que son grabadas, ya que a priori se intenta no obtener datos sobre el rostro. A´un as´ı, se condensa la informaci´on sobre cada individuo de manera que llegado a un punto del proceso dejamos de trabajar con las im´agenes obtenidas; se construye un fichero de texto con datos que describan las caracter´ısticas que se consideran necesarias para la posterior re-identificaci´on, desconociendo la identidad real de la persona, la cual, a efectos del sistema ser´a un n´umero. Por otro lado, se han investigado y propuesto posibles mejoras o m´etodos alternativos para realizar algunas de las operaciones llevadas a cabo por el sistema, con el fin de lograr mejores resultados o aportarle otras funcionalidades o utilidades al mismo. De esta manera se aclaran las l´ıneas futuras que podr´ıan seguirse para mejorar el sistema y llegar a hacerlo un producto comercializable. Finalmente, como proyecto acad´emico se puede considerar que se han cumplido las expectativas de un Proyecto de Fin de Carrera en el que se ha puesto en pr´actica toda la experiencia previa de la que se dispon´ıa. La 76
realizaci´on del mismo ha resultado una experiencia enriquecedora en cuanto a los conocimientos que he adquirido y a la experiencia de realizar un proyecto de una cierta envergadura como este, en el que se aprecia la importancia de la constancia en el trabajo y la capacidad de resoluci´on de los problemas que han surgido durante el desarrollo. De esta manera se ha podido comprobar de primera mano c´omo se va desarrollando un proyecto desde el momento en el que es una idea, para luego ir tomando forma e ir adapt´andose a las circunstancias o limitaciones que van surgiendo durante las diferentes fases del desarrollo. 77
[SAFRAN Morpho, 2015] SAFRAN Morpho (2015). Border crossings: Morpho has developed a biometric solution for australia. URL: http: //www.morpho.com/references/border-control/border-crossingsmorpho-has-developed-a-biometric-solution-for-australia. [Simon and Goldstein, 1935] Simon, C. and Goldstein, I. (1935). A New Scientific Method of Identification. New York State Journal of Medicine, Vol. 35, No. 18. [Todo Vector, 2014] Todo Vector (2014). Im´agenes de personas caminando. URL: http://todovector.com/vector/personas/parejas/caminando/. [Upton and Halfacree, 2012] Upton, E. and Halfacree, G. (2012). Meet the Raspberry Pi. John Wiley and Sons. [Viafirma Developers, 2015] Viafirma Developers (2015). No recuerdo el pin de mi dnie ¿c´omo puedo cambiarlo o solicitar uno nuevo? URL: https://developers.viafirma.com/no-recuerdo-el-pin-de-midnie-como-puedo-cambiarlo-o-solicitar-uno-nuevo. [Wikipedia, 2010] Wikipedia (2010). Kinect. URL: https://en. wikipedia.org/wiki/Kinect. [Zhang and Canosa, 2014] Zhang, Q. and Canosa, R. L. (2014). A comparison of histogram distance metrics for content-based image retrieval. International Society for Optics and Photonics. [Zhang et al., 2012] Zhang, X., Yan, J., Feng, S., Lei, Z., Yi, D., and Li, S. Z. (2012). Water Filling: Unsupervised People Counting via Vertical Kinect Sensor. 2012 IEEE Ninth International Conference on Advanced Video and Signal-Based Surveillance. 84