Stream Processing of a Neural Classifier II
M. Martínez-Zarzuela (University of Valladolid, Spain), F. J. Díaz Pernas (University of Valladolid, Spain), D. González Ortega (University of Valladolid, Spain), J. F. Díez Higuera (University of Valladolid, Spain) and M. Antón Rodríguez (University of Valladolid, Spain)
Copyright: © 2009
This article presents a real-time Fuzzy ART neural classifier for skin segmentation implemented on a Graphics Processing Unit (GPU). GPUs have evolved into powerful programmable processors, becoming increasingly used in time-dependent research fields such as dynamics simulation, database management, computer vision or image processing. GPUs are designed following a Stream Processing Model and each new generation of commodity graphics cards incorporates rather more powerful and flexible GPUs (Owens, 2005). In the last years General Purpose GPU (GPGPU) computing has established as a well-accepted application acceleration technique. The GPGPU phenomenon belongs to larger research areas: homogeneous and heterogenous multi-core computing. Research in these fields is driven by factors as the Moore’s Gap. Today’s uni-processors follow a 90/100 rule, where 90 percent of the processor is passive and 10 percent is doing active work. By contrast, multi-core processors try to follow the same general rule but with 10 percent passive and 90 percent active processors when working at full throughput. Single processor Central Processing Units (CPUs) were designed for executing general purpose programs comprised of sequential instructions operating on single data. Designers tried to optimize complex control requirements with minimum latency, thus many transistors in the chip are devoted to branch prediction, out of order execution and caching. In the article Stream Processing of a Neural Classifier I several terms and concepts related to GPGPU were introduced. A detailed description of the Fuzzy ART ANN implementation on a commodity graphics card, exploiting the GPU’s parallelism and vector capabilities, was given. In this article, the aforementioned Fuzzy ART GPU-designed implementation is configured for robust real-time skin recognition. Both learning and testing processes are done on the GPU using chrominance components in TSL (Tint, Saturation and Luminance) color space. The Fuzzy ART ANN implementation recognizes skin tone pixels at a rate of 270 fps on an NVIDIA GF7800GTX GPU.
Human body parts detection has important applications as a first step in many high-level computer vision tasks such as personal identification, video indexing systems and Human-Machine Interfaces (HMI). HMI needs real-time video processing while consuming as few system resources as possible. Skin color is widely used as a cue for detecting and tracking targets containing skin, such as faces and hands in an image. The final objective of skin color detection is to build a decision rule to segment skin and non-skin pixels in an image efficiently. The simplest solution defines skin colors as those that have a certain range of values in the coordinates of a color space. OpenVidia was one of the first computer-vision oriented developments able to run skin tone segmentation on the GPU (Fung, 2005). For this purpose OpenVidia uses RGB (Red, Green and Blue) to HSV (Hue, Saturation and Value) color conversion and threshold filtering.
Statistical approaches for skin segmentation are based on the assumption that skin colors follow a certain distribution which can be estimated. These approaches normally make use of the chrominance components in a color space, thresholds and tunable parameters.
Neural Network approaches have been proposed to learn skin color distribution. Karlekar et al. used a MLP neural network to classify pixels into skin and non-skin colors (Karlekar & Desai, 1999). More complex models have been proposed to deal with changing conditions, such as varying illumination in the images. Sahbi et al. used an ANN for coarse level skin detection, and then the areas found were subjected to Gaussian color modeling with a fuzzy clustering approach (Sahbi & Boujemaa, 2000). Martínez-Zarzuela et al. used a GPU-based Fuzzy ART ANN implementation to learn skin colors in TSL (Tint, Saturation and Luminance) color space (Martínez-Zarzuela, Díaz, González, Díez & Antón, 2007). In their system, Fuzzy ART categorization process takes advantage of every fragment processor available in the GPU, so that several pixels can be tested simultaneously by the network, allowing recognition at high frame rates.
Key Terms in this Chapter
TSL Color Space: Color space based on Intensity Hue Saturation (IHS) color model. A color in this space is specified by Tint (T), Saturation (S) and Luminance (L) values.
Stream Processing: A paradigm for the execution of parallel processing operations exploiting data-level parallelism rather than task-level parallelism that provides incredible performance with minimal programming effort.
Fuzzy ART: Evolution of the ART1 neural network capable of learning normalized analog input patterns in an unsupervised way through the use of fuzzy operators.
Heterogeneous Multi-Core Computing: Design and analysis of algorithms and applications for heterogeneous multi-core processor architectures (e.g. IBM Cell processor).
Homogeneous Multi-Core Computing: Design and analysis of algorithms and applications for homogeneous multi-core processor architectures (e.g. GPUs).
ART (Adaptive Resonance Theory): Learning theory developed by S. Grossberg that is used in competitive neural systems and includes short-term-memory (STM) and long-term-memory (LTM) processes.
Moore’s Gap: Refers to the relatively modest incremental performance gains brought about by the increased number of transistors on current uni-processor dies despite increases in clock speeds.
GPGPU (General-Purpose computation on GPUs): A recent trend in computer science consisting in the use of the Graphics Processing Unit (GPU), for doing expensive computational tasks rather than just computer graphics.
GPU (Graphics Processing Unit): A dedicated graphics rendering device very efficient at manipulating and displaying computer graphics, thanks to its highly parallel structure.
CUDA: A GPGPU technology that allows a programmer to use the C programming language to code algorithms for execution on the GPU. CUDA requires an NVIDIA GPU and special stream processing drivers.