• No se han encontrado resultados

CAPÍTULO 4: EL ALGORITMO KNN CON ENTRADAS NORMALIZADAS

4.1 Justificación

En el capítulo 3 se ha demostrado la alta dependencia que tiene el algoritmo KNN original de la componente espacial y cómo es fácilmente sustituible por el algoritmo de filtrado espacial. Esto deja abierto un nuevo interrogante: ¿Es realmente el análisis PCA prescindible o se puede aprovechar la información que obviamente contiene (ilustraciones 19 y 20) para mejorar los resultados?

Es una pregunta difícil de responder por el método de validación de resultados que se está utilizando, ya que es el neurocirujano el que debe concluir si mejoran o no. Hay que recordar que en el apartado 3 es posible dar por buenos los resultados ya que son iguales que otros que ya habían sido validados, pero en este apartado lo que se pretenderá es mejorar estos resultados.

Ante esto, se decide crear un nuevo algoritmo que sea capaz de trabajar para cualquier valor de

K y λ y realizar pruebas para observar cómo la variación de estos parámetros influye sobre el resultado, dejando la puerta abierta a futuros estudios por parte de médicos.

4.2 Diseño e implementación

Para el diseño del nuevo algoritmo es lógico mantener la estructura del original (y de cualquier KNN). De nuevo, si queremos evitar una carga computacional enorme, el primer paso es el establecimiento de un vecindario potencial antes del cálculo de las distancias. Lo más óptimo es elegir una ventana dependiente de λ. El problema es el comentado al final del apartado 3.2: con los valores de entrada del PCA disponibles, que no están acotados, no es posible establecer estos límites.

Existe otro problema, que es escoger unas cotas para los valores espaciales que hagan sus valores comparables a los que puedan tomar la componente espectral, haciendo la dimensión generada por PCA finalmente relevante.

Con el objetivo de solventar ambos problemas se decide que la mejor solución es normalizar las tres dimensiones [6]. Para las distancias espaciales, los valores de columna se dividen por el número de muestras por línea y los de línea por el número de líneas de la imagen. De esta forma la distancia entre el primer píxel y el último de una línea o columna será 1 independientemente de la resolución de la imagen. En cuanto a los valores del PCA, hay que recordar que son proyecciones de puntos sobre un vector director, por lo que lo interesante será mantener las proporciones entre los valores. Con este fin se normaliza siguiendo la ecuación (5), para el valor proporcionado por el análisis PCA para cada punto de la imagen (i).

39 𝑃𝐶𝐴𝑖_𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑎𝑑𝑜 = 𝑃𝐶𝐴𝑖− 𝑃𝐶𝐴𝑚í𝑛 𝑃𝐶𝐴𝑚á𝑥− 𝑃𝐶𝐴𝑚í𝑛 (5) Una vez realizado este procedimiento, sabemos que los valores pertenecientes a las tres dimensiones están acotados entre 0 y 1 y podemos analizar la forma de la ventana del vecindario

potencial, función de λ. Para visualizar este análisis lo más sencillo es situarse en el píxel 0 de la imagen, el primer píxel de la primera fila. La distancia entre este píxel y el último de la fila es 1, por lo que el producto de λ por la distancia máxima vale λ, y ahora la diferencia máxima entre valores del PCA es también 1. Por tanto, existe la posibilidad de que el valor del PCA pueda superar al espacial y hacer la distancia total mayor para un píxel cercano al 0 que para uno lejano

en la primera fracción λ de la imagen. Entonces el vecindario potencial del primer píxel será la

curva que mantenga la distancia espacial constante, uniendo el píxel muestras/λ de la primera línea y el píxel líneas/λ de la primera columna. Extrapolando al resto de píxeles, el potencial vecindario será una elipse de radios muestras/λ y líneas/λ. Por sencillez de programación, se dará a la ventana una forma rectangular de lados 2*líneas/λ y 2*muestras/λ.

Por ejemplo, Ilustración 26. Influencia de lambda sobre el vecindario potencial.

la ilustración 26 representa la ventana que debemos utilizar para el píxel 0 de una imagen de 360×240. En esta imagen se puede intuir la influencia que tendrá la correcta elección de λ

estableciendo un paralelismo entre color en esta imagen y PCA en nuestro algoritmo. Si se estuviera analizando con KNN una zona pequeña (de pocos puntos) de pelaje negro, hacer lambda demasiado grande hará que no se puedan encontrar vecinos en otras zonas de pelaje negro, por lo que seguramente se clasificaría como blanco (como sucede con el KNN original en grupos de pocos píxeles). En cambio, hacer λ demasiado pequeña hará que se clasifiquen como vecinos los píxeles de color más parecido de toda la imagen y apenas se note el efecto de filtrado si la imagen es suficientemente grande. Un ejemplo del primer caso es el rectángulo rojo representado en la ilustración 27, que representa la ventana para λ=40, ventana en la que la

mayoría de píxeles son blancos, a pesar de que el píxel central (el analizado) es negro. El segundo

caso, la ventana verde, se da cuando λ=20 y ya es un valor suficientemente pequeño como para encontrar muchos más posibles vecinos de color negro.

40

Ilustración 27. Ejemplos de ventana.

Se añadirán además dos limitaciones al algoritmo de cálculo de la ventana: la ventana nunca puede ser mayor que la imagen y la ventana nunca debe bajar de un valor mínimo dependiente del parámetro K. La primera limitación es lógica, no debemos buscar vecinos entre píxeles que no existen.

La segunda limitación viene dada porque si hacemos la ventana demasiado pequeña, el vecindario potencial no será lo suficientemente grande como para alojar a todos los vecinos. Es algo similar a lo que sucedía en el KNN original, donde eran necesarias 7 líneas para alojar los 40 vecinos de los píxeles de las esquinas. Se puede estimar este valor aproximando que K debe ser la cuarta parte del área de una circunferencia de radio el número mínimo de líneas, como se aprecia en la ecuación (6). Esta estimación viene dada porque los vecinos en clasificaciones meramente espaciales se agrupan rellenando círculos concéntricos, pero en los píxeles de las esquinas sólo está disponible algo más de la cuarta parte del área. Además, hay que destacar que en caso de tener que aplicar esta restricción sería suficiente con hacerlo en las esquinas de la imagen, teniendo los laterales en torno a la mitad y las zonas centrales en torno a una cuarta parte de ventana mínima, por lo que sería posible optimizar la búsqueda. En cualquier caso, llegado este extremo, lo mejor es la aplicación de un algoritmo de filtrado espacial.

𝑣𝑒𝑛𝑡𝑎𝑛𝑎_𝑚í𝑛𝑖𝑚𝑎 ≥ √4𝐾 𝜋

(6) Un algoritmo completo de determinación de la ventana dependiente de K y λ se detalla en la ilustración 27.

41

El procedimiento seguido en la ilustración 28 es una modificación de la que se utilizó en el algoritmo KNN original, limitando la ventana de búsqueda sólo en el eje y. Por tanto, no determina el vecindario potencial más óptimo, pero sí cumple correctamente con la función de limitar el número de operaciones. En esa ilustración se aprecia cómo primero se calcula el tamaño de ventana necesario (línea 11), para después calcular los píxeles de inicio y fin sobre la imagen vectorizada, tal y cómo se hacía en el algoritmo original.

Para optimizar el proceso, el mejor método es reconvertir los parámetros de entrada de nuevo en matrices (fueron vectorizados para su escritura sobre objetos buffer de OpenCL) y crear límites de análisis para las dos dimensiones (ilustración 29). Para ello se crean 4 variables, dos para los límites marcados en las columnas (eje x) y otras dos para las filas límite de la ventana (eje y). De nuevo se implementan medidas para evitar el acceso a posiciones de memoria fuera de la imagen y para evitar que la ventana no se haga tan pequeña que no pueda alojar a todos los vecinos (variable safebordersize).

1 Algoritmo Ventana_variable_filas

2 ENTRADAS

3 lines; número de líneas de la imagen.

4 samples; número de píxeles por línea en la imagen.

5 lambda; parámetro lambda del algoritmo KNN con componentes normalizadas 6 K; parámetro que indica el número de vecinos que KNN debe buscar

7 block_x; columna del píxel analizado. 8 block_y; línea del píxel analizado.

9 ACCIONES

10 INICIO

11 size_y = lines / lambda+1;

12 SI size_y > lines ENTONCES

13 size_y = lines;

14 FIN SI

15 safebordersize = ((4K / pi) ^ (1/2)) + 1; 16 SI size_y < safebordersize ENTONCES

17 size_y = safebordersize;

18 FIN SI;

19 SI block_y < size_y ENTONCES

20 start = 0;

21 end = start + (block_y + size_y) * samples + block_x - 1; 22 SINO SI block_y >= size_y Y block_y<(lines-size_y) ENTONCES

23 start = (block_y – size_y) * samples + block_x;

24 end = start + 2 * size_y * samples - 1;

25 SINO

26 start = (block_y – size_y) * samples + block_x;

27 end = lines * samples - 1;

28 FIN SI

29 FIN

30 SALIDAS

31 start; primer píxel que se considera potencial vecino. 32 end; último píxel considerado potencial vecino.

42

1 Algoritmo Ventana_variable_optimizada

2 ENTRADAS

3 lines; número de líneas de la imagen.

4 samples; número de píxeles por línea en la imagen.

5 lambda; parámetro lambda del algoritmo KNN con componentes normalizadas 6 K; parámetro que indica el número de vecinos que KNN debe buscar

7 block_x; columna del píxel analizado. 8 block_y; línea del píxel analizado.

9 ACCIONES

10 INICIO

11 size_y = lines/lambda+1;

12 size_x = samples/lambda+1;

13 SI size_y > lines ENTONCES

14 size_y = lines;

15 FIN SI

16 SI size_x > samples ENTONCES

17 size_y = samples;

18 FIN SI

19 safebordersize = ((4K/pi)^(1/2))+1;

20 SI size_y < safebordersize O size_x < safebordersize ENTONCES

21 size_y = safebordersize;

22 size_x = safebordersize;

23 FIN SI

24 SI block_y < size_y ENTONCES

25 start_y = 0;

26 end_y = block_y + size_y;

27 SINO SI block_y >= size_y Y block_y <= lines-size_y ENTONCES

28 start_y = block_y - size_y;

29 end_y = block_y + size_y;

30 SINO

31 start_y = block_y - size_y;

32 end_y = lines;

33 FIN SI

34 SI block_x < size_x ENTONCES

35 start_x = 0;

36 end_x = block_x + size_x;

37 SINO SI block_x >= size_x Y block_x <= samples - size_x ENTONCES

38 start_x = block_x - size_x;

39 end_x = block_x + size_x;

40 SINO

41 start_x = block_x - size_x;

42 end_x = samples;

43 FIN SI

44 FIN

45 SALIDAS

46 start_y; primera línea que contiene píxeles de la ventana. 47 end_y; última línea que contiene píxeles de la ventana. 48 start_x; primera columna que contiene píxeles de la ventana. 49 end_x; última columna que contiene píxeles de la ventana.

43

4.3 Análisis de resultados

Una consecuencia importante de utilizar una ventana variable es que el tiempo de ejecución del algoritmo también se hace variable: cuantos más potenciales vecinos haya, más distancias será necesario calcular y más operaciones será necesario realizar.

Tabla 3. Tiempos máximos de ejecución del KNN con entradas normalizadas.

La solución escogida para realizar las pruebas es la que utiliza el algoritmo de la ilustración 26, lo que significa que el tiempo de ejecución no es óptimo. Aun así, este algoritmo sirve para acotar los tiempos de ejecución sobre las dos muestras, ya que su ventana de búsqueda de vecinos para lambda unidad es la misma que utilizando la ventana optimizada del algoritmo de la ilustración 28, es decir, toda la imagen para cualquier píxel analizado. La implementación de este algoritmo se realiza en OpenCL sobre el MPPA, utilizando los 256 núcleos de cálculo para el procesado. El tiempo de ejecución para λ≤1 será el tiempo máximo que el MPPA puede tardar en obtener los resultados para una determinada resolución de imagen, que en las pruebas será la de las capturas OP20C1 y OP8C2. Se puede estimar que para la ventana lineal el tiempo de procesado baja de manera directamente proporcional a λ, mientras que en la optimizada lo hará con λ2. Estas medidas se recogen en la tabla 3.

Ilustración 30. Comparación de resultados de KNN normalizado (a) con λ=52 y algoritmo original (b) con λ=1. La cota mínima de tiempo de ejecución es un parámetro que también depende de K, ya que, a mayor K, más grande será la ventana mínima. Con la ventana optimizada, este tiempo viene más marcado por la lectura y escritura de datos del MPPA que por la realización de operaciones. Con la ventana utilizada podemos utilizar como mínimo los tiempos del algoritmo original paralelizado (apartado 3.4). En cualquiera de los dos casos, como ya se ha mencionado en otras ocasiones, si nos encontramos en la situación de estar trabajando con la ventana mínima, lo interesante es utilizar un algoritmo de filtrado espacial y la utilización del MPPA es

Algoritmo Tiempo de ejecución máximo para OP20C1

Tiempo de ejecución máximo para OP8C1

λ=1, KNN normalizado

44

contraproducente, ya que de nuevo los tiempos de lectura y escritura sobre el bus PCIe sería mucho más grande que el propio tiempo de procesado.

En cuanto a las clasificaciones obtenidas, cabe destacar que los resultados más parecidos a los

del algoritmo original se logran con λ≈50, lo que nos puede servir como confirmación adicional

de la poca influencia que la componente espectral tiene en él. En la ilustración 30 se pueden comparar los resultados del algoritmo KNN con entradas normalizadas y λ=52 y el original con λ=1, ambos con K=40.

En la tabla 4 se ha representado un conjunto de resultados con el fin de dar una orientación sobre cómo la variación de λ y K afectan al algoritmo. El aumento de K con una λ relativamente

alta supone el filtrado de mayores grupos de píxeles de una clase rodeados de píxeles de otras, pero también cierta pérdida de información como, por ejemplo, los vasos sanguíneos más estrechos. El aumento de K con λ pequeña supone aumentar las probabilidades de que nuestro

píxel acabe clasificado dentro de la clase más común de la imagen.

De la misma manera, la reducción de λ supone que el píxel puede tener vecinos más lejanos, más parecidos espectralmente a él. En la práctica supone la visualización de las clases más entremezcladas, por lo que la utilización de una lambda pequeña no soluciona el problema para el que se diseñó el KNN original.

No se puede extraer información sobre la calidad de estor resultados sin integrar este algoritmo en el sistema completo y preguntar a los especialistas, cuestiones que quedan alejadas de las posibilidades de este proyecto.

45 K λ=0,01 λ=1 λ=10 1 10 20 40 80 2 00

46

CAPÍTULO 5: CONCLUSIONES

Para la realización de este proyecto se partió de la idea de paralelizar un algoritmo KNN, de eficacia demostrada, necesario para suavizar los resultados obtenidos por SVM sobre imágenes hiperespectrales. Tras una aceleración de los tiempos de ejecución, posible gracias a la utilización de hardware específico, es el análisis de los resultados el que abre nuevos interrogantes sobre la mejor forma de abordar el problema. El proceso desemboca en el desarrollo de dos soluciones complementarias, el algoritmo de filtrado espacial y el algoritmo KNN con entradas normalizadas, de cuyo desarrollo hemos podido extraer varias conclusiones: a) A pesar de la sencillez conceptual del algoritmo KNN, su aplicación conlleva una gran carga computacional. Esto obliga a aplicaciones en tiempo real, como es el caso, a la utilización de hardware muy específico con software correctamente desarrollado. En este caso la elección del MPPA resulta muy adecuada ya que se consigue una aceleración sorprendente.

b) El algoritmo KNN original, del que se parte como ejemplo, tiene una elevada dependencia de la componente espacial. Esto hace que sea posible su sustitución por un algoritmo de filtrado espacial, mucho menos pesado y que no requiere el paso previo del PCA.

c) La normalización de entradas del KNN hace más comprensible su funcionamiento, pudiéndose realizar test más exhaustivos.

La conclusión general que se puede extraer de este trabajo es que todo indica que en esta aplicación es más conveniente la aplicación de un algoritmo de filtrado espacial que un KNN. La función del algoritmo, que es el suavizado de la imagen procedente de SVM, es desempeñada de forma muy similar por ambos, pero el coste computacional del KNN lo desaconseja. Siguiendo esta recomendación, se pueden tener unos resultados prácticamente idénticos, en muy poco tiempo y sin hardware específico (al menos para la ejecución de este algoritmo).

Como líneas futuras, se pueden distinguir dos, la primera de ellas más fácil y susceptible de ser seguida a corto plazo:

a) Prueba de funcionamiento del algoritmo de filtrado espacial con más muestras. Está aún por demostrar que el comportamiento del algoritmo de filtrado espacial sea igual que KNN en todos los casos posibles, aunque las pruebas aquí expuestas así lo indiquen. b) Prueba exhaustiva del algoritmo KNN con entradas normalizadas y selección de

parámetros de funcionamiento más adecuados si así se decidiera. Este proceso es más largo y tedioso, implicando además necesariamente a personal médico. Se trataría de realizar pruebas con el KNN con entradas normalizadas, para ver si alguna configuración de parámetros consiguiera una mejora de resultados que justificase la carga computacional.

47

CAPÍTULO 6: PRESUPUESTO

La materialización de una de las dos soluciones propuestas en este proyecto no tiene sentido sin integrarse dentro del sistema completo de detección de cáncer cerebral. Por tanto, en este capítulo sólo se tendrá en cuenta el coste económico que tendría la sustitución del algoritmo KNN original por una de estas soluciones. La integración del algoritmo de filtrado resultaría notablemente más barata dado que la implementación es muy sencilla y requiere pruebas de funcionamiento menos exhaustivas.

La materialización del algoritmo KNN con entradas normalizadas implica un proceso de validación mucho más complejo, por lo que los costes serían más elevados.

En cualquiera de los casos anteriores, será necesario contar con el equipo necesario para la ejecución del software. Se estima una vida útil de los equipos de 4 años.

Concepto Número de horas Precio por hora (€) Precio total (€)

Ingenieros junior (implementación) 50 30 1500 Ingenieros senior (supervisión) 8 60 480 Neurocirujanos (validación) 4 60 240 TOTAL 2220€

Tabla 5. Costes de materialización del algoritmo de filtrado espacial.

Concepto Número de horas Precio por hora (€) Precio total (€)

Ingenieros junior (implementación) 200 30 6000 Ingenieros senior (supervisión) 50 60 3000 Neurocirujanos (validación) 20 60 1200 TOTAL 10200€

Tabla 6. Costes de materialización del algoritmo KNN con entradas normalizadas.

Concepto Precio total (€)

MPPA 12000

TOTAL AMORTIZABLE SEMESTRAL 1500€

48

REFERENCIAS

[1] R. Lazcano, "Generación de una librería RVC-CAL para la etapa de estimación de abundancias en el proceso de análisis de imágenes hiperespectrales", Proyecto Fin de Grado, Escuela Técnica Superior de Ingeniería y Sistemas de Telecomunicación, Universidad Politécnica de Madrid, 2014.

[2] D. Madroñal, "Generación de una librería RVC-CAL para la etapa de determinación de endmembers en el proceso de análisis de imágenes hiperespectrales", Proyecto Fin de Grado, Escuela Técnica Superior de Ingeniería y Sistemas de Telecomunicación, Universidad Politécnica de Madrid, 2014.

[3] D. Manolakis, G. Shaw, “Detection algorithms for hyperspectral imaging applications”,

IEEE Signal Processing Magazine, vol. 19, 2002.

[4] J. Bioucas-Dias, A. Plaza, G. Camps-Valls, P. Scheunders, N. Nasrabadi, J. Chanussot, "Hyperspectral remote sensing data analysis and future challenges", IEEE Geosci. Remote Sens. Mag., vol. 1, no. 2, pp. 6 -36, 2013.

[5] A. Martín, P. Martín “Colorimetría”, Ciencia 3 SL, 2000.

[6] K. Huang, S. Li, X. Kang, L. Fang “Spectral-Spatial Hyperspectral Image Classification

Based on KNN”, Springer Science+Business Media, New York, 2015.

[7] S. McIntosh-Smith, T. Deakin “Hands on OpenCL” Khronos Initiative for Training and Education, 2014.

[8] M. Scarpino, “OpenCL in Action” Manning books, 2012.

[9] “Kalray OpenCL 1.2 Training” Kalray SA, 2015.

[10]S.M. Pelkey et al., “CRISM multispectral summary products: Parameterizing mineral

diversity on Mars from reflectance”, J. Geophys. Res., vol. 112, 2007.

[11]S. Prasad, L.M. Bruce, “Limitations of principal component analysis for hyperspectral target recognition”, IEEE Geoscience and Remote Sensing Letters, 5(4), 625-629. [12]H. Fabelo, S. Ortega, D. Ravi, B. R. Kiran, C. Sosa, H. Bulstrode,D. Bulters, S. Kabwama,

D. Madroñal, R. Lazcano, G. M. Callico, G. Yang, B. Stanciulescu, A. Szolna, J. F. Pineiro, A. J. O’Shanahan, S. Bishop, R. Salvador, E. Juárez, R. Sarmiento, “Accurate Delimitation

of Glioblastoma Boundaries by Exploiting Spatial-Spectral Features from Hyperspectral Images”, Science Translational Medicine, 2012.

49

Documento similar