Fast neuromimetic object recognition using FPGA outperforms GPU implementations

14
1 Fast Neuromimetic Object Recognition using FPGA Outperforms GPU Implementations Garrick Orchard, Jacob G. Martin, R. Jacob Vogelstein, and Ralph Etienne-Cummings, Fellow, IEEE Abstract—Recognition of objects in still images has tradition- ally been regarded as a difficult computational problem. Although modern automated methods for visual object recognition have achieved steadily increasing recognition accuracy, even the most advanced computational vision approaches are unable to obtain performance equal to that of humans. This has led to the creation of many biologically-inspired models of visual object recognition, among them the HMAX model. HMAX is traditionally known to achieve high accuracy in visual object recognition tasks at the expense of significant computational complexity. Increasing complexity, in turn, increases computation time, reducing the number of images that can be processed per unit time. In this paper we describe how the computationally intensive, biologically inspired HMAX model for visual object recognition can be mod- ified for implementation on a commercial Field Programmable Gate Array, specifically the Xilinx Virtex 6 ML605 evaluation board with XC6VLX240T FPGA. We show that with minor modifications to the traditional HMAX model we can perform recognition on images of size 128×128 pixels at a rate of 190 images per second with a less than 1% loss in recognition accuracy in both binary and multi-class visual object recognition tasks. I. I NTRODUCTION Object recognition has received a lot of attention in recent years and is an important step towards building machines which can understand and interact meaningfully with their environment. In this context, both a high recognition accuracy and a short recognition time are desirable. By shortening recognition time even further, we foresee applications that in- clude rapidly searching and categorizing images on the internet based on features extracted from their pixel content on the fly. Many currently available image search and characterization platforms rely on image metadata and watermarks rather than the images’ actual pixel values, while those platforms which do make use of actual pixel values typically rely on previously extracted image features rather than creating and extracting new features on the fly. Manuscript received September 2, 2011, revised January 10, 2012, revised April 10, 2012, revised June 10, 2012, revised Sept 15, 2012, revised Nov 15, 2012, revised March 5, 2013, accepted March 15, 2013. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressly or implied, of the Defense Advanced Research Projects Agency of the U.S. Government. Garrick Orchard, R. Jacob Vogelstein, and Ralph Etienne-Cummings are with the Department of Electrical and Computer Engineering at The Johns Hopkins University, Baltimore, Maryland 21218 USA (Email: gor- [email protected], [email protected], [email protected]) Garrick Orchard is also with the Singapore Institute of Neurotechnology at the National University of Singapore in Singapore, 117456, Singapore (Email:[email protected]) Jacob G. Martin and R. Jacob Vogelstein are with the The Johns Hopkins University Applied Physics Laboratory in Laurel, Maryland 20723 USA (Email: [email protected], [email protected]) The challenge of consistently recognizing an object is com- plicated by the fact that the appearance of the object can vary significantly depending on its location, orientation, and scale within an image. Reliable object recognition must therefore be invariant to translation, scale, and orientation. Some methods of object recognition incorporate these invariances, such as the Scale Invariant Feature Transformation (SIFT) [1] or Speeded Up Robust Features (SURF) [2]. These models achieve good recognition rates, but still fall far short of the recognition rates achieved by humans. There is evidence suggesting that after viewing an object for the first time, a biological system is capable of recognizing that object again at a novel position and scale [3]. The object can also be recognized if it is slightly rotated, but the recognition accuracy decreases when the object is rotated too far from a familiar view [3]. A biologically inspired model which shares this property of scale and translation invariance, but also achieves only limited rotation invariance is the Hierarchical Model and X (HMAX) [4] in which the ‘X’ represents a non linearity. Jarrett et al. [5] investigated which architecture is best for object recognition. They found that non-linearities are the most important feature in such models. Their results show that rectification and local normalization significantly improve recognition accuracy. Their results also indicate that a multi- stage method of feature extraction outperforms single stage feature extraction. The HMAX model is a multistage model which mixes Gabor filters in the first stage with learned filters in the second. HMAX is intended to model the first 100-200ms of object recognition due to purely feed-forward mechanisms in the ventral visual pathway [4]. HMAX is biologically inspired and incorporates rectification and local-normalization non-linearities, both of which were later recommended by Jarret et al. [5] as important properties for object recognition models. In this paper, we focus specifically on the version of HMAX described in [6]. The recognition accuracy of HMAX is well below that of the biological counterparts it attempts to mimic for real world tasks because it only mimics the first stages of the feed-forward pathways. However, HMAX performs com- parably to its biological counterparts on rapid characterization tasks in which a stimulus is presented long enough for feed forward recognition to take place, but short enough to prevent top down feedback from having an effect [7], [8]. HMAX provides a valuable step towards achieving higher recognition accuracy and better understanding the operation of the ventral stream in visual cortex. Biological processing systems (net- works of neurons) are inherently distributed and massively parallel. If we intend to achieve comparable recognition rates

Transcript of Fast neuromimetic object recognition using FPGA outperforms GPU implementations

1

Fast Neuromimetic Object Recognition using FPGAOutperforms GPU Implementations

Garrick Orchard, Jacob G. Martin, R. Jacob Vogelstein, and Ralph Etienne-Cummings, Fellow, IEEE

Abstract—Recognition of objects in still images has tradition-ally been regarded as a difficult computational problem. Althoughmodern automated methods for visual object recognition haveachieved steadily increasing recognition accuracy, even the mostadvanced computational vision approaches are unable to obtainperformance equal to that of humans. This has led to the creationof many biologically-inspired models of visual object recognition,among them the HMAX model. HMAX is traditionally knownto achieve high accuracy in visual object recognition tasks atthe expense of significant computational complexity. Increasingcomplexity, in turn, increases computation time, reducing thenumber of images that can be processed per unit time. In thispaper we describe how the computationally intensive, biologicallyinspired HMAX model for visual object recognition can be mod-ified for implementation on a commercial Field ProgrammableGate Array, specifically the Xilinx Virtex 6 ML605 evaluationboard with XC6VLX240T FPGA. We show that with minormodifications to the traditional HMAX model we can performrecognition on images of size 128×128 pixels at a rate of 190images per second with a less than 1% loss in recognitionaccuracy in both binary and multi-class visual object recognitiontasks.

I. INTRODUCTION

Object recognition has received a lot of attention in recentyears and is an important step towards building machineswhich can understand and interact meaningfully with theirenvironment. In this context, both a high recognition accuracyand a short recognition time are desirable. By shorteningrecognition time even further, we foresee applications that in-clude rapidly searching and categorizing images on the internetbased on features extracted from their pixel content on the fly.Many currently available image search and characterizationplatforms rely on image metadata and watermarks rather thanthe images’ actual pixel values, while those platforms whichdo make use of actual pixel values typically rely on previouslyextracted image features rather than creating and extractingnew features on the fly.

Manuscript received September 2, 2011, revised January 10, 2012, revisedApril 10, 2012, revised June 10, 2012, revised Sept 15, 2012, revised Nov15, 2012, revised March 5, 2013, accepted March 15, 2013. The views andconclusions contained in this document are those of the authors and should notbe interpreted as representing the official policies, either expressly or implied,of the Defense Advanced Research Projects Agency of the U.S. Government.

Garrick Orchard, R. Jacob Vogelstein, and Ralph Etienne-Cummingsare with the Department of Electrical and Computer Engineering at TheJohns Hopkins University, Baltimore, Maryland 21218 USA (Email: [email protected], [email protected], [email protected])

Garrick Orchard is also with the Singapore Institute of Neurotechnologyat the National University of Singapore in Singapore, 117456, Singapore(Email:[email protected])

Jacob G. Martin and R. Jacob Vogelstein are with the The Johns HopkinsUniversity Applied Physics Laboratory in Laurel, Maryland 20723 USA(Email: [email protected], [email protected])

The challenge of consistently recognizing an object is com-plicated by the fact that the appearance of the object can varysignificantly depending on its location, orientation, and scalewithin an image. Reliable object recognition must therefore beinvariant to translation, scale, and orientation. Some methodsof object recognition incorporate these invariances, such as theScale Invariant Feature Transformation (SIFT) [1] or SpeededUp Robust Features (SURF) [2]. These models achieve goodrecognition rates, but still fall far short of the recognition ratesachieved by humans. There is evidence suggesting that afterviewing an object for the first time, a biological system iscapable of recognizing that object again at a novel positionand scale [3]. The object can also be recognized if it isslightly rotated, but the recognition accuracy decreases whenthe object is rotated too far from a familiar view [3]. Abiologically inspired model which shares this property ofscale and translation invariance, but also achieves only limitedrotation invariance is the Hierarchical Model and X (HMAX)[4] in which the ‘X’ represents a non linearity.

Jarrett et al. [5] investigated which architecture is best forobject recognition. They found that non-linearities are themost important feature in such models. Their results showthat rectification and local normalization significantly improverecognition accuracy. Their results also indicate that a multi-stage method of feature extraction outperforms single stagefeature extraction. The HMAX model is a multistage modelwhich mixes Gabor filters in the first stage with learned filtersin the second. HMAX is intended to model the first 100-200msof object recognition due to purely feed-forward mechanismsin the ventral visual pathway [4]. HMAX is biologicallyinspired and incorporates rectification and local-normalizationnon-linearities, both of which were later recommended byJarret et al. [5] as important properties for object recognitionmodels.

In this paper, we focus specifically on the version of HMAXdescribed in [6]. The recognition accuracy of HMAX is wellbelow that of the biological counterparts it attempts to mimicfor real world tasks because it only mimics the first stages ofthe feed-forward pathways. However, HMAX performs com-parably to its biological counterparts on rapid characterizationtasks in which a stimulus is presented long enough for feedforward recognition to take place, but short enough to preventtop down feedback from having an effect [7], [8]. HMAXprovides a valuable step towards achieving higher recognitionaccuracy and better understanding the operation of the ventralstream in visual cortex. Biological processing systems (net-works of neurons) are inherently distributed and massivelyparallel. If we intend to achieve comparable recognition rates

2

by mimicking biological processing, then we too should usedistributed and massively parallel hardware which is suited tothe task.

Originally, object recognition models were typically run onsequential processors (CPUs), for which Mutch and Lowedeveloped the Feature Hierarchy Library (FHLib) tool in 2006[9] for implementing hierarchical models such as HMAX.CPUs require little effort to program and offer great flexibility,allowing them to be used for a large variety of tasks, butthe sequential nature of their processing makes them illsuited to an application such as HMAX. Modern CPUs arecapable of impressive performance and allow some parallelprocessing, but depending on the nature of the algorithm tobe implemented, it can be very difficult, if not impossible,to fully utilize the theoretical computational capacity of suchdevices. In 2008 Chikkerur [10] reported a multithreadedCPU implementation of HMAX, showing that the increasedparallelism outperformed previous CPU implementations.

GPUs allow even more parallel processing paths, but writ-ing code for GPUs requires a larger effort than for CPUs.GPUs also offer greater control of data flow and storageduring computation, which allows programmers to makegreater use of the theoretical computational capacity. In thesame paper as his multithreaded CPU implementation [10],Chikkerur presented a GPU implementation of HMAX witheven more parallel processing paths, which outperformed themultithreaded CPU implementation by 3×-10× depending oninput image size. Soon GPU technologies were being usedextensively for HMAX and in 2010 Mutch and Lowe releasedthe Cortical Network Simulator (CNS) [11] which uses a GPUfor processing and can speedup the HMAX model by 97×compared to the FHLib software it was intended to replace.Later in 2010, Sedding et al. [12] presented another GPUimplementation of HMAX which is claimed to outperform theCNS implementation in both accuracy and speed. There arealso many other examples in the literature of the applicationof GPU processing to object recognition [13]–[16].

Application Specific Integrated Circuits (ASICs) offer aneven greater level of control than GPUs through intentionaldesign of the hardware to suit the task at hand, but oncefabricated, an ASIC is typically ill suited to other applications.Furthermore, ASICs require a large design effort, a long timeto implement (while waiting for fabrication), and come athigh cost, which excludes them from use in many cases.Nevertheless, high performance still makes ASICs an attractiveoption for some tasks. An example of such work is the objectrecognition processor developed by Kim et al. [17] which canrecognize up to 10 objects at a rate of 60fps at an image sizeof 640×480 pixels.

Field Programmable Gate Arrays (FPGAs) fall in the spacebetween GPUs and ASICs in terms of time to implementationand level of control. FPGA hardware (fabric) is designed tobe highly reconfigurable, thereby giving more control thanwith GPUs, but the hardware is already fabricated, therebyeliminating the time for fabrication which plagues ASICs.FPGAs also offer an advantage over GPUs in that they canoperate in a standalone manner and interface directly withexternal sensors. A disadvantage of FPGAs is that their use

often requires knowledge of a hardware descriptor language(such as Verilog or VHDL) which can be difficult to learn.

In an attempt to make FPGAs more accessible and userfriendly, Impulse Accelerated Technologies Inc. [18] has de-veloped a C-to-FPGA compiler to make FPGA accelerationmore accessible to those not familiar with hardware design lan-guages. A review of this and other C-to-FPGA approaches canbe found in [19]. The E-lab at Yale is also working on easingthe transition to FPGA with the development of “NeuFlow”[20], an FPGA based system which can be programmed usingthe easier to learn Lua [21] scripting language. This approachsignificantly reduces time to implementation, but does notnecessarily allow the user to fully exploit the performancecapabilities of the FPGA. Despite being a valuable tool,the NeuFlow architecture is not well suited to implementinglarge filters (the original HMAX model requires filters up to37×37 pixels in size). Other architectures for implementingHMAX on FPGA, developed in parallel with the work inthis paper, have been recently published [22]–[27]. Theseimplementations also show considerable speedup over GPUand CPU implementations. Most interesting of these worksis a paper from Kestur et al. [23] which operates on higherresolution images (2352×1724 pixels), but uses a saliencyalgorithm to identify regions of interest, thereby obtainingfurther speedup by circumventing the need for an exhaustivesearch. Further discussion and comparison with these workscan be found in the discussions (Section VIII).

Despite the difficulties of learning hardware design lan-guages, many other vision algorithms have also been imple-mented in FPGA, including the Lucas-Kanade [28] opticalflow algorithm [29], SIFT [30], [31], SURF [32] spatiotempo-ral energy models for tracking [33] and segmentation [34] aswell as bioinspired models of gaze and vergence control [35].There are also many examples of Neural Networks (NNs)implemented in FPGA, including multilayer perceptrons [36],Boltzmann machines [37], and spiking NNs [38].

In work on multilayer perceptrons, Savich et al. [36] com-pared the use of fixed point and floating point representationsfor FPGA implementation and found that fixed point repre-sentation used less physical resources, fewer clock cycles, andallowed a higher clock speed than floating point representationwhile achieving similar precision and functionality. In thiswork fixed point representation is used throughout.

Himavathi et al. [39] described a Neural Network imple-mentation in FPGA which multiplexed resources for com-putation in different layers, to reduce the total resourcesrequired at the expense of computation time. The ultimate aimwas to use resources more effectively. In HMAX cells differby layer, so instead resources are multiplexed for differentcells within the same layer. The ultimate aim is similar, touse resources as effectively as possible, thereby achievingmaximum throughput with the available resources.

The computation performed by the first four layers ofHMAX is task independent, allowing us to easily estimaterequired computation and allocate resources accordingly. Theclassifier, which follows the fourth HMAX layer, differs de-pending on the task (binary or multi-class), and in the caseof multi-class, the required computation is further dependent

3

on the number of classes (see Section IV-A). To simplifyimplementation and maintain flexibility of the system, weimplement the classification stage in the loop on a host PC.We show through testing in Section VII-F that implementingthe classifier in the loop on a host PC does not affect thesystem throughput. Implementing a classifier in FPGA isnevertheless possible, as is evidenced by numerous examplesof FPGA classifier implementations in the literature, includingGaussian Mixture Models (GMMs) [40], NNs [41], [42],Naive Bayes [43], K-Nearest Neighbour (KNN) [44], SupportVector Machines (SVMs) [45], and even a core-generator forgenerating classifiers in FPGA [46].

To remain consistent with previous work [6] and providea fair comparison, a boosting classifier was used when per-forming binary classification, and a linear (SVM) classifierwas used when performing multi-class classification. The useof linear SVM is further supported by Misaki et al. [47],who did a comparison of multivariate classifiers in a visualobject discrimination task using FMRI data from early stagesof human visual and inferior temporal cortex. Linear classifierswere found to perform better than non-linear classifiers, whichthey note is consistent with previous similar investigations[48], [49]. Misaki et al. also note that non-linear classifiersmay perform better if larger datasets are used for training, orif fewer features are used. Non-linear classifiers can better fitthe training data, but this comes with the risk of overfitting theclassifier to the data, which is particularly problematic whenonly a few training samples are used.

The rest of this paper describes how the original model[6] was adapted for implementation on an FPGA to increasethroughput and how these adaptations affect recognition accu-racy. To test the FPGA implementation we performed a binaryclassification task on popular categories from the commonlyreferenced, publicly available Caltech 101 [50] dataset as wellas a tougher minaret dataset comprised of images downloadedfrom Flickr. We also investigated multi-class classification ac-curacy using Caltech 101. Results are compared to previously-published test results on the same dataset using a softwareimplementation of the HMAX model [6]. An analysis ofhow the image throughput rate and required hardware wouldchange with input image size is also presented. The aim of thispaper is not to beat the state of the art in terms of recognitionaccuracy, but rather to show how a given model can beadapted for implementation on an FPGA to drastically increasethroughput while maintaining the same level of recognitionaccuracy.

II. ORIGINAL MODEL DESCRIPTION

The version of the HMAX model used [6] has two mainstages, each consisting of a simple and complex substage. Wewill call these Simple-1 (S1), Complex-1 (C1), Simple-2 (S2)and Complex-2 (C2) as is done in the original paper.

A. S1

In S1 the image is filtered at each location with Gaborfilters applied at 16 different scales with the side length ofa filter ranging from 7 to 37 pixels in increments of 2 pixels

TABLE IPARAMETERS USED IN FPGA IMPLEMENTATION OF HMAX. THIS TABLE

IS ADAPTED FROM THE PARAMETER TABLE SHOWN IN [6].

Size Band# Subsampling Filter Sizes σ λperiod ∆ �×�Band 1 4 7×7 1.3 3.9

9×9 1.7 5.0

Band 2 5 11×11 2.1 6.213×13 2.5 7.4

Band 3 6 15×15 2.9 8.717×17 3.3 10.0

Band 4 7 19×19 3.8 11.321×21 4.2 12.7

Band 5 8 23×23 4.7 14.125×25 5.2 15.5

Band 6 9 27×27 5.7 17.029×29 6.2 18.5

Band 7 10 31×31 6.7 20.133×33 7.2 21.7

Band 8 11 35×35 7.8 23.337×37 8.3 25.0

as shown in Table I. For each filter size the filter is appliedat four different orientations (0o, 45o, 90o, and 135o). Foreach filter position the underlying image region is normalizedbefore filtering to increase illumination invariance. The outputof S1 consists of 64 filtered versions of the original image (16scales × 4 orientations). The sign of the result is dropped andonly the magnitude is passed to C1.

B. C1

Filter responses are grouped by filter sizes into 8 size-bandsas shown in Table I. Within each size-band the response of aC1 unit is the maximum of the S1 units in that size-bandover a small local spatial region (2∆×2∆ from Table I). Theresult is then subsampled (every ∆ pixels) and output to S2.The output is therefore 32 sets of C1 units (8 size-bands × 4orientations).

C. S2

S2 units have as their inputs C1 units from all four ori-entations. They compute the Euclidean distance between apredefined patch and the C1 units at every location. The patchsizes are 4 × 4 × 4, 8 × 8 × 4, 12× 12× 4 and 16× 16× 4(x× y× orientation). For every S2 unit the patch distance iscomputed at every (x,y) location within every size-band andpassed to C2.

D. C2

The C2 layer computes the minimum of the S2 distance foreach patch across all locations in all size-bands. The numberof C2 outputs is therefore equal to the number of S2 patchesused.

E. Classification

Classification is performed directly on the C2 outputs. Thechoice of classifier can vary based on the required task.Previous work [6] presented results using a boosting classifierfor binary classification, and a linear SVM one-vs-all classifierfor multi-class classification.

4

III. FPGA IMPLEMENTATION

A. Hardware Description

The large number of Multiply ACcumulate (MAC) opera-tions required to implement the 64 filters in S1 and the 1000patches in S2 make the number of multipliers available onan FPGA one of the limiting constraints for throughput. Thesecond limiting constraint is the amount of internal memoryavailable. We need to ensure we have enough memory tostore all intermediate results, S2 patches, and S1 filters sincewe can save time by not loading S1 filters and S2 patchesfrom external memory, as will be shown in Section III-E.Multiple block RAMs are used in parallel whenever data widerthan 16 bits needs to be stored. We chose to use the XilinxXC6VLX240T from the Virtex 6 family for its large number ofmultipliers (768) combined with its reasonable price of $1800for a development board (Xilinx ‘EK-V6-ML605-G’ board).The S1, C1, S2, and C2 stages were each implemented asseparate modules in VHDL using a pipelined architecture.

B. Edge Effects

The most obvious way to speed up the model is to notwaste resources on unnecessary computation. For this reasonwe chose to only compute filter responses and patch distanceswhen the filter (S1) or patch (S2) has full support. Weeffectively ignored any computation which involves regionsbeyond the image edges.

C. S1 Filters

The S1 layer consists of directionally selective Gabor re-ceptive fields, similar to the selectivity of simple cells foundby Hubel and Weisel [51] in V1. We implement cells at fourdifferent orientations (0o, 45o, 90o and 135o) as was done inthe original model [6]. Due to symmetry, we need not computecells at orientations at or above 180o. Each orientation isimplemented at sixteen different scales and at every locationin the image where full support is available. The equationsdefining the filters used in the original HMAX model [6] arerepeated in (1) for convenience. The equations for the filtersare the product of a cosine function and a Gaussian weightedenvelope:

Fθ (x,y) = e(−x20+γ2y2

02σ2 )× cos( 2π

λ x0)

x0 = xcosθ + ysinθ

y0 =−xsinθ + ycosθ .

(1)

Here λ determines the spatial frequency at the filter’s peakresponse, σ specifies the radius of the Gaussian window and γsqueezes or stretches the Gaussian window in the y0 directionto create an elliptical window. For the 0o, and 90o cases wecan easily rewrite this equation as product of two separatefunctions as shown in (2). The 45o, and 135o terms are notseparable unless we change the Gaussian weighting functionto an isotropic function by specifying γ = 1. By doing thiswe arrive at the equations for the 45o and 135o filters shownbelow:

F0(x,y) = E(x,y)∗G(x,y)T

F90(x,y) = E(x,y)T ∗G(x,y)

F45(x,y) = E(x,y)∗E(x,y)T +O(x,y)∗O(x,y)T

F135(x,y) = E(x,y)∗E(x,y)T −O(x,y)∗O(x,y)T

E(x,y) = e(−x2

2σ2 ) cos( 2πxλ )

G(x,y) = e(−γ2x2

2σ2 )

O(x,y) = e(−x2

2σ2 ) sin( 2πxλ )

(2)

Here (x,y) is the location of the kernel value within thefilter, O(x,y) is an odd Gabor filter, E(x,y) is an even Gaborfilter, and G(x,y) is a pure Gaussian filter. A ∗B designatesthe convolution of A and B, while AT designates the transposeof A. By writing the filters in a separable manner, we canimplement them using two passes of a one dimensional filterrather than one pass of a two dimensional filter [52]. Thenumber of MAC operations required to implement a separablefilter grows linearly with the side length of the filter ratherthan as the square of the side length and therefore results in asignificant speed up, or in the case of FPGA implementation, asignificant saving of resources. If we consider the specific caseof implementing the 64 S1 filters at a single image location,we can compute the number of multiply accumulates requiredusing

MACoriginal = 4×∑16i=1[�( j)2] = 36416

MACseparable = 4×∑16i=1[2×�( j)] = 2816

(3)

where �( j) is the side length of filter j as indicated in Table Iand in (4).

Using separable filters reduces the number of requiredmultiply accumulates from 36416 down to 2816, a reductionto less than 8% of the originally required computation. Fur-thermore, each one-dimensional filter used has either even orodd symmetry about the origin, allowing us to sum values inthe filter support either side of the origin before performingmultiplication. By exploiting the symmetry of the filter therequired multiplications are reduced by a further 50%, freeingup more dedicated hardware multipliers for use in the morecomputationally intensive S2 stage of processing. Using sep-arable instead of non-separable filters reduces the time takento compute the S1 filter responses from 2.3 seconds to 0.3seconds per 128×128 image in Matlab.

To increase illumination invariance, the filter response ateach location is normalized by the l2 norm of its support,as is done in the original model. This normalization ensuresthat filters capture information about the local contrast andare unaffected by the absolute brightness of a pixel region.The l2 norm is computed by first summing the squares in thex-direction, then summing the result in the y-direction andtaking the square root. We timed this result to be available si-multaneously with the filter results so that we can immediately

5

Input Image

S1

One Dimensional

Filter Bank

S1 Filter

Coe!cients

C1

S2 Patch

Coe!cients

S2

Filter

Bank

0

1

0

1

2

3

4

5

6

7

S1 Control

ModuleS2 Control

Module

Intermediate S1 Results

Local

Max

0

1

2

3

4

5

6

7C1 Results C2

Global

Max

C2

Results

Input from

Ethernet

Receive

Bu"er

Output to

Ethernet

Transmit

Bu"er

Fig. 1. Block diagram of our hardware implementation of HMAX. Red rectangles indicate the usage of block RAM. Input to the 1 dimensional S1 filterscan come from either the input image or from RAM holding intermediate results. S1 results are sent to C1 where the maximum is computed over a localregion (see Table I) and stored. Each size band has its own dedicated RAM. A demultiplixer controls reading of C1 results for the S2 stage. C2 computesthe global maximum of S2 outputs and stores the results in RAM before transferring them to the Ethernet transmit buffer.

perform division without the need to store intermediate results.Responses for filters at all four orientations are computed inparallel, eliminating the need to recompute or store the l2 normof the filter support for each orientation.

The filter kernels are all pre-computed and stored in a lookup table (see Fig. 1). Each filter is modified to have zero meanand an l2 norm of (216 −1) to ensure that results are alwaysless than 16 bits wide. The parameters used for these separablefilters is shown in Table I. These parameters can be writteninto equations as shown in (4) below.

�( j) = 5+2× j

∆(b) = 3+b

κ(k) = (4× k)2

(4)

where j is an index for filter sizes arranged from the smallestto largest (1 to 16). The diameter of filter j is �( j). The filter isactually square with side length �( j) to avoid the complexityof implementing a round filter. The subsampling period of sizeband b is written ∆(b). k is an index for the size of patches(1 to 4 for the four different patch sizes). At each orientationa patch of size index k will have size κ(k).

D. C1

The C1 layer requires finding the maximum S1 responseover a region of 2∆× 2∆ and subsampling every ∆ pixels inboth x and y (for values of ∆ see Table I). We computedthe maximum of a 2∆ × 2∆ region by first computing themaximum over adjacent non-overlapping regions of size ∆×∆.By taking the maximum across every 4 adjacent ∆×∆ regionswe obtained the maximum over a 2∆×2∆ region, subsampledevery ∆ pixels in both x and y.

Computing on data as it streams from S1 eliminates the needto store non-maximal S1 results (see Fig. 1). As with the S1layer, computation in C1 is performed on all four orientationsin parallel. Each time C1 finishes computing the results for asize band, a flag is set which indicates to S2 that it can begincomputation on that size band.

E. S2

Even though the data coming into S2 has already beenreduced by taking the maximum across a local pool andsubsampling in C1, the S2 layer is where most of the compu-tation takes place. The number of MAC operations required tocompute all patch responses at a single location in the originalmodel is:

250×4×∑4k=1 κ(k) = 480000 (5)

where there are 250 patches per size and 4 orientations perpatch, each of size κ(k), which was defined in (4). Thecomputation of these patch responses must be repeated at alllocations within all size-bands.

We decided to use 1280 patches (320 per size) whichwas a compromise between speed of implementation and thenumber of patches. As in the original model, S2 patchesare obtained from previously computed C1 results on imagesfrom both the positive and negative classes. Since S2 patchesare simply portions of previously computed C1 outputs, thenumber of bits required to store each patch coefficient is 16.The closeness of a patch to a C1 region is computed as theEuclidean distance between the patch and that region.

We computed patch responses starting with the smallestsized patches (x×y×orientation → 4×4×4) and computingtheir response at a single location. We then repeat this compu-tation for all locations in the current size band, before movingonto the next patch size. Once all patch sizes have been com-puted for all locations in the current image size-band we moveonto the next size-band as soon as it is available from C1. Allpatches of the size currently being considered are computed inparallel. Furthermore, the response at two different orientationsis considered in parallel. This results in 320×2 = 640 parallelmultiply-accumulate operations every clock cycle. This uses640 multipliers and requires that 640 patch coefficients be readevery clock cycle. Patch coefficients are stored in the FPGA’sinternal block RAM since the bandwidth to external RAMwould not allow such high datarates. Using external RAMwould require a data rate of 640×16bits×100MHz = 1T b/sfor a 100MHz clock.

6

F(x,1)

>

T(x,1)

O(x,1)

F(x,2)

>

T(x,2)

F(x,3)

>

T(x,3)

F(x,4)

>

T(x,4)

F(x,5)

>

T(x,5)

F(x,6)

>

T(x,6)

F(x,7)

>

T(x,7)

O(x,6)O(x,5)O(x,4)O(x,3)O(x,2) O(x,8)O(x,7)

YES

YES

YES

YES

YES

YES YES

NO

NO

NO NO

NO

NO NO

Fig. 2. A weak learner used in the gentle boosting algorithm. Each weaklearner is a tree consisting of 7 nodes. F(x,y) represents the feature usedat node y in weak learner x. O(x,1) through O(x,8) are the binary outputs ofclassifier x. Each output is a binary value 1 or -1.

F. C2

C2 simply consists of a running minimum for each S2 patch,computed by comparing new S2 results with the previouslystored S2 minimum. This is performed for all 320 S2 patchesof the current size simultaneously (see Fig. 1).

G. Classifier

Results from [6] suggest that a boosting classifier is betterthan SVM for the binary classification problem. We used thegentleboosting algorithm [53] with weak learners consistingof tree classifiers each with a maximum of three decisionbranches before reaching a result as shown in Fig. 2. We used1280 weak learners in the classifier, each computed in series.

For multi-class classification a linear one-vs-all SVM classi-fier was chosen [54], [55]. This is a simple linear classifier, butis memory intensive in its requirement for storing coefficients,as is discussed in Section IV-A.

In order to not restrict the FPGA implementation to onlybinary problems or only multi-class problems, the classifierwas implemented separately on a host PC.

H. Scheduling

The FPGA implementation has an input FIFO buffer capableof holding up to four complete 128×128 pixel images. As soonas at least one full image has been loaded into the buffer S1will read the image. S1 then computes responses at all fourorientations for the smallest filter simultaneously and outputsthe results in a streaming fashion to C1. After computingthe responses from the smallest filter, S1 filters will read incoefficients for the next filter size and compute the new filterresponses. S1 will continue in this manner until responses forall filter sizes have been computed. S1 will read a new imagefrom the input buffer as soon as it has completed the firstpass with the largest separable filter, or as soon as an imagebecomes available if none are available at the time.

The C1 and C2 layers operate on the results of S1 andS2 as they are output in a streaming fashion during computa-tion, thereby reducing the internal memory required to storeintermediate results. This approach also ensures that C1 andC2 only add a negligible amount of processing time to thealgorithm (less than 100 µseconds for an entire image).

Each stage (S1, C1, S2, C2) uses its own dedicated FPGAresources, thereby allowing all stages to run simultaneously.Sharing of memory occurs between C1 and S2, where accessis managed by setting and clearing flags. There is a separatememory unit and flag for each image band. When a flag islow, C1 has exclusive read/write access to the correspondingmemory unit. Once C1 has finished storing results in thememory unit, it will set the corresponding flag high. Whena flag is high, the S2 stage has exclusive read/write access tothe corresponding memory block and will clear the flag onceit has finished processing all data from that memory block,thereby transferring control back to C1.

If waiting for access to a particular memory block, a stage(C1 or S2) will begin processing as soon as access is granted(the very next clock cycle). Since results for each image bandare stored separately, the S1 and C1 stages can process thenext image band (and loop around) without having to wait.This allows S1 and C1 to be almost an entire image aheadin computation than the S2 stage, which is important becausealthough the S1 and C1 stages take the same length of time toprocess each image band, the time taken by S2 varies. TheS2 stage takes longer to compute on smaller image bandsbecause their higher frequency of subsampling produces moreC1 results on which computation must be performed (seeTable I). Buffering of C1 outputs in the manner describedallows us to focus on matching the throughput of the S1 andC1 stage with the average throughput (across image bands)of the S2 stage, without being troubled by how computationtime in S2 varies with each image band.

S1 will not compute new results for an image band if thecurrent results for that image band (from the previous image)have not yet been processed by S2 (i.e. if the relevant memoryflag is still high). S1 will however still perform the first passwith a separable filter in the meanwhile to ensure it can startoutputting results as soon as the flag is cleared.

Results from S2 stream to C2, which writes the final resultsto an output buffer for communication back to the host PC.

IV. SCALABILITY OF FPGA IMPLEMENTATION

In this section we show how the input image size affectsthe hardware resources and time required for computationusing the FPGA implementation described in Section III. Thedescribed FPGA implementation was specifically designed tooperate on images of size 128×128 pixels and is thereforenot necessarily recommended as the best implementation forlarger or smaller images. Nevertheless, if implementing a newdesign to operate on larger (or smaller) images, extrapolatingthe current design to different sizes provides a good startingpoint.

A. Hardware Resources

The number of bits in the counters used to track the progressof computation on the input image and intermediate results instages S1, C1, and S2 will need to increase to handle largerimages. This increase scales as:

CounterBits ∝ log2√

N (6)

7

where N is the number of pixels in the input image andthe image is assumed to be square, having side length

√N.

This increase in required hardware is negligible, especially incomparison to the increase in internal RAM required to storethe input image and intermediate results in the S1 and C1stages. The internal RAM requirement scales proportionallyto N for large images. Due to the nature of computation in S2and C2, no additional RAM is required in those stages whenthe image size increases. The number of elements requiredto compute multiplication, addition, division, and square rootsremains unchanged in all stages. The total required internalRAM is the sum of the RAM required by all stages.

Internal RAM is required for three purposes in S1: storingthe input image, storing intermediate results between the firstand second passing of the separable filter and finally, to storethe S1 filter coefficients. The required RAM can be explicitlycalculated using (7) below.

S1bits = S1input +S1intermediate +S1 f ilters

S1input = 4×N ×8

S1intermediate = 5×N ×23

S1 f ilters = ∑16j=1 (2× (3+ j)×16)

(7)

N represents the number of pixels in the input image. Theinput buffer has to hold four images (a FIFO buffer) with 8bits per pixel. The intermediate results require 5 buffers (onefor each orientation and one for calculating the l2 norm of thefilter support). Each result consists of 23 bits. For storage ofthe f ilters, the jth filter (ordered smallest to largest) consistsof 2 separable filters, each with (3+ j) coefficients and 16 bitsper coefficient.

The output of the S1 stage does not require RAM for storagesince each result is processed by C1 as soon as it becomesavailable, but C1 does require RAM for intermediate and finalresults. The RAM required by C1 can be explicitly calculatedusing (8) below.

C1bits = ∑8b=1 C1size(b)×16

C1size(b) = S1size(b)∆(b)2

S1size(b) = 4× (√

N −�(2b)+1)2

(8)

The number of valid S1 results in image band b is thengiven by S1size(b), where �(2b) was previously defined in(4) and there are 4 orientations. The number of C1 results canthen be calculated knowing the number of S1 results and thesubsampling period ∆(b), which was also previously definedin (4). Each C1 result occupies 16 bits.

The RAM required for S2 is constant across image sizesand can be written explicitly as:

S2bits = ∑4k=1 320×4×κ(k)×16 (9)

where k is an index of patch size. There are 320 patches persize and 4 orientations per patch, each with κ(k) coefficientsas previously defined in (4). Each coefficient occupies 16 bits.

C2 requires only enough RAM to hold the final C2 results.

C2bits = 1280×42 (10)

where there are 1280 C2 features each consisting of 42 bits.Although we implement the classifier on the host PC, it is

possible to determine the resources required by the classifier.The most memory intensive classifier used in this paper isthe 102 class one-vs-all linear SVM classifier, for which thememory requirements are:

Classi f ierbits = 102×1280×32+84= 4178004bits (11)

where there are 102 possible classes, 1280 C2 features, 32 bitsper coefficient, and up to 84 bits required to hold the result.The current FPGA implementation does not have enoughremaining internal memory to hold all these coefficients,but the coefficients could easily fit into external RAM, orthe classifier could be run on a second FPGA. If runningat 190 images per second, an external memory bandwidthof 102× 1280× 32× 190 = 794Mbps per second would berequired, which is only about 6% of the available 12.8Gbpsbandwidth on the targeted FPGA platform. In our implemen-tation, running the classifier on a host PC did not affect thesystem throughput.

B. Time

The time taken to process an image is dominated by theS1 and S2 stages. The C1 and C2 stages perform simplemaximum operations on each valid data point as it becomesavailable and therefore do not contribute significantly to thetime taken to process an image. The time computed in theequations below is in units of clock cycles and the actual timetaken for computation therefore depends on the FPGA clockfrequency.

The time taken to compute S1 can be accurately approxi-mated as the time required to do 2 passes of the image for eachof the 16 separable filter sizes (12). All four orientations aresimultaneously computed in parallel and therefore the multipleorientations do not add to computation time.

S1time = 2×N ×16 (12)

where S1time is in units of clock cycles, N is the number ofpixels per image and 16 filter sizes are implemented.

In S2, all 320 patches of the same size are considered simul-taneously and within each patch, computation is performed attwo orientations simultaneously.

S2time = ∑8b=1 ∑4

k=1 S2size(b,k)×κ(k)×2

S2size(b,k) = (√

C1size(b)−√

κ(k)+1)2 (13)

where S2size(b,k) is the number of valid S2 results for sizeband b and patch size index k. S2size(b,k) is zero wheneverthe size of the C1 results is smaller than the patch size, thatis when C1size(b) < κ(k). κ(k) is the patch size and waspreviously defined in (4). S2time is the total time (in clock

8

cycles) taken to compute all patch responses of all sizes inevery size band.

If the multi-class one-vs-all linear SVM classifier were tobe implemented on the FPGA with 102 classes and only asingle hardware multiplier, the time taken could be computedas

Classi f iertime = 1280×102 (14)

for 1280 C2 features and 102 classes. The time taken forclassification would not be dependent on the input image size.Using a single multiplier would enable a throughput of up to765 images per second when using a 100MHz clock.

V. SIMULATION

Four different sets of code were used in simulation. The firstis a Matlab implementation of the HMAX model which wasretrieved from HMAX website [56]. This was used as a bench-mark against which to compare our modified implementationof HMAX for FPGA to verify that the modifications madedid not severely compromise recognition accuracy. We referto this original HMAX implementation as ‘HMAX CPU’.

The second, third, and fourth sets of code are Matlab,C++, and VHDL implementations respectively of our modifiedversion of HMAX for FPGA. These implementations are func-tionally equivalent and we refer to them as ‘HMAX FPGA’.The Matlab code was used to make initial changes to themodel and test accuracy on small datasets. Once satisfied withthe changes made, a faster C++ implementation was writtenand used to verify the modified model on larger datasets.Finally, the actual VHDL code required to implement theproposed model in FPGA was written. This VHDL code wasused to determine possible clock speeds and image throughputas well as to verify that the proposed FPGA model couldbe implemented using the resources available on the targetedFPGA platform (Xilinx Virtex 6 XC6VLX240T). Both finaland intermediate results from the modified Matlab, C++, andVHDL codes were compared to verify that all three wereperforming the same computation.

VI. HARDWARE VALIDATION

The results of simulation were verified through implementa-tion on the Xilinx Virtex 6 ML605 development board. A C++interface was written for the host PC which handles Ethernetcommunications with the ML605 board and performs classifi-cation. The C++ code transmits four images to the ML605board to fill the input buffer (described in Section III-H),then waits for all 1280 C2 values from an image to bereturned before transmitting the next image. Reading of imagesfrom the hard drive and classification are both performedwhile waiting for the next set of C2 values from the FPGA,thereby adding negligibly to the overall computation time.Classification results are written to an output file as they arecomputed. For further verification C2 results from FPGA couldbe optionally written to disk for direct comparison againstsimulated C2 results.

102

103

104

105

106

10710

3

104

105

106

107

108

109

1010

Number of pixels per image

Inte

rna

l me

mo

ry u

sag

e (

by

tes)

S1C1S2

C2Total UsedTotal Available

Fig. 3. Theoretical analysis of the internal RAM required by each stageas well as the total RAM required and total RAM available on the selectedFPGA. The vertical line shows the number of pixels in a 128×128 image, forwhich this implementation was designed.

VII. RESULTS

A. FPGA code analysis

Using the Xilinx ISE, the VHDL code for implementingHMAX on FPGA was analyzed. For simplicity we use asingle clock for all stages within the model. All lookup tables,S1 filters, and S2 patches as well as all intermediate resultsare stored in internal block RAM, as shown in Fig. 1. Thesystem has a latency of 600k clock cycles when processinga single image, but can maintain a throughput of an imageevery 526k clock cycles. Implementation of the full modelindicates that the design can run at a clock frequency of100MHz (10ns period). A 100MHz clock results in a latency of6ms for processing a single image and a maximum throughputof 190 images per second when processing multiple images.These figures are achieved assuming that the input figure is a128×128 pixel 8-bit per pixel grayscale image. The throughputof the design is determined by the throughput of the sloweststage in the pipeline. Computational resources should thereforebe allocated in such a way that all stages have roughly thesame throughput. This has been done as is evident in thedistribution of multipliers between the S1 and S2 stages. S1 isthe slowest stage, limiting the throughput to 190 images persecond using 77 multipliers at 100MHz clock frequency, whileS2 is capable of a throughput of 193 images per second, butuses 640 multipliers.

If we were to create an optimal implementation of S1using non-separable filters with a 100MHz clock, then S1alone would require over 1600 multipliers to achieve the samethroughput of 190 images per second (unless a scale spaceapproach was adopted). This is over double the number ofhardware multipliers available on the chosen FPGA.

Table II shows the total resources used by the HMAXimplementation.

B. Scalability

Fig. 3 shows the internal RAM requirements computedusing the equations presented in Section IV-A, as well as thetotal block RAM available on the selected Virtex 6 FPGA(14976kb, dashed line) and the image size for which the

9

TABLE IIFPGA RESOURCES USED BY HMAX

Resource Used Available % usedMultipliers 717 768 93(DSP48E1)Internal RAM 373 416 89(RAM36E1)

Slice Registers 66 196 301 440 21

Slice LUTs 60 872 150 720 40

102

103

104

105

106

10710

210

3

104

105

106

107

108

109

1010

Number of pixels per image

Clo

ck c

ycl

es

req

uir

ed

fo

r co

mp

uta

tio

n

S1S2

Fig. 4. A theoretical analysis of the time taken to compute each stageof HMAX in the current architecture. Due to the pipelined nature of thecomputation, the rate at which images can be processed is limited by thestage which takes the longest time. The vertical line shows the number ofpixels in a 128×128 image, for which this implementation was designed.The time required to compute the two longest stages is equal at this pointas a result of the effort to allocate resources in such a way as to maximizethroughput.

algorithm was designed (128×128 pixels, vertical line). Sinceall S2 patches of the same size are computed in parallel, thenumber of patches does not affect computation time, but willbe limited by the number of available multipliers and amountof RAM available (see Table II).

The time taken to compute the S1 and S2 stages is shown inFig. 4 along with the number of pixels for which the currentimplementation was designed (vertical line). The throughputof the complete system is limited to the throughput of theslowest stage.

The time taken to compute S2 can be seen as the time whichwould be taken to compute all results (even partial resultson edges) minus the time which is saved by not computingedge results. The time saved by not computing at edges issignificant at an image size of 128×128. The time saved growsproportionally to the side length of the image

√N, which is

much slower than the time to compute all results (which growslinearly with N). This is why the time for S2 grows linearlywith N only for large N. S1 always grows linearly with N.

The design of the current framework ensures that the timetaken for S1 and S2 is roughly equal (within 2%) for images ofsize 128×128, thereby ensuring that computational resourcesin each stage are not sitting idle waiting for the other stage tofinish computing. If working with images of a different size,resources would ideally be reallocated to ensure that S1 andS2 still take equal time.

TABLE IIICOMPARISON OF RECOGNITION ACCURACIES OBTAINED FROM ORIGINALHMAX CODE AND FPGA IMPLEMENTATION ON POPULAR CATEGORIES IN

CALTECH 101

Category HMAX [6] HMAX CPU HMAX FPGAAirplanes 96.7 97.1 98.2

Cars 99.7 99.3 99.2Faces 98.2 95.8 96.4

Leaves 97.0 94.6 93.7Motorbikes 98.0 98.3 98.8

False Positive Rate

Tru

e P

osi

tiv

e R

ate

0 0.1 0.2 0.30.80

0.85

0.90

0.95

1

Leaves CPU

Leaves FPGA

0 0.1 0.2 0.3

Motorbikes CPU

Motorbikes FPGA

0 0.1 0.2 0.30.80

0.85

0.90

0.95

1

Airplanes CPU

Airplanes FPGA

0 0.2 0.4 0.60.4

0.6

0.8

1

Minaret CPU

Minaret FPGA

0 0.1 0.2 0.30.80

0.85

0.90

0.95

1

Cars CPU

Cars FPGA

0 0.1 0.2 0.3

Faces CPU

Faces FPGA

0.80

0.85

0.90

0.95

1

0.80

0.85

0.90

0.95

1

Fig. 5. Receiver Operating Characteristics for the binary classification taskon Caltech 101 popular image categories and Minaret datasets. Each curve isthe result of a mean over 10 trials. Note that the True Positive Rate axis isdifferent for the Minaret classification task.

C. Caltech 101 binary classification

Two datasets were used to test the recognition accuracy ofour modified HMAX model. The first is the often referencedCaltech 101 dataset [50]. Recognition accuracy of popular cat-egories in this dataset were presented for the HMAX model in[6]. We ran our own binary classification simulations on thesecategories using both the downloaded and modified versions ofHMAX. The binary task constituted discriminating the class inquestion (airplanes, cars, faces, leaves, or motorbikes) from thebackground class. In each case, half the images from the classin question and half images from the background class wereused for training. The remaining images from both the classin question and the background class were used for testing. Ineach case 10 trials were run. The accuracy reported in Table IIIis the percentage of correct classifications at the point on theROC curve (Fig. 5) where the false positive and false negativerates are equal. Looking at the mean accuracy for this metric,the FPGA implementation achieves 0.24% higher accuracythan the original CPU implementation. This shows that themodifications made for the FPGA implementation have notadversely affected recognition accuracy.

D. Binary classification on Flickr dataset

The binary minaret classification task was performed on adataset containing 662 images of minarets and 1332 back-ground images. The minaret (positive) images were obtained

10

Fig. 6. A sample of images from the minaret (top row) and background(bottom row) classes used in the minaret binary classification task.

TABLE IVCOMPARISON OF RESULTS OBTAINED FROM ORIGINAL HMAX CODE AND

FPGA IMPLEMENTATION ON MINARET CLASSIFICATION TASK

Model HMAX CPU HMAX CPU HMAX FPGA HMAX FPGAFeatures 2000 1280 2000 1280Accuracy 82.9 82.2 82.2 81.3

from Flicker by searching for “Minaret” while negative imageswere obtained by periodically downloading the most recentlyuploaded Flicker image. Examples of these images are shownin Fig. 6. Ten random splits were used for classification andtesting, with the test set consisting of 1000 negative and 500positive images. The remaining images constitute the trainingset. This test was performed with both the downloaded HMAXcode and the modified HMAX code for FPGA. The resultsare shown in Table IV. The metric used is the percentageof correct classifications at the point where false positiveand false negative rates are equal. As expected, using 2000features instead of 1280 improves the accuracy for both theCPU and FPGA implementations. The accuracy of the FPGAimplementation is within 1% of that of the original model.

E. Caltech 101 multi-class one-vs-all

A second test using the Caltech 101 database is the multi-class one-vs-all test. For this we used 15 training examplesper category, as was done in [6]. Testing was performed using50 examples per category or as many images as remainedif fewer than 50 were available. Each of the categories wasweighted such that it contributes equally to the result as wasdone in [6]. This is a 102 category problem including thebackground category. Using the one-vs-all linear SVM multi-class classifier from [55] we achieved a mean accuracy of47.2 ± 1.0% over 10 trials, which is in agreement with theresult of 44 ± 1.14% reported in [6] for the same task. Theslight increase in accuracy can be attributed to the fact thatour FPGA implementation uses 1280 features compared to1000 features used in [6]. The confusion matrix for the 101multi-class one-vs-all problem is shown in Fig. 7.

F. Hardware Validation

Results from analyzing VHDL code were verified by im-plementing the code on the ML605 board and processingthe Caltech 101 database. The entire dataset consisting of9144 images was processed ten times in different trials. The

Predicted Class

Tru

e C

lass

10 20 30 40 50 60 70 80 90 100

10

20

30

40

50

60

70

80

90

100

Fig. 7. Confusion matrix averaged over 10 trials for the 102 category multi-class one-vs-all test performed on the Caltech 101 database. The low accuracyon the extreme bottom left of the diagonal is the background category. Thelargest confusion is between the ‘schooner’ (81) and ‘ketch’ (57) categories,which are similar cases of sailboats.

TABLE VMAXIMUM THROUGHPUT FOR EACH STAGE IN IMAGES/SEC

Stage Input Buffer S1 C1 S2 C2Throughput 6100 190 552 193 10 000

time taken to complete processing was measured from whenthe first image is read from disk until the last classificationresult is written to disk. The time taken to process the entireCaltech 101 database was measured as 48.12s ±57µs, whichis a throughput of 190 images/sec and agrees with VHDLsimulation predictions (shown in Table V) to within 0.01%.Accuracy of the VHDL implementation was also verifiedagainst simulations. Both classification results and C2 outputsfrom testing were verified against simulation and found toexactly match.

G. Comparison to other approaches

To the best of our knowledge 190 images/sec is the fastestreported implementation of this version HMAX. Direct com-parisons with other versions are not always straightforwardbecause both the number of patches and their sizes can vary,as well as the size of the input image or even the model itself.

In 2010 Sedding et al. [12] presented a time of 86.4ms for4075 patches using custom code on an NVIDIA GeForce285GTX. They used sparse features as proposed by Mutch andLowe [57] and claimed a shorter runtime than both the FeatureHierarchy Library (FHLib) [57] and the GPU based CorticalNetwork Simulator (CNS) [11]. In our aim to recreate theoriginal model we chose not to use sparse features, but usingsparse features would allow us either a 4× speedup or itwould allow us to implement 4× as many patches at thesame speed (resulting in 5120 patches) on the ML605 board.Their implementation also operates on larger images, withshortest side measuring 140 pixels. If our 1280 dense patchimplementation was to run on an image measuring 140×186

11

C2 Features

Image Pixel Values

Gigabit Ethernet

Fig. 8. An illustration of the portable hardware setup for the binaryclassification system showing a laptop communicating pixel values overgigabit Ethernet to a Xilinx ML605 evaluation board containing the XilinxVirtex 6 XC6VLX240T FPGA on which the HMAX model runs. C2 featuresare returned to the laptop via the same gigabit Ethernet interface.

pixels (assuming a 3×4 aspect ratio), it would still take under12ms to complete.

On Caltech 101 with 15 training and 50 test samples percategory, our 1280 patch 128×128 pixel model achieves anaccuracy of 47.2% (see Section VII-E) whereas Sedding [12]achieves 37%, most likely a result of using sparse features. Interms of speed our implementation takes 5.3ms whereas theirstakes 86.4ms. They can reduce their processing time to 8.9msif they only compute 240 patches, but this will come at theexpense of even lower accuracy (less than 30% on the sametask).

VIII. DISCUSSION

The previous section shows that a massive increase inthroughput can be achieved with almost no change in recog-nition accuracy. In this paper the aim has been to achieve avery high throughput as an argument for the use of FPGA inhierarchical models, but one could just as easily trade speed foraccuracy. Interestingly our FPGA implementation of HMAXuses more S2 patches (1280) than the 1000 used in [6]. Thisincrease in the number of patches was implemented simplybecause the additional resources required for the patches wereavailable and the parallel processing of patches means that aslong as resources are available, adding more patches does notaffect throughput.

The issues of image acquisition, rescaling and conversionto grayscale are not tackled by the current model since thesewill be application specific. The model requires that images areprescaled to 128×128 pixels and converted to 8 bit grayscalebefore they are processed. The FPGA model requires an inputimage in the form of raw pixel values. For 190 images persecond this translates to just over 3MB of data per second,which is well within the capabilities of the evaluation board’sPCI express or gigabit Ethernet interfaces, as has been verifiedthrough testing in Section VII-F. If using a laptop, the systemcan run over gigabit Ethernet allowing it to be portable asshown in Fig. 8.

The HMAX model used in this paper is one which wasfreely available in easy to follow Matlab code. It does notrepresent the least computationally intensive, or most accurate

version of the HMAX model. The creators of the modelare continuously working on improvements and a number ofnewer iterations have been presented [57]. One of the mostsignificant changes is the use of a scale-space approach suchthat the image is rescaled and reprocessed multiple times byfilters of a single fixed size rather than keeping the imagethe same size and using multiple filters of varying size. Manyrecent implementations [22]–[27] make use of 12 orientationsinstead of 4, which increases accuracy although it comes atthe expense of extra computation time.

We achieved a key speedup in the S1 layer by exploitingthe known structure of filters, which allowed us to implementthe Gabor filters as separable. The unsupervised learning inS2 means that its structure is not known a priori. If the modelwere changed to S2 patches of a known structure which couldbe similarly exploited then further significant speedups couldbe achieved, but the effect on recognition accuracy would haveto be further investigated.

Another change which greatly reduces computational com-plexity is the use of sparse S2 patches as proposed byMutch and Lowe [57]. In their model only the S1 orientationwith maximal response is considered at each image location,thereby reducing the number of orientations in S2 from 4 to 1,which reduces the number of required multiply accumulates toonly a quarter of the original. These sparse S2 features are usedin most recent works [22]–[27]. The effect on throughput ofusing sparse versus dense features, and of changing the numberof orientations from 4 to 12, can be found in a recent paperby Park et al. [26]. Despite running on four FPGAs, eachof which is more than twice as large as our FPGA (Virtex6 SX475T versus LX240T), their dense implementation ofHMAX using four orientations runs at roughly 45 images persecond. However there are certain differences, they operateon larger images (256×256 versus 128×128), and use morepatches (4075 versus 1280). Using four FPGAs, we couldrun four copies of our model in parallel, each with differentpatches, thereby giving us 1280 × 4 = 5120 patches whilemaintaining throughput of 190 images per second. We alsouse an equal number of patches of each size, whereas morerecent approaches typically use more small (4×4) and lesslarge (16×16) patches to reduce computation. To summarize incomparison with Park et al., we could implement more patches(5120 versus 4075), with a higher percentage of large patches,and a 4× higher throughput if 4 FPGAs were used. Theirimplementation uses significantly larger FPGAs than ours(containing 2016 versus 768 multipliers), but also operates on4× larger images, making a direct comparison difficult.

A common bottleneck for parallel architectures lies in theavailable bandwidth to memory and structuring how memoryis accessed. For example, if two cores simultaneously requestdata from memory, one will have to wait for the other beforeit can access memory. In the presented FPGA implementationthis was overcome by using the internal block RAM of theFPGA which resulted in a bandwidth of over 1 Terabit per sec-ond, which could be difficult to maintain on other platforms.Other implementations of HMAX which have recently beenpublished also make use of internal block RAM to overcomethis memory access bottleneck [22]–[27].

12

The size of the current filters and patches are designed tooperate on small images. Even if higher resolution images areavailable, they should be rescaled to 128×128 if they are tobe processed with the current filters and patches. Nevertheless,extension to larger images is possible. Scalability of the currentimplementation has been presented and shows that largerimages can be processed on the current FPGA with minoradjustments, but will ultimately be limited by the amount ofinternal memory available for buffering images and storingintermediate results. To overcome this one could use a largerFPGA, use multiple FPGA’s operating in parallel, reduce thenumber of S2 patches to free up memory, or change the modelto use sparse features.

To provide a fair comparison with the original HMAXmodel we used the same classifiers (boosting for binary andlinear one-vs-all SVM for multi-class). Linear SVM classifiersremain the top choice for most HMAX implementations due totheir computational simplicity and speed. The choice of linearSVM classifiers is also supported by other work on discrim-inating between visual objects based on fMRI recordings ofearly stages of visual cortex [47]–[49]. In our implementationwe were able to run the classifier in the loop on a host PCwithout affecting the system throughput because classificationwas performed in parallel with feature extraction for the nextimage. Nevertheless, various classifiers can and have beenimplemented in FPGA [40]–[44], including SVM [45], andeven a core generator for parameterized generation of yourown classifier in FPGA [46].

Comparison with other approaches shows that this is cur-rently the fastest complete HMAX implementation and out-performs reported CNS [11] and custom [12] GPU imple-mentations, as well as many FPGA implementations, althoughdirect comparison with other FPGA implementations is notalways possible. As more powerful GPU platforms becomeavailable these GPU implementations will achieve even betterresults, however the same can be said for FPGAs. The platformwe have used (Xilinx Virtex 6 XC6VLX240T) is only in themiddle of the range of the Virtex 6 family and is an entiretechnology generation behind the currently available Virtex 7family.

IX. CONCLUSION

We have shown how a neuromorphic bio-inspired hierarchi-cal model of object recognition can be adapted for high speedimplementation on a mid-range COTS FPGA platform. Thisimplementation has a throughput of 190 images per secondwhich is the fastest reported for a complete HMAX model. Wehave performed binary classification tests on popular Caltech101 categories as well as on a more difficult Flickr dataset toshow that adaption for FPGA does not have a significant effecton recognition accuracy. We have also shown that accuracyis not compromised on a multi-class classification task usingCaltech 101.

ACKNOWLEDGMENT

This work was partially supported by the Defense AdvancedResearch Projects Agency NeoVision2 program (government

contract no. HR0011-10-C-0033) and the Research Programin Applied Neuroscience.

REFERENCES

[1] D. Lowe, “Object recognition from local scale-invariant features,” Proc.7th IEEE Int. Conf. Computer Vision, vol. 2, pp. 1150–1157, 1999.

[2] H. Bay, T. Tuytelaars, and L. Van Gool, “SURF: Speeded-up robustfeatures,” 9th European Conf. Computer Vision, vol. 110, no. 3, pp.346–359, 2008.

[3] N. Logothetis, J. Pauls, and T. Poggio, “Shape representation in theinferior temporal cortex of monkeys,” Current Biology, vol. 5, no. 5,pp. 552–563, 1995.

[4] M. Riesenhuber and T. Poggio, “Are cortical models really bound bythe binding problem,” Neuron, vol. 24, pp. 87–93, 1999.

[5] K. Jarrett, K. Kavukcuoglu, M. Ranzato, and Y. LeCun, “What is thebest multi-stage architecture for object recognition?” Proc. 12th IEEEInt. Conf. Computer Vision, pp. 2146–2153, Oct 2009.

[6] T. Serre, L. Wolf, S. Bileschi, M. Riesenhuber, and T. Poggio, “Robustobject recognition with cortex-like mechanisms,” IEEE Trans. PatternAnalysis and Machine Intelligence, vol. 29, no. 3, pp. 411–426, Mar2007.

[7] T. Serre, A. Oliva, and T. Poggio, “A feedforward architecture accountsfor rapid categorization,” Proc. National Academy of Sciences, vol. 104,no. 15, pp. 6424–6429, 2007.

[8] S. Thorpe, D. Fize, and C. Marlot, “Speed of processing in the humanvisual system,” Nature, vol. 381, no. 6582, pp. 520–522, Jun 1996.

[9] J. M. and D. G.L., “Multiclass object recognition with sparse, localizedfeatures,” IEEE Conf. Computer Vision and Pattern Recognition, pp.11–18, Jun 2006.

[10] S. Chikkerur, “CUDA implementation of a biologically inspired objectrecognition system.” MIT online, 2008.

[11] J. Mutch, U. Knoblich, and T. Poggio, “CNS: a GPU-based frameworkfor simulating cortically-organized networks,” Massachusetts Institute ofTechnology, Cambridge, MA, Tech. Rep., Feb 2010.

[12] H. Sedding, F. Deger, H. Dammertz, J. Bouecke, and H. Lensch, “Mas-sively parallel multiclass object recognition,” Proc. Vision, Modeling,and Visualization Workshop, pp. 251–257, 2010.

[13] J. Kim, E. Park, X. Cui, H. Kim, and W. Gruver, “A fast featureextraction in object recognition using parallel processing on CPU andGPU,” IEEE Int. Conf. Systems, Man and Cybernetics, pp. 3842–3847,Oct 2009.

[14] S. Warn, W. Emeneker, J. Cothren, and A. Apon, “Accelerating SIFTon parallel architectures,” IEEE Int. Conf. Cluster Computing, pp. 1–4,Sept 2009.

[15] R. Uetz and S. Behnke, “Large-scale object recognition with CUDA-accelerated hierarchical neural networks,” IEEE Int. Conf. IntelligentComputing and Intelligent Systems, vol. 1, pp. 536–541, Nov 2009.

[16] M. Ebner, “A real-time evolutionary object recognition system,” in Ge-netic Programming, ser. Lecture Notes in Computer Science. SpringerBerlin / Heidelberg, 2009, vol. 5481, pp. 268–279.

[17] J. Kim, M. Kim, S. Lee, J. Oh, K. Kim, and H. Yoo, “A 201.4 GOPS496 mW real-time multi-object recognition processor with bio-inspiredneural perception engine,” IEEE J. Solid-State Circuits, vol. 45, no. 1,pp. 32–45, Jan 2010.

[18] Impulse Accelerated Technology Inc. Website. [Online]. Available:www.impulseaccelerated.com

[19] B. Holland, M. Vacas, V. Aggarwal, R. DeVille, I. Troxel, and A. D.George, “Survey of C-based application mapping tools for reconfigurablecomputing,” 8th Int. Conf. Military and Aerospace Programmable LogicDevices, Sept 2005.

[20] C. Farabet, B. Martini, P. Akselrod, S. Talay, Y. LeCun, and E. Cu-lurciello, “Hardware accelerated convolutional neural networks for syn-thetic vision systems,” Proc. IEEE Int. Symp. Circuits and Systems, pp.257–260, Jun 2010.

[21] R. Ierusalimschy, L. de Figueiredo, and W. Celes, Lua 5.1 ReferenceManual. Rio de Janeiro, Brazil: Lua.org, 2006.

[22] A. Maashri, M. DeBole, M. Cotter, N. Chandramoorthy, Y. Xiao,V. Narayanan, and C. Chakrabarti, “Accelerating neuromorphic visionalgorithms for recognition,” in 49th IEEE Design Automation Confer-ence, Jun 2012, pp. 579–584.

[23] S. Kestur, M. S. Park, J. Sabarad, D. Dantara, V. Narayanan, Y. Chen,and D. Khosla, “Emulating mammalian vision on reconfigurable hard-ware,” in 20th IEEE Annu. Int. Symp. Field-Programmable CustomComputing Machines, May 2012, pp. 141–148.

13

[24] M. DeBole, Y. Xiao, C.-L. Yu, A. Maashri, M. Cotter, C. Chakrabarti,and V. Narayanan, “FPGA-accelerator system for computing biologicallyinspired feature extraction models,” in 45th Asilomar Conf. Signals,Systems and Computers, Nov 2011, pp. 751–755.

[25] A. Al Maashri, M. DeBole, C.-L. Yu, V. Narayanan, and C. Chakrabarti,“A hardware architecture for accelerating neuromorphic vision algo-rithms,” in IEEE Workshop Signal Processing Systems, Oct 2011, pp.355–360.

[26] M. S. Park, S. Kestur, J. Sabarad, V. Narayanan, and M. Irwin, “AnFPGA-based accelerator for cortical object classification,” in Design,Automation Test in Europe Conf., Mar 2012, pp. 691–696.

[27] J. Sabarad, S. Kestur, M. S. Park, D. Dantara, V. Narayanan, Y. Chen,and D. Khosla, “A reconfigurable accelerator for neuromorphic objectrecognition,” in 17th Asia and South Pacific Design Automation Conf.,Feb 2012, pp. 813–818.

[28] B. Lucas and T. Kanade, “An iterative image registration technique withan application to stereo vision,” Proc. DARPA Image UnderstandingWorkshop, pp. 121–130, Apr 1981.

[29] Z. Wei, D. Lee, and B. Nelson, “FPGA-based real-time optical flowalgorithm design and implementation,” J. Multimedia, vol. 2, no. 5, 2007.

[30] L. Yao, H. Feng, Y. Zhu, Z. Jiang, D. Zhao, and W. Feng, “An architec-ture of optimised SIFT feature detection for an FPGA implementationof an image matcher,” Int. Conf. Field-Programmable Technology, pp.30–37, Dec 2009.

[31] V. Bonato, E. Marques, and G. Constantinides, “A parallel hardwarearchitecture for scale and rotation invariant feature detection,” IEEETrans. Circuits and Systems for Video Technology, vol. 18, no. 12, pp.1703–1712, Dec 2008.

[32] J. Svab, T. Krajnik, J. Faigl, and L. Preucil, “FPGA based SpeededUp Robust Features,” IEEE Int. Conf. Technologies for Practical RobotApplications, pp. 35–41, Nov 2009.

[33] K. Cannons and R. Wildes, “Spatiotemporal oriented energy featuresfor visual tracking,” in Computer Vision ACCV 2007, ser. Lecture Notesin Computer Science, Y. Yagi, S. Kang, I. Kweon, and H. Zha, Eds.Springer Berlin / Heidelberg, 2007, vol. 4843, pp. 532–543.

[34] K. Ratnayake and A. Amer, “An FPGA-based implementation of spatio-temporal object segmentation,” IEEE Int. Conf. Image Processing, pp.3265–3268, Oct 2006.

[35] E. Tsang, S. Lam, Y. Meng, and B. Shi, “Neuromorphic implementationof active gaze and vergence control,” Proc. IEEE Int. Symp. Circuits andSystems, pp. 1076–1079, May 2008.

[36] A. Savich, M. Moussa, and S. Areibi, “The impact of arithmeticrepresentation on implementing MLP-BP on FPGAs: A study,” IEEETrans. Neural Networks, vol. 18, no. 1, pp. 240–252, Jan 2007.

[37] D. Le Ly and P. Chow, “High-performance reconfigurable hardwarearchitecture for restricted boltzmann machines,” IEEE Trans. NeuralNetworks, vol. 21, no. 11, pp. 1780–1792, Nov 2010.

[38] M. Pearson, A. Pipe, B. Mitchinson, K. Gurney, C. Melhuish, I. Gilh-espy, and M. Nibouche, “Implementing spiking neural networks forreal-time signal-processing and control applications: A model-validatedFPGA approach,” IEEE Trans. Neural Networks, vol. 18, no. 5, pp.1472–1487, Sept 2007.

[39] S. Himavathi, D. Anitha, and A. Muthuramalingam, “Feedforward neuralnetwork implementation in FPGA using layer multiplexing for effectiveresource utilization,” IEEE Trans. Neural Networks, vol. 18, no. 3, pp.880–888, May 2007.

[40] M. Shi, A. Bermak, S. Chandrasekaran, and A. Amira, “An efficientFPGA implementation of gaussian mixture models-based classifier usingdistributed arithmetic,” in 13th IEEE Int. Conf. Electronics, Circuits andSystems, Dec 2006, pp. 1276–1279.

[41] F. Benrekia, M. Attari, A. Bermak, and K. Belhout, “FPGA implemen-tation of a neural network classifier for gas sensor array applications,” in6th Int. Multi-Conf. Systems, Signals and Devices, Mar 2009, pp. 1–6.

[42] T. Nguyen, K. Chandan, B. Ahmad, and K. Yap, “FPGA implementationof neural network classifier for partial discharge time resolved data frommagnetic probe,” in Int. Conf. Advanced Power System Automation andProtection, vol. 1, Oct 2011, pp. 451–455.

[43] H. Meng, K. Appiah, A. Hunter, and P. Dickinson, “FPGA implemen-tation of naive bayes classifier for visual object recognition,” in IEEEConf. Computer Vision and Pattern Recognition Workshops, Jun 2011,pp. 123–128.

[44] H. M. Hussain, K. Benkrid, and H. Seker, “An adaptive implementa-tion of a dynamically reconfigurable k-nearest neighbour classifier onFPGA,” in NASA/ESA Conf. Adaptive Hardware and Systems, Jun 2012,pp. 205–212.

[45] A. Fazakas, M. Neag, and L. Festila, “Block RAM versus distributedRAM implementation of SVM classifier on FPGA,” in IEEE Conf.Applied Electronics, Sept 2006, pp. 43–46.

[46] D. Anguita, L. Carlino, A. Ghio, and S. Ridella, “A FPGA coregenerator for embedded classification systems,” in J. Circuits, Systemsand Computers, vol. 20, no. 2, Apr 2011, pp. 263–282.

[47] M. Misaki, Y. Kim, P. Bandettini, and N. Kriegeskorte, “Comparisonof multivariate classifiers and response normalizations for pattern-information fMRI,” NeuroImage, vol. 53, no. 1, pp. 103–118, Oct 2010.

[48] D. Cox, R. Savoy et al., “Functional magnetic resonance imaging (fMRI)brain reading: detecting and classifying distributed patterns of fMRIactivity in human visual cortex,” NeuroImage, vol. 19, no. 2, pp. 261–270, Jun 2003.

[49] S. LaConte, S. Strother, V. Cherkassky, J. Anderson, and X. Hu,“Support vector machines for temporal classification of block designfMRI data,” NeuroImage, vol. 26, no. 2, pp. 317 – 329, 2005.

[50] L. Fei-Fei, R. Fergus, and P. Perona, “Learning generative visual modelsfrom few training examples: An incremental Bayesian approach testedon 101 object categories,” Computer Vision and Pattern RecognitionWorkshop, p. 178, Jun 2004.

[51] D. Hubel and T. Weisel, “Receptive fields, binocular interaction, andfunction architecture in the cat’s visual cortex,” J Physiol (Lond.), vol.160, pp. 106–154, 1962.

[52] A. Antoniou, Digital Filters: Analysis, Design, and Applications.McGraw-Hill, 2000.

[53] J. Friedman, T. Hastie, and R. Tibshirani, “Special invited paper. Addi-tive logistic regression: A statistical view of boosting,” Ann. Statistics,vol. 28, 2000.

[54] T. Joachims, T. Finley, and C.-N. J. Yu, “Cutting-plane training ofstructural SVMs,” J. Mach. Learn. Res., vol. 77, no. 1, pp. 27–59, Oct2009.

[55] K. Crammer and Y. Singer, “On the algorithmic implementation ofmulticlass kernel-based vector machines,” J. Mach. Learn. Res., vol. 2,pp. 265–292, Mar 2002.

[56] HMAX Website. [Online]. Available:http://riesenhuberlab.neuro.georgetown.edu/hmax.html

[57] J. Mutch and D. Lowe, “Object class recognition and localization usingsparse features with limited receptive fields,” International Journal ofComputer Vision, vol. 80, pp. 45–57, Oct 2008.

Garrick Orchard received the B.Sc. degree inelectrical engineering from the University of CapeTown, South Africa in 2006 and the M.S.E. andPh.D. degrees in electrical and computer engineeringfrom Johns Hopkins University, Baltimore in 2009and 2012 respectively. He was named a Paul V.Renoff fellow in 2007 and a Virginia and Edward M.Wysocki, Sr. fellow in 2011. He is also a recipientof the JHUAPL Hart Prize for Best Research andDevelopment Project, and won the best live demon-stration prize at the IEEE Biocas 2012 conference.

He is currently a Postdoctoral Research Fellow at the Singapore Institutefor Neurotechnology (SINAPSE) at the National University of Singaporewhere his research focuses on developing neuromorphic vision sensors andalgorithms for real-time sensing on aerial platforms. His other researchinterests include mixed-signal very large scale integration (VLSI) design,compressive sensing, spiking neural networks, visual motion perception, andlegged locomotion.

14

Jacob G. Martin received a Bachelor of Scienceand the PhD degree in Computer Science fromthe University of Georgia in 1999 and 2005. Hisfirst Postdoctoral Research Fellowship was at TrinityCollege Dublin in Ireland, where researched mul-tisensory processing in collaboration with experi-mental neuroscientists. His next position was as aPostdoctoral Fellow in the Department of Neuro-science at Georgetown University Medical Centerin Washington, DC, where he worked with humanpsychophysics, EEG, and computational models of

vision to explore the dynamics of visual processing in the human brain.He is currently a Senior Staff Scientist in Applied Neuroscience at TheJohns Hopkins University Applied Physics Laboratory. His research is focusedon cognitive neuroscience, human vision, brain computer interfaces, hybridbrain-machine vision systems, biologically-inspired machine vision, numericalanalysis, spectral graph theory, information retrieval, and pattern recognition.

R. Jacob Vogelstein received the Sc.B. degreein neuroengineering from Brown University, Prov-idence, RI, and the Ph.D. degree in biomedical en-gineering from the Johns Hopkins University Schoolof Medicine, Baltimore, MD. He is the AssistantProgram Manager for Applied Neuroscience at theJohns Hopkins University (JHU) Applied PhysicsLaboratory and an Assistant Research Professor inElectrical Engineering at the JHUs Whiting School.He has worked on neuroscience technology for overa decade, focusing primarily on neuromorphic sys-

tems and closed-loop brainmachine interfaces. His research has been featuredin a number of prominent scientific and engineering journals includingthe IEEE Transactions on Neural Systems and Rehabilitation Engineering,the IEEE Transactions on Biomedical Circuits and Systems, and the IEEETransactions on Neural Networks.

Ralph Etienne-Cummings received his B. Sc. inphysics, 1988, from Lincoln University, Pennsylva-nia. He completed his M.S.E.E. and Ph.D. in elec-trical engineering at the University of Pennsylvaniain 1991 and 1994, respectively. He is currently aprofessor of electrical and computer engineering,and computer science at Johns Hopkins University(JHU). He is the former Director of Computer En-gineering at JHU and the Institute of NeuromorphicEngineering. He is also the Associate Director forEducation and Outreach of the National Science

Foundation (NSF) sponsored Engineering Research Centers on ComputerIntegrated Surgical Systems and Technology at JHU. He has served asChairman of the IEEE Circuits and Systems (CAS) Technical Committeeon Sensory Systems and on Neural Systems and Application. He was alsothe General Chair of the IEEE BioCAS 2008 Conference. He was also amember of Imagers, MEMS, Medical and Displays Technical Committee ofthe ISSCC Conference from 1999 2006. He is the recipient of the NSFsCareer and Office of Naval Research Young Investigator Program Awards. In2006, he was named a Visiting African Fellow and a Fulbright FellowshipGrantee for his sabbatical at University of Cape Town, South Africa. He wasinvited to be a lecturer at the National Academies of Science Kavli FrontiersProgram, in 2007. He has won publication awards including the 2003 BestPaper Award of the EURASIP Journal of Applied Signal Processing and BestPh.D. in a Nutshell at the IEEE BioCAS 2008 Conference, and has beenrecognized for his activities in promoting the participation of women andminorities in science, technology, engineering and mathematics. His researchinterest includes mixed signal VLSI systems, computational sensors, computervision, neuromorphic engineering, smart structures, mobile robotics, leggedlocomotion and neuroprosthetic devices.