LDM Pixel Art

Chris Street, 30 Jan 2023

Caves, beaches, enchanted forests, high desert, glitzy apartments, science fiction scenes, factories, post-apocalyptic wastelands: oh boy, it's synthesized 'pixel art'!

These are random scenes in the 'pixel art' style in my v1 LDM finetune. The specific genre I'm going for here is a mid/late 1980s PC game with good graphics (e.g. Sierra On-line adventure game, Defenders of the Crown-type RPG/interactive fiction, Prince of Persia-type platformer) as it appeared on a IBM-compat with an EGA video board. 16-bit era pixel art is more popular to imitate -- much broader color palette -- but it's less interesting to me for a simple reason: it is often easier to make pleasing imagery at low pixel resolution and high color depth than it is at high pixel resolution and low color depth, and of course low resolution/low color depth is the most difficult of all. Earlier pixel art was also often put together without digitization tools besides, perhaps, early graphics tablets or light pens (anybody old enough to have used one?) so they have a certain crafted charm that pixel art of the later common "scan a painting, reduce to screen resolution and quantize to 256 colors" variety lacks.

Training the model to make interesting pictures under such constraints is useful in other domains as well: the simplification and shorthanding done to concepts to make them appear as pixel art in this limited style is also useful in rendering other forms of caricature. The model does not 'understand' the rules of pixel art in any sense you or I would recognize; it doesn't 'know' that it's intended to create an image out of rectangular elements of a specific size (that is not 1 pixel) and chosen from a small set of colors (say, 16 different chosen from a fixed palette of 64). It just imitates the examples it's seen as best as it's able, and after a lot of training, it can make a good pastiche that (simply by rote) follows the 'rules' most of the time. The model converges to use a small number of colors approximating the EGA palette, and does interesting things with dithering, creating shadows or shading with different densities (some of these things would be impossible on the actual period hardware, but they're nifty). My v2 finetune will be trained with more varied styles of this type of pixel art.

You can do 'animations' through interpolation, of course. Here's a video of the model interpolating between pixel art latents!

You can also download a "funpak" of 3,600 randomly generated pixel art scenes in this style, 640 × 512 pixels. (The "funpak" includes the lightly-curated examples below and many hundreds of similar quality.) These were produced by version 1 epoch 16 of the finetune: Pixel Art Funpak