A collection of tools and projects I have made and/or been a part of

Here you will find a good collection of Computer Vision, Machine Learning and Artificial Intelligence with a sprinkling of game development tools on the side.

Icon

Detection of Different Stages of Lungs Cancer in CT-Scan Images Using CNN on Embedded Systems

After my BSc degree was finished, I still had unquenched thirst for more knowledge within the AI and ML field. I enrolled in an AI course at the University of Essex. I worked on a some interesting projects there, however very little involved imagery, and so when it came to picking a thesis, I opted for a project that concerned imagery. The title I landed on was “Detection of Different Stages of Lungs Cancer in CT-Scan Images Using CNN on Embedded Systems”.

During this project I developed a model architecture for lightweight predictions and training, as the aim was to have the model run on a Odroid XU4, which is an embedded device development board for lightweight applications. This model was trained on the LIDC-IDRI lung cancer imaging dataset which was used for the entirety of the project. The result of the training was compared with the ResNet, MobileNet and VGG16 models as they are comparable lightweight models. Due to the time limitations of the project, the image sizes used, and training time was reduced. This is likely to have had a negative effect on the results, however, training all the models for one epoch with the current training data takes approximately 11 hours, and thus increasing the number of epochs to train will cost a lot of time. Despite this, the results of the project was very acceptable, netting me a top grade on the dissertation.

Icon

Torcs Autonomous Vechicle using the A3C algorithm

In this group project, the aim was to automate the driving of a remote-controlled vehicle with a front mounted camera. The aim was to achieve this automation using the A3C algorithm implemented in PyTorch. The idea was to train the model in a simulated environment using TORCS, an open source racing game, and then apply the training from the TORCS to the real-world model. My contribution was in image pre-processing, helping with the TORCS simulator, managing of the group and in code merging. My primary focus was on creating a pre-processing step that would consistently take any image from the simulator or the real world and make them as similar as possible. This was done by removing as much unimportant information as possible. An example video of the preprocessing steps is attached below.

After the project’s completion, I started working on some of the issues that were never successfully fixed during the group project. This was supposed to be together with another co-student from the same project, however, due to some personal reasons he pulled out after 6 months. In this time, the main problems which caused the program to fail previously was addressed and thus a version is now available that can be controlled from the reinforcement learning model. It still needs a lot of finetuning and work.

Icon

Digital Analysis of Paintings using TensorFlow

During my three years at Aberystwyth University, neural networks and especially the ones dealing with images really fascinated me. In my last semester I took two different courses which both touched on the subject of Convolutional Neural Networks(CNN), and I was hooked. I originally wanted to write a CNN in java from scratch, but my dissertation tutor said the scope of such a project was too large. She then recommended to instead use TensorFlow for the backend and use that to train a neural network to recognize the artists behind a painting. I was all in, even though I had never touched a sliver of python code in my life. I then set sail and started my journey to learn both python and TensorFlow and everything else that came with it. Since then, I have used python to at least prototype pretty much every single project I have done, and indeed completed most of my work using python. I had at one point a classifier that was working from the browser, however, due to the changes in TensorFlow since and poor managing of my server, this classifier is no longer working. Here is a link to where the web classifier used to be. I am still aiming to fix this one day, by updating the code to the newer version of

Icon

Red Alert 2 Arrow Key to WASD mod

This is the first real application that I made that attracted some attention. It used a program that’s called Auto Hotkey (AHK), which allows you to write scripts for both macros and key binds together with some custom scripts. The problem with the game was that the camera was controlled using the arrow keys, however, this meant that your left hand could not press the other key binds as efficiently due to the travel distance on the keyboard. I solved this by writing a script for AHK which allowed the rebinding of WASD to the arrow keys and vice versa, and to only to be active if and only if the active window was the game, this meant you could still use the keyboard for other things if you tab out of the game. Using this as the baseline, I wrote a batch script that would see if the game was running and end the AHK script if the game was closed. This was ran through a VBS script which disabled the black command line box, and lastly the game and scripts were launched with a C++ script, so that the game.exe could simply be renamed game.exe.old and replaced by the new one. When I last checked the status of this mod, I had a few hundred downloads, however the site has since been discontinued so I do not know how many downloads I had in the end.

Objective

Using Computer Science, Artificial Intelligence, Machine Learning and Computer Vision to make difficult tasks easy and easy tasks difficult

There is a finite amount of ways to screw it up, so how hard can it be?