Resumen:
|
The hyperspectral vision is nowadays a technology in growth and with a great potential to turn into one of the most important quality control methods of food products. It is possible to incorporate this technology in ...[+]
The hyperspectral vision is nowadays a technology in growth and with a great potential to turn into one of the most important quality control methods of food products. It is possible to incorporate this technology in multitude of applications, such as detection of foreign bodies, identification of rottenness in food or its quality control.
Nevertheless, this technology presents two disadvantages: great quantity of information processed by hyperspectral algorithms and high rates of production needed in industrial areas. For these reasons, simple CPUs are often unable to process such hyperspectral calculations and process and predict hyperspectral images with a given speed. Therefore, it will be required to use additional elements to ensure that CPUs perform these calculations in such a way as to meet their time and speed specifications.
In this Final Project, the element used to ensure a proper CPU performance is a graphics processing unit (GPU). Therefore, the concept of GPUGPU (Computation of General Intention) will be applied to the GPU in units of graphical processing, in order to accelerate algorithms through the advantages of parallel programming.
Afterwards in the present Final Project, factors of acceleration obtained using the concept of GPGPU will be analyzed by means of different GPUs applying classification algorithms in hyperspectral images.
To apply these classification algorithms in hyperspectral images, images of three samples of pork loin with foreign bodies were obtained using a NIR camera. Once images of the samples were obtained in three packages, two classification algorithms of hyperspectral images were applied for each package in two different CPUs with their GPUs, in order to compare execution times in every system.
As for the GPUs, two devices of the manufacturer NVIDA were selected, in particular, GTX 260 and GTX 560Ti. GTX 260 features eight multiprocessors, with a total of 192 cores, while GTX 560Ti features eight multiprocessors, with a total of 384 cores.
First of all, a sequential version of the hyperspectral algorithms applied to each CPU is presented and their execution times are measured for later comparison. Subsequently, a parallel version of the hyperspectral algorithms is introduced. It is applied on both devices mentioned above to measure their execution times in order to compare them with those obtained through the sequential version. This parallel version was developed using CUDA, a C/C++'s extension which allows to implement parallelism in tasks and information processing with different levels of granularity on NVIDIA's GPUs.
The concept of speed up is applied to the results above. This concept is an indicator of parallel algorithms improvement in comparison to sequential algorithms. Indicators obtained are factors of about 2.000, which indicates that parallel algorithms run much faster than sequential ones. It makes it possible, therefore, to apply hyperspectral vision to industrial environments by means of this GPU technology.
[-]
Hoy en día la visión hiperespectral es una técnica en crecimiento y con un gran potencial para convertirse en uno de los métodos más importantes para el control de calidad de productos alimenticios. Es posible incorporar ...[+]
Hoy en día la visión hiperespectral es una técnica en crecimiento y con un gran potencial para convertirse en uno de los métodos más importantes para el control de calidad de productos alimenticios. Es posible incorporar esta técnica en multitud de aplicaciones, como pueden ser para la detección de cuerpos extraños, la identificación de podredumbre en alimentos o el control de la calidad de los mismos.
Sin embargo, esta técnica presenta dos inconvenientes: la gran cantidad de datos que procesa un algoritmo hiperespectral y las altas tasas de producción que se requieren en un ámbito industrial. Esto hace que muchas veces una simple CPU sea incapaz de procesar todos estos cálculos hiperespectrales, preprocesado y predicción de las imágenes hiperespectrales, a una velocidad especificada. Por lo tanto, habrá que utilizar algún elemento adicional que ayude a la CPU a realizar todos estos cálculos de una manera que pueda cumplir las especificaciones requeridas respecto a de tiempos o velocidades.
El elemento que se ha utilizado en este proyecto final de carrera para ayudar a la CPU ha sido una Unidad de Procesado de Gráficos (GPU). Por lo tanto, a la GPU se le aplicará el concepto de GPUGPU, Computación de Propósito General en unidades de procesamiento gráfico, para acelerar algoritmos gracias a las ventajas que presenta la programación paralela.
Luego, en el presente proyecto final de carrera se analizará los factores de aceleración obtenidos utilizando este concepto, GPGPU, mediante diferentes GPUs aplicando algoritmos de clasificación en imágenes hiperespectrales.
Para aplicar estos algoritmos de clasificación en imágenes hiperespectrales se adquirieron imágenes de tres muestras de lomo de cerdo con cuerpos extraños mediante una cámara NIR. Una vez adquiridas las imágenes para las tres muestras en tres tomos, se aplicaron dos algoritmos de clasificación de imágenes hiperespectrales para cada tomo en dos CPUs diferentes con sus respectivas GPUs, con el fin de comparar tiempos de ejecución en cada sistema.
En cuanto a las GPUs se seleccionaron dos dispositivos del fabricante NVIDA, concretamente, la GTX 260 y la GTX 560Ti. LA GTX 260 presenta ocho multiprocesadores, con un total de 192 núcleos, mientras que la GTX 560Ti presenta ocho multiprocesadores , con un total de 384 núcleos.
Se presenta primeramente una versión secuencial de los algoritmos hiperespectrales aplicados a cada CPU y a los que se les mide el tiempo de ejecución para su posterior comparación. A continuación, se introduce una versión paralela de los algoritmos hiperespectrales, aplicada sobre los dos dispositivos mencionados anteriormente y para mediciones de tiempo de ejecución con vistas a la comparación con la versión secuencial. Esta versión paralela fue desarrollada mediante CUDA, una extensión de C/C++ que permiten implementar el paralelismo en el procesamiento de tareas y datos con diferentes niveles de granularidad sobre GPUs de NVIDIA.
A los resultados anteriores se aplica el concepto de speed up, el cual indica la mejora de un algoritmo paralelo respecto a un algoritmo secuencial. Los speeds up obtenidos están en torno a un factor de 2.000, lo que indica que los algoritmos paralelos se ejecutan mucho más rápido y posibilita llevar esta técnica, visión hiperespectral, mediante esta tecnología, GPU, a un entorno industrial.
[-]
|