Implementación Paralela del Algoritmo Pixel Purity Index

Anuncio
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.
Descargar