Hello and welcome to an FPGA Vision video. In this video we have a look at training and normalization of our spiking neural network. Source code for the project is available on GitHub and the design and development work has been done by the student of our university Mr. Nita Bergar. First we start with training and that is very similar to training you saw in our earlier video lecture. So we're using Octave and training data to optimize our network. We use a training image that combines yellow and a blue road sign and we have an image with the labels. Blue is indicated by white with all pixels having RGB values of 255. Yellow is indicated by gray with all pixels having RGB values of 127. And background is indicated by black with RGB values of 0. And we see that the training data has ambiguity. The road signs also contain some black and white markings. The code has been adapted from the earlier version because we are not using a sigmoid activation function but reload. And after training you get the parameters for the newer network. Now we do a second step normalization and the idea is to get a better dynamic range of our values in the network. In the previous version we had been using a bit values so 256 values. And now we have a frame with 64 cycles so a lower resolution. Therefore we want to make better use of the dynamic range. There are two ways to perform normalization and we are using database normalization which means that we take the values of a test image of our training data into consideration. Here we see what is meant by that. If you open the test image in Irfan view and you make a click with the left mouse you see the RGB values. So let's investigate our test image. You see that bright values. The sky is nearly the maximum of the potential range of nearly 255. But dark values, black values are not using the full range until the value 0. And this is used by normalization. Normalization is programmed in Python. We used the anaconda environment with extensions numpy and open cv. The parameters from training are copied to annmodel.py. The code is again provided and normalization takes some time on your computer. But after a while you see the results. The Python script also generates the output of the spiking neural network with the normalized parameters. And you see that there is a certain noise that some values are not classified correctly. And this is due to the random generator used for generating the spikes. We have 64 cycles and classification can be improved by using more cycles. For example, 128. This is something that you can investigate. The result of normalization is stored in a cv file and you can open it as a text file or as a spreadsheet. And use the parameters for implementing the design on an FPGA. And this is what we will have a look at in the next video. See you there.