Implementación Paralela del Algoritmo Pixel Purity Index para Análisis Hiperespectral en GPUs Sergio Sánchez Antonio Plaza Grupo Computación Hiperespectral (HYPERCOMP) Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica Avenida de la Universidad s/n, E-10071 Cáceres [email protected] Grupo Computación Hiperespectral (HYPERCOMP) Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica Avenida de la Universidad s/n, E-10071 Cáceres [email protected] Resumen El presente trabajo se describe la implementación eficiente de un algoritmo para extracción de referencias espectrales puras o endmembers en imágenes hiperespectrales de la superficie terrestre haciendo uso de tarjetas gráficas programables (GPUs) de NVIDIA para acelerar los cómputos relativos al proceso. En concreto el algoritmo implementado es el Pixel Purity Index (PPI). En el presente trabajo se realiza un estudio experimental sobre la precisión y rendimiento paralelo de la implementación desarrollada utilizando imágenes hiperespectrales reales adquiridas por el sensor Airborne Visible InfraRed Imaging Spectrometer (AVIRIS) de NASA Jet Propulsion Laboratory. ejemplo el sensor AVIRIS (Airborne Visible Infra-Red Imaging Spectrometer) [2] desarrollado por NASA/Jet Propulsión Laboratory, el cual cubre el rango de longitudes de onda entre 0.4 y 2.5 µm utilizando 224 canales y resolución espectral de aproximadamente 10 nm. 1. Introducción El asentamiento de la tecnología hiperespectral en aplicaciones de observación remota de la tierra ha dado como resultado el desarrollo de instrumentos de medida de muy elevada resolución en lo dominios espacial y espectral [1,2]. Los sensores hiperespectrales adquieren imágenes digitales en una gran cantidad de canales espectrales muy cercanos entre sí, obteniendo, para cada porción de la escena o píxel, una firma espectral característica de cada material. El resultado de la toma de datos puede ser representado en forma de cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda. la Figura 2 muestra el procedimiento de análisis hiperespectral mediante un sencillo diagrama, en el que se ha considerado como Figura 1. Concepto de imagen hiperespectral. Conviene destacar que, en este tipo de imágenes, es habitual la existencia de mezclas a nivel de subpíxel [3], por lo que a grandes rasgos podemos encontrar dos tipos de píxeles en estas imágenes: píxel puros y píxel mezcla [4]. Se puede definir un píxel mezcla como aquel en el que cohabitan diferentes materiales. Este tipo de píxel son los que constituyen la mayor parte de la imagen hiperespectral, en parte, debido a que este fenómeno es independiente de la escala considerada ya que tiene lugar incluso a niveles microscópicos. La Figura 2 muestra un ejemplo del proceso de adquisición de píxeles puros (a nivel macroscópico) y mezcla en imágenes hiperespectrales. Figura 2. Concepto de píxel mezcla en imágenes hiperespectrales. La mayoría de las técnicas de análisis hiperespectral desarrolladas hasta la fecha presuponen que la medición obtenida por el sensor en un determinado píxel viene dada por la contribución de diferentes materiales que residen a nivel sub-píxel. El fenómeno de la mezcla puede venir ocasionado por una insuficiente resolución espacial del sensor, pero lo cierto es que este fenómeno ocurre de forma natural en el mundo real, incluso a niveles microscópicos, por lo que el diseño de técnicas capaces de modelar este fenómeno de manera adecuada resulta imprescindible. No obstante, las técnicas basadas en este modelo son altamente costosas desde el punto de vista computacional [5]. En el presente trabajo, describimos la implementación eficiente de un algoritmo para extracción de referencias espectrales puras o endmembers denominado Píxel Purity Index (PPI), el cual hace uso de tarjetas gráficas programables (GPUs), las cuales han supuesto una revolución en los últimos años debido a su bajo coste en comparación con el elevado grado de paralelismo que permiten. El trabajo se organiza de la siguiente forma. En primer lugar, describimos el modelo de mezcla y el algoritmo PPI. A continuación describimos la implementación paralela en GPUs. Seguidamente, realizamos un estudio de precisión y escalabilidad. El trabajo concluye con las conclusiones obtenidas y las líneas futuras de trabajo. 2. Algoritmo PPI y modelo de mezcla El modelo lineal de mezcla expresa los píxeles mezcla como una combinación lineal de firmas asociadas a componentes espectralmente puros (llamados endmembers) en la imagen [6]. Este modelo ofrece resultados satisfactorios cuando los componentes que residen a nivel sub-píxel aparecen espacialmente separados (ver Figura 3), situación en la que los fenómenos de absorción y reflexión de la radiación electromagnética incidente pueden ser caracterizados siguiendo un patrón estrictamente lineal. Comportamiento lineal Figura 3. El modelo lineal de mezcla. En la actualidad, el modelo lineal de mezcla es el más utilizado en análisis hiperespectral, debido a su sencillez y generalidad. Dicho modelo puede interpretarse de forma gráfica en un espacio bidimensional utilizando un diagrama de dispersión entre dos bandas poco correlacionadas de la imagen, tal y como se muestra en la Figura 4, en la que se aprecia que todos los puntos de la imagen quedan englobados dentro del triángulo formado por los tres puntos más extremos (elementos espectralmente más puros). Los vectores asociados a dichos puntos constituyen un nuevo sistema de coordenadas con origen en el centroide de la nube de puntos, de forma que cualquier punto de la imagen puede expresarse como combinación lineal de los extremos. Figura 5. Funcionamiento del algoritmo PPI en un espacio de dos dimensiones. Figura 4. El modelo lineal de mezcla. Uno de los algoritmos más conocidos para la extracción automática de endmembers en la literatura ha sido el método PPI [7], que forma parte del software ENVI [8]. El algoritmo procede mediante la generación de un gran número de vectores aleatorios N-dimensionales llamados “skewers”. Cada punto de la imagen se proyecta sobre cada skewer y los puntos que correspondan a los extremos en la dirección de un skewer se identifican y se almacenan en una lista. Al incrementar el número de skewers la lista también crece, y el número de veces que un píxel dado se almacena en la lista también se incrementa. Los píxeles con mayores incrementos son considerados como los endmembers finales (ver Figura 5). Como puede apreciarse, el algoritmo se basa en la aplicación repetitiva de operaciones vectoriales regulares y predecibles, con lo que su implementación se adapta de forma adecuada a arquitecturas de tipo GPU [9]. De manera más específica, el funcionamiento del algoritmo PPI puede descomponerse en los siguientes pasos: 1. En primer lugar, el algoritmo asigna un índice de pureza a todos los pixels de la imagen. El contador de cada punto se inicializa al valor 0. 2. Seguidamente, se genera un vector unitario aleatorio “skewer” que particiona la nube de puntos, como veremos a continuación. 3. El tercer paso consiste en proyectar todos los puntos de la imagen hiperespectral sobre el vector unitario antes generado, identificando los puntos extremos en la dirección definida por el vector unitario. El índice de pureza de los puntos extremos se incrementa en una unidad. 4. Los pasos 2-3 del algoritmo se repiten tantas veces como el usuario especifique en el parámetro de entrada. 5. Tras la ejecución de un número amplio de iteraciones, se obtiene como resultado una imagen de pureza formada por los índices asociados a cada uno de los pixels de la imagen. 6. Utilizando el valor umbral especificado como parámetro, se seleccionan los puntos de la imagen cuyo índice de pureza asociado supera dicho valor umbral. Estos puntos son etiquetados como “puros”. La figura 4 ilustra el procedimiento seguido hasta este punto, suponiendo que se realizan tres iteraciones y que se seleccionan como endmembers aquellos puntos que han sido seleccionados como extremos una o más veces. Imagen pre-procesada Imagen reducida dimensionalmente Reducción dimensional Estimación de abundancias Identificación de endmembers endmembers Reflectancia (%*100) 5000 4000 3000 2000 1000 0 300 Mapas de abundancia 600 900 1200 1500 1800 2100 2400 Longitud de onda (nm) Figura 6. Cadena de desmezclado de datos hiperespectrales utiliznado endmembers. Una vez extraídos los elementos espectralmente más puros, tiene lugar un proceso de estimación de abundancias en el que se estima la contribución individual de cada endmember en cada píxel de la imagen, completándose la cadena de desmezclado que se describe en la Figura 6. 3. Implementación paralela en GPUs La ejecución del algoritmo se divide en 3 fases bien diferenciadas: generación de números aleatorios, proyección y detección de píxels extremos y fase de agrupación de resultados. A continuación detallamos cada una de las fases. 3.1. Generación de números aleatorios Esta fase se ejecuta íntegramente en la GPU, en ella se van a generar todos los skewers necesarios para la ejecución completa del algoritmo en función del número de iteraciones fijado al inicio. Para ello se hace uso del generador de números aleatorios de Mersenne que viene implementado en la colección de ejemplos de CUDA y que nos permite obtener una distribución normal. Si suponemos que el número de iteraciones es T y el numero de bandas de la imagen es , entonces necesitaremos un total de Tx números aleatorios. Estos se agruparán en grupos de elementos que constituirán un skewer. Los elementos se almacenan en la memoria global de la GPU. 3.2. Proyección y detección de extremos Esta fase se ejecuta también en la GPU, la idea es tener tantos hilos de ejecución como iteraciones y que cada hilo se encargue de realizar una iteración del problema global. Por tanto el hilo H se encargrará de proyectar todos los pixels de la imagen sobre el skewer H realizando el producto escalar entre cada pixel y el skewer. Finalmente almacenará en una estructura lineal las coordenadas de los pixels que han obtenido el valor máximo y mínimo en la proyección. Esta estructura E tiene un tamaño de 2xT de forma que el hilo H almacenará estos dos valores en sus posiciones E[Hx2] y E[(Hx2)+1]. Figura 7. Imagen hiperespectral obtenida por el sensor AVIRIS de NASA JPL utilizada en el estudio. 3.3. Agrupación de resultados Esta fase se ejecuta en serie en la CPU, lo que se pretende es unificar los resultados de la fase anterior en una imagen de pureza en la que cada pixel tendrá un valor que se corresponderá con el número de veces que ha sido seleccionado como extremo durante la ejecución de la fase anterior. Para ello se obtiene de la memoria global de la GPU la estructura E y se recorre elemento a elemento. El valor de cada elemento se corresponde con la coordenada de la imagen de pureza que será incrementada en una unidad. 4. Análisis y discusión de resultados La imagen hiperespectral que se utiliza en el presente estudio fue obtenida por el sensor AVIRIS de NASA Jet Propulsion Laboratory sobre el distrito minero de Cuprite, Nevada, el cual ha sido utilizado a lo largo de los años como una zona de estudio para la validación de algoritmos de tratamiento de imágenes hiperespectrales, sobre todo, para evaluar la precisión de algoritmos de extracción de endmembers. Esto ha sido posible gracias a la obtención repetitiva de datos en sucesivas campañas utilizando diferentes sensores hiperespectrales (en concreto, el sensor AVIRIS de NASA lleva obteniendo datos en Cuprite año tras año desde 1990). Además, el Instituto Geológico de Estados Unidos (USGS) ha realizado, de forma paralela a las campañas de adquisición de imágenes, estudios sobre el terreno que han permitido la obtención de información de verdad terreno muy extensa, favoreciendo la utilización de esta imagen como un estándar a la hora de validar algoritmos de tratamiento de imágenes hiperespectrales. La imagen que hemos utilizado en el estudio (denominada AVCUP95) fue adquirida por el sensor AVIRIS en 1995 y se encuentra disponible online (http://aviris.jpl.nasa.gov). La Figura 7 muestra la ubicación de la imagen sobre una fotografía aérea de la zona. Visualmente, puede apreciarse la existencia de zonas compuestas por minerales, así como abundantes suelos desnudos y una carretera interestatal que cruza la zona en dirección nortesur. La imagen utilizada en el estudio consta de 350x350 pixels, cada uno de los cuales contiene 224 valores de reflectancia en el rango espectral 0.4 a 2.5 µm. La versión CUDA del algoritmo GPU ha sido implementada en una arquitectura Tesla C1060 de NVIDIA, con 240 unidades de procesamiento y 4 GB de memoria de alta velocidad. En este sistema, la interfaz de memoria GDDR3 de 512 bits proporciona un ancho de banda de 102 GB/s para garantizar la máxima velocidad en la transferencia de datos. La GPU se conecta a un procesador Intel core i7 920 a 2.67 Ghz con 8 cores, que utilza una placa Asus P6T7 WS supercomputer. La Figura 8 muestra los píxels seleccionados por la versión serie del algoritmo (implementado en uno de los cores del sistema Intel core i7 920) aplicando PPI con un total de 1024 skewers. La Figura 9 muestra los píxels seleccionados por la versión GPU del algoritmo. Aunque los resultados no muestran coincidencia total para todos los píxels, seleccionados, hemos comprobado experimentalmente que los elementos espectralmente más puros (endmembers) se seleccionan con igual confianza en ambos casos, por lo que podemos concluir que la versión GPU ofrece resultados comparables a los proporcionados por la versión serie. Dicho estudio se ha realizado utilizando una serie de firmas espectrales de referencia obtenidas por USGS sobre la zona de estudio, utilizando espectro-radiómetros de campo. Figura 8. Píxels puros seleccionados por la implementación serie del algoritmo PPI. Figura 9. Píxels puros seleccionados por la implementación serie del algoritmo PPI. Con respecto a los resultados obtenidos en cuanto a aumento de prestaciones en la GPU, conviene destacar que la aceleración obtenida tras la implementación GPU es muy destacada. En concreto, el código serie optimizado y ejecutado en el procesador Intel core i7 920 con 1024 skewers sobre la imagen AVCUP95 tardó un total de 1892.22 segundos en proporcionar los resultados mostrados en la Figura 8. Por su parte, el código GPU implementado en CUDA permitió obtener los resultados mostrados en la Figura 9 en un total de 16.51 segundos, lo cual supone un factor de aceleración o speedup de 114.67 unidades a la hora de obtener el resultado, lo cual resulta altamente destacable. La portabilidad y flexibilidad de las arquitecturas GPU las hace muy interesantes en aplicaciones de análisis de datos correspondientes a observación remota de la tierra, ya que dichas arquitecturas son susceptibles de utilizarse a bordo del sensor (en particular, en sensores aerotransportados como AVIRIS que no tienen restricciones en cuanto a tolerancia a radiación) debido a sus escasas restricciones en cuanto a tamaño y peso, si bien es cierto que todavía las GPUs presentan tasas de consumo energético mayor que las de otros dispositivos como FPGAs que, por otra parte, resultan mucho más caros. En cualquier caso, las GPUs suponen una atractiva opción de diseño a la hora de implementar algoritmos de análisis hiperespectral a bordo de sensores aerotransportados. 5. Conclusiones y líneas futuras En el presente trabajo se ha desarrollado una nueva implementación paralela del algoritmo PPI, ampliamente utilizado en la comunidad científica dedicada al análisis de imágenes hiperespectrales obtenidas por sensores remotos de observación de la tierra. La nueva implementación se ha desarrollado en una arquitectura GPU de tipo Tesla C1060 de NVIDIA. En cuanto a los resultados de precisión, podemos concluir que los resultados proporcionados por la implementación GPU son comparables a los proporcionados por la versión original del algoritmo, con similares prestaciones en cuanto a la selección de píxels puros, y con un factor de aceleración muy significativo debido al paralelismo inherente a la implementación GPU, desarrollada utilizando la arquitectura CUDA de NVIDIDA. Conviene destacar, llegados a este punto, las ventajas económicas que la implementación GPU ofrece con respecto a otras soluciones paralelas como las basadas en clusters de computadores [10,11]. En concreto, mientras que el precio de una GPU de última generación se sitúa en torno a los 300 euros, el precio de un cluster puede ser mucho mayor, además de resultar en una serie de condiciones desfavorables desde el punto de vista de su implantación como módulo de procesamiento a bordo del sensor, con diferentes aspectos que pueden afectar de forma negativa al payload de la misión (peso, calentamiento, mantenimiento, etc.) En este sentido, las GPUs ofrecen una solución mucho más compacta, si bien es cierto que es preciso realizar un estudio detallado de las condiciones de tolerancia de las GPUs a requimientos extremos en cuanto a consumo y sensibilidad a radiación, necesario a la hora de calibrar la adaptabilidad de esta plataforma hardware especializada a misiones reales de observación remota de la tierra. Como línea futura de trabajo, una alternativa interesante a la metodología propuesta viene dada por la posibilidad de implementar algoritmos paralelos en clusters de GPUs, aprovechando las ventajas de ambos paradigmas de computación paralela. Referencias [1] A. F. H. Goetz, G. Vane, J. E. Solomon, and B. N. Rock, “Imaging spectrometry for Earth remote sensing,” Science, vol. 228, pp. 1147– 1153, 1985. [2] R. O. Green, M. L. Eastwood, C. M. Sarture, T. G. Chrien, M. Aronsson, B. J. Chippendale, J. A. Faust, B. E. Pavri, C. J. Chovit, M. Solis et al., “Imaging spectroscopy and the airborne visible/infrared imaging spectrometer (AVIRIS),” Remote Sensing of Environment, vol. 65, no. 3, pp. 227–248, 1998. [3] A. Plaza, J. A. Benediktsson, J. Boardman, J. Brazile, L. Bruzzone, G. Camps-Valls, J. Chanussot, M. Fauvel, P. Gamba, J. Gualtieri, J. C. Tilton, and G. Trianni, “Recent advances in techniques for hyperspectral image processing,” Remote Sensing of Environment, vol. 113, pp. 110–122, 2009. [4] C.-I. Chang, Hyperspectral Imaging: Techniques for Spectral Detection and Classification. Norwell, MA: Kluwer, 2003. [5] A. Plaza and C.-I. Chang, High performance computing in remote sensing. Boca Raton: CRC Press, 2007. [6] R. A. Schowengerdt, Remote Sensing: Models and Methods for Image Processing, 2nd ed. Academic Press: New York, 1997. [7] J. Boardman, “Automating spectral unmixing of AVIRIS data using convex geometry concepts,” Summaries of Airborne Earth Science Workshop, JPL Publication 93-26, pp. 111–114, 1993. [8] Research Systems, EVI User’s Guide. Boulder, CO: Research Systems, Inc., 2001. [9] J. Setoain, M. Prieto, C. Tenllado, A. Plaza and F. Tirado, “Parallel morphological endmember extraction using commodity graphics hardware,” IEEE Geosci. Remote Sensing Letters, vol. 43, pp. 441-445, 2007. [10] A. Plaza and C.-I Chang, “Clusters versus FPGA for parallel processing of hyperspectral imagery,” International Journal of High Performance Computing Applications, vol. 22, pp. 366-385, 2008. [11] A. Paz and A. Plaza, “Clusters versus GPUs for parallel automatic target detection in hyperspectral images,” EURASIP Journal on Advances in Signal Processing, aceptado.