William Profit

Computing Student
Imperial College London

Download CV


Image Denoising
IC Hack 2019
Digit Classifier
AI Chess Player
Terrain Generation

Huawei Image Denoising

Huawei hosted an image denoising competition across UK universities in which a friend and I competed. We first read many different research papers to get an idea of the state of the art methods and notably drew inspiration from this paper. We implemented a deep fully convolutional residual neural network, dealing with 4k images and datasets of tens of gigabytes. The sheer size of the data proved to be the most challenging aspect of the project. It required us to segment the data, stream it to the GPU for training and then reassemble everything seemlessly. We also used several tricks to augment the data and generate better results using multiple passes on rotated image subsets.



I worked in a team of 6 over 24 hours developing an application to assist the visualisation of 3D models in lectures using Augmented Reality (AR). The application allows the lecturer to load a 3D model which all students will see in front of them in AR using their phones. The lecturer can highlight or hide certain parts whilst students can freely rotate around the model.

We were awarded the first prize in the Best Mobile App category for our work, which proved truly rewarding.

Devpost Github


I did this project over the course of the 2018 summer period as a way to learn about neural networks. I wanted to create my very own implementation in order to understand the whole inner workings of NNs without having to rely on third party machine learning libraries.

I have therefore implemented a feed-forward neural network trained with backpropagation and SGD to recognise hand written digits from the well known MNIST dataset.

Writing all these algorithms from scratch proved truly insightful and gave a me deeper understanding of neural networks.


Terrain Generation

Back in 2015 I was experimenting with C++ and OpenGL. I created a procedural 3D terrain generation program using Simplex and Perlin noise, which was able to generate mountain-like terrain on the fly. For performance a Level Of Detail system gradually decreases the number of vertices of futher objects in real time.

AI Chess Player

For our end of 1st year project at Imperial my team and I created an automated chess player in C with OpenCV. The first step was to use Computer Vision to extract the state of the board and determine where pieces lay. After the state has been successfully detected we send a request to an AlphaZero instance running on SingularityNET, a decentralized network of AIs running on the Ethereum blockchain to get an answer move. This essentially allows anyone with a phone to play against AlphaZero and maybe hope to draw.

We were awarded the "Most Interesting Extension" prize and 2nd place overall for our year.


I am currently pursuing a Computer Science degree at Imperial College London. Over the years I have developed several projects in different programming languagues. Highlights of these projects are available here.

My interest in computing mainly revolves around backend and low level technologies. I have also been diving into the exciting world of Machine Learning. Aside from computing and engineering in general, I also appreciate philosophy and reading.


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.