I worked on this project to improve my skills in Machine Learning and Deep Learning.

My first hands-on project on deep learning was the cats and dogs image classification using Kaggle's dataset. Everything started almost a year ago when I started my PhD in Autonomous Underwater Vehicles at Newcastle University. The concept of the project is to create an autonomous vehicle capable not only to detect underwater objects (mainly the underwater infrastructure) but also to be able to examine in depth the integrity of such structures. Hence to give the appropriate solutions and take actions to mitigate any given detected faults. Such a project requires to master and understand in-depth mathematical and statistical concepts.

Fortunately, I had to spend only a small amount of my time remembering linear algebra and statistics since I had been taught all these in my previous academic years. So, I focused on the most basic concepts of machine learning, such as clustering, support vector machines, linear and logistic regression etc. But, all these were to abstract and general to me, so I started to look at what could possibly do to learn all these concepts by doing instead of just reading.

At the same time, I joined the university's machine learning course offered by the CS school, and the first assignment was to use Kaggle's Titanic dataset to predict which passengers would survive. Upon completing the assignment, I was so fascinated to continue with machine learning, and I decided to start another project more relevant to my area, and thus I started the cats-and-dogs image classification. During my journey to image classification, I learned a fair amount of the TensorFlow and Keras frameworks, how to preprocess the data, and how to split them into training, validation and test datasets.

Also, I learn to use deferent techniques (such as data augmentation and feature extraction using pre-trained models) on the data in order to get better and more accurate results. I even wrote scripts which performs bulk rename on the photos and splits the data into training, validation and test datasets. Finally, I experiment a lot using virtual environments for the project and work the image classification on both pure python scripts as well as using jupyter notebooks.