Teaching my PC how to read numbers

Neural Networks are stupid, yet extremely powerful!

~Myself [when the model is not learning]

Wow, bold statement to begin with! This said, I am indeed a “statistician” and I have to belittle my closest “competitors”, right?

Anyway, if you are still interested in how I made my PC recognize and read House Numbers, at the point of becoming so good at that to passing the feared mother with glasses test, just keep on reading!

The Task | SVHN Dataset

During my Erasmus in Portugal, I had the chance to attend a Machine Learning course called ADNE (to be fancy, Aprendizagem com Dados Não Estruturados), that revolved on the basic aspects of Neural Networks. One of the aspects that I enjoyed the most about this course, was the fact that it was extremely practical, with several projects on real-life data.

As I said, I’m far from being an expert on NNs, but if you’d like to know more about it, you have to watch the following series on YouTube!

One of this project involved the Street View House Numbers (SVHN) Dataset, a real-world image dataset made up by more than 600.000 images obtained from house numbers in Google Street View.

The task was pretty simple on theory: to build a Neural Network algorithm that is able to correctly identify the house number from any given image of the SVHN Dataset.
On a second thought, though, we need to consider the following points:

  • Not every house has the same number of digits
  • The colour and font of each house number may vary
  • Images may be taken from different angles and distances

This complicates the problem considerably, as it is necessary to address these issues when designing the algorithm.

The Solution

The solution was based on a Convolutional Neural Network, and I have included all the data, the codes and the weights of the algorithm in a GitHub repository 😊