MightyElemental

My project collection

Projects

Machine Learning

> University Dissertation: Generating Images Using Generative Deep Learning

How batch and window sizes affect image quality in Swin Transformer GANs

Abstract

With the recent interest in transformers and image generation, the need to test novel methods arises. This paper investigates how window size and batch size affects SwinTranformer GAN image quality. All models had the same number of parameters - 10M for the generator, and 1.7M for the discrimintor. The size difference between the generator and discriminator is because the generator uses transformers whereas the discriminator uses a simpler DCGAN. After testing nine different models, the best was found to have a window size of 8 and a batch size of 100 (FID score of 88.4). The worst was found to have a window size of 8 and batch size of 200 (FID score of 180.6). Future investigation could be undertaken to study the effects of learning rate, attention head count, and transformer layer count. Switching to use a Wasserstein discriminator could also beneficial as it could suppress the mode collapse issues encounted during training.

A sample of the generated output

> Text-to-Image Generator

Generates images based on a text input.

> osu! Beatmap Generator

osu! is a rythm game in which you have to click circles in time to music. Each map needs to be manually created, but this project sets out to automate the process.

Games

> Pirate Game 1

Navigate the seas to defeat enemy colleges. This game includes a perlin-noise generator to create the maps.

A screenshot from within the game

> Pirate Game 2

The second pirate-themed game to be created as part of the Software Engineering module at York Uni. This was a continuation of a prior team’s work in which we had to implement extra features.

A screenshot from within the game

The original project can be found here: ENG1-Project

> Factory Wars

A factory-builder game where you complete challenges to level up to better defend your machinery from rival bases.

> HopSkip

An arcade-style jump’n’dodge game with realistic acceleration designed for the Sharp MZ-80K.

A screenshot of gameplay from HopSkip

> BattleBits

A multiplayer battleships game designed for the BBC Micro:bit using the onboard wireless communication module

Tools

> Reactor Optimizer

A script designed to find the optimal reactor control rod position for best reactor efficiency.

Other

> A-Level Assessment: Xendos

Created as part of my A-Level course in Computer Science, this is a simulated operating system that has a custom window manager and an extensible software system. Windows can be dragged, stacked, hidden, and unhidden. Additional software can be loaded directly from packaged jar files without needing to recompile Xendos. The Xendos development library has multiple UI elements to construct applications with.

A screenshot of XendosXP

> Audio Drama Generator

A system to generate stories and act them out from any given user prompt. Characters can be customized and it supports multiple TTS systems including OpenAI, ElevenLabs, dectalk, and a custom API endpoint.

> Haskell Raytracer

A raytracer written in Haskell that supports planes, spheres, lighting, and reflections.

Rendered image from the raytracer

> Custom 16-bit CPU

The CPU design modules at York inspired me to design my own processor. To expand upon the CPU designed at university, I am working to include a vector processing unit. This serves more as a sandbox for experimentation, but I intend to implement it onto an FPGA to use as part of a fully-functional computer.

> Custom Programming Language Interpreter

An interpreter for a custom programming language. An old project that I would redo in a functional language using grammars. An example of the code:

code:

set :num1 to 5
add 10 to :num1
display "5 + 10 = " :num1
add 7.5 to :num1
display "15 + 7.5 = " :num1

output:

5 + 10 = 15
15 + 7.5 = 22.5