With a background in Mathematics from the University of Warwick, I specialize in machine learning applications across the life sciences. My career began in data consultancy, where I built data pipelines for clients. As a Machine Learning Engineer, I have conducted research, developed infrastructure, and created tools to enhance the research productivity of biologists. Currently, I am developing and scaling machine learning models for the sequence and structure analysis of small molecules and proteins, which are critical for drug discovery and development. My expertise spans the full software development lifecycle, from model development to MLOps, bridging the gap between machine learning research and engineering to solve critical problems.
An exploration of Group Equivariant convolutions applied to image segmentation, with Wandb for experiment tracking.
An LLM-powered flash card generation for studying any topic of interest using Claude-2. Submission to the 2023 Anthropic London Hackathon.
Training RL agents using Unity ML-Agents. This shows how to interact with environments provided by Unity, and uses a PyTorch implementation of PPO from OpenAI’s spinning up library, instead of using mlagents-learn directly. There is some parallelisation of environments using MPI which allows for faster training.
Streamlit app that takes uploaded audio/video of cat sounds, and tries to categorise them into 1 of 10 emotions. The model is based off the M5 architecture trained on roughly 3000 labelled cat audio clips. A link to the deployment can be found here https://share.streamlit.io/dogeplusplus/cat-alan/main/app.py.
A submission to the HuggingFace Dreambooth Hackathon. Generate images of Jaffa Cakes using a fine-tuned Stable Diffusion.
An implementation of U2-Net using Flax and JAX to detect visually distinctive image regions from the perspective of the human visual system.
neural-style makes use of a pre-trained model from TensorFlow Hub. By uploading a content image and a style one can create funky art. This is currently deployed as a HuggingFace space and can be found here https://huggingface.co/spaces/dogeplusplus/neural-style.
PyTorch implementation of Soft Actor-Critic to play around with MuJoCo environments. Includes mlflow logging to record experiments and explore different model/algorithm hyperparameters.
PyTorch demonstration of how to perform model distillation using the KL-divergence loss term. An example of student teacher networks.
Convert the fur coats of tabby cats to tortoiseshell and vice versa using a TensorFlow implementation of Cycle-GAN. Features include support for UNet and ResNet generators, saving/retraining, Tensorboard logging, and visualisation with Streamlit. I use DVC for dataset versioning, and Prefect flows to perform batch jobs such as scraping images using the PetFinder API or serializing to TFRecords.
Rust video player that prints directly to the terminal. Using the ansi_term create one can print coloured pixels. termivision shows how to use the OpenCV rust bindings to parse image/video data and transform them into coloured text.
Implementation of Vision Transformer in Haiku and JAX.
An exploration of Group Equivariant convolutions applied to image segmentation, with Wandb for experiment tracking.
Ray tracer challenge using Rust
Convert images to ASCII art using Rust