weeksix_25-02-2019.txt

Week Six

25/02/2019

The goals for this week:
- Practice my presentation of the project poster.
- Improve the efficiency of the convolution algorithm to gain extra speed.
- Implement the pooling layer using the Max Pool algorithm.
- String together the convolution layers.
- Document the above functions.

weekfive_18-02-2019.txt

Week Five

18/02/2019

The main focus of this week was to complete the project poster. This is an accademic poster that describes the progress of my project so far. The poster can be found at the link below.


weekfour_11-02-2019.txt

Week Four

11/02/2019

This was a huge week working on the project as I managed to complete my first convolution! This involved researching exactly how convolution works and implemting my own algorithm. The convolution function required the randomly generated filters to convolve over the input image, so creation of the randomly generated filters was also implemented. The implementation of the convolution function was quite slow and needs refining in the following week.

The test image was very large so I created an image preprocessor in order to resize the input image to 250 x 250 pixels. The preprocessor will be used in the final version of the solution in order to ensure each input image is the same size.

In addition to coding the above functions, I also worked on documenting the convolution, filter generation and image preprocessor functions, as well as completing a large portion of the project poster which documents my progress on the project so far.

weekthree_04-02-2019.txt

Week Three

04/02/2019

After completing the neural network design and gathering my training data, it was time to start coding. This week I completed the implementation of my ReLU activation function with testing to ensure the fastest method was used. The Softmax activation function was also implemented.

As part of the projects testing, I also implemented a suit of unit tests using the Python Unit Test library. The unit test suite covered tests on each of the above implemented functions using the AAA test patern.

This week I also created the Git repository I will be using for version control and the remote repository hosted on GiHub, available at the following link.



weektwo_28-01-2019.txt

Week Two

28/01/2019

The goals for this week included gathering and organising my training data. This was a large task as the data set I proposed to use was not organised into age categories as required by my neural network. I created a Python script that automatically moved the data into the correct folders, this worked by reading the file name and performing a lookup in an excel document that contained the age category.

The results from the organised data provided me with 16,937 unique images, this was lower than I expected as I found the majority of images in my data set were labelled incorrectly or simply did not have an age label. This presented a problem as this was not enough training data for the project. I created my own data set by supplementing my existing data with images from the UTKFace large scale face dataset, available at the following link:



The final count of images after including this dataset was 24,699 unique face images. This was much better than the count from the initial data set. After the testing stage of the project, I may require more images that I can obtain through upsampling techniques.

This week I also focused on my convolutional neural network design. I produced a detailed diagram of the neural network including information on my convolution layers, kernel sizes, stride and number of feature maps. I have also produced a section of my final year project that explains in detail the neural network design with justifications and supporting literature.

weekone_21-01-2019.txt

Week One

21/01/2019

This was the first official week working on the project! My goal for this week: complete my project proposal. This was a document that outlined the project, why it was important, some research I had gathered, what I was planning to build, and identifying any ethical issues. I also constructed a plan for the project that included phases, sub tasks and deadlines. I made sure to factor in my other module deadlines.

pre_project_research.txt

Pre Project research

12/2018 - 01/2019

To help prepare me to meet these goals, I’ve been researching into different machine learning technologies. Some of the things I’ve done to prepare include reading a book recommended to me by my artificial intelligence lecturer, “Deep Learning” (A. Courville, I. Goodfellow, and Y. Bengio, 2015). The book gives a great overview of different deep learning techniques including most relevant to me, Convolutional Neural Networks (CNN). The book is available at the following link:



I have also been working on a simple neural network that predicts the valuation of second-hand cars based on the age and mileage. This network wasn’t particularly accurate as there are many more variables to take into account when valuing a second hand car, however the construction of this network taught me a great deal of how a neural network functions and the maths behind them. The source code for this project can be found at the following GitHub repository:



my_project.txt

My Project

12/2018

For my final year project, I want to expand my knowledge in an area of research that I am very interested in; machine learning. Whilst on my placement year at Accenture, I got the opportunity to work on a machine learning project using a logistic regression algorithm in order to categorise words and phrases, and this sparked my passion to peruse a career in this area. I want to take the opportunity of my final year project to expand my knowledge and to produce a piece of machine learning software that I can add to my portfolio. The application of this technology will be used to classify the ages of people in provided images.

Age classification of users has many possible applications such as: restricting access to inappropriate content online, targeted advertising and even automated access to age restricted events and physical locations.

I have chosen to implement this project using convolutional neural networks as it’s an area of machine learning I have little experience in, however it has a similar goal to the logistic regression algorithm I have worked with in industry, meaning I already have a good foundation of knowledge on which to build.

I chose a project around facial recognition as it is easy to demonstrate, which will be useful as a portfolio piece in job interviews. It will also be more engaging to demonstrate at ExpoTees where I can use my application on potential employers.