TAMArt
2026Token Activation Maps for artwork description: a heatmap for every word a multimodal LLM generates, isolating the visual evidence that word draws on. Code and results for the ICPR 2026 paper.
12 projects
Research code, and a few things built purely because they were fun.
Token Activation Maps for artwork description: a heatmap for every word a multimodal LLM generates, isolating the visual evidence that word draws on. Code and results for the ICPR 2026 paper.
A multimodal agent that answers questions about paintings by retrieving evidence from Wikipedia and reasoning over it in context. Includes WikiFragments, a dataset of multimodal fragments mined at scale.
A Wikipedia-scale multimodal dataset — over 5M image–text pairs across 42M examples — built to give retrieval models something to ground on. Extracted with a modified WikiExtractor that keeps a page's images alongside its paragraphs. Released with ArtSeek.
Text-guided multi-mask inpainting for artworks: a multimodal LLM proposes what belongs in each missing region, and a diffusion model paints it. Published at WACV 2025.
Few-shot semantic segmentation that takes points, boxes or masks as visual prompts and handles many classes at once. Built with the CILab team, published at ECAI 2025.
A small web app for looking at your own CLIP embeddings: project an image collection into two dimensions and browse the space to see what the model considers close to what.
My MSc thesis work: generating descriptions of paintings from a noisy corpus of LLM-written captions, using CLIPScore to weigh each example by quality.
Worked solutions to the exercises in Bishop's Pattern Recognition and Machine Learning, typeset in LaTeX. Written while going through the book properly rather than skimming it.
Merged work on projects I use. Most of it is in Porcupine, a Python editor in tkinter, where six patches went in around the editor's cut/copy/paste behaviour and file-tree ordering. Also one patch each to scikit-learn (parameter validation for make_classification) and PyKEEN.
A from-scratch encoder–decoder captioning model — the project where I learned how attention actually works rather than reading about it.
A Texas Hold'Em engine in Python, written for the pleasure of getting hand evaluation and betting rounds exactly right.
A soccer championship simulator — fixtures, tables, and a season that plays itself out.
More on GitHub.