Implementation of HMAX with spikes

The goal of this group is to create a system that uses the HMAX neural algorithm to perform identification of the objects in the visual field of a silicon retina.

Architecture of the system

The HMAX algorithm defines 4 computational layers and a classifier to perform the image recognition task on the input provided by a silicon retina.
The layers used are depicted in the image:

  • S1 - This layer implements Gabor filters for a particular direction and a particular scale of the input stimuli;
  • C1 - This layer collects all the input from the previous layer to provide some tolerance to shift and size; usually this layer is composed by 4 orientations and 8 scales for each orientation.
  • S2 - This layer collects input from cells of the previous layer across all the four orientation. Each cell of this layer responds to the input provided by the cells of the previous layer through a Gaussian-like function that represents the euclidean distance between a new input and a stored prototype;
  • C2 - This layer computes the global maximum of the input provided by the S2 layer cells, so that the output of this layer is both shift- and scale-invariant.

On the top of this architecture, it is possible to use a classifier to determine the object that is in the field of view of the input (in our case, the silicon retina).

The architecture has been revisited to cope with the hardware available during the workshop. In our case we used the convolutional chips provided by Bernabe Linares-Barranco to perform the function of layer S1; all the other layers, have been performed using a software neural network simulator running on a computer. The convolutional chips provided nine Gabor filters with three orientations (horizontal, vertical and 45° diagonal) and three scales. The classifier on the top has been trained to identify three objects:

  • a vertical bar , whose response was identifier by the output
  • a grid , whose response was identifier by the output
  • a butterfly , whose response was identifier by the output

The color that identifies each of the output cell represents the output firing rate of the correspondent output cell.