AS-I β€” Artificial Stupidity Image

A text-to-image latent diffusion model trained entirely from scratch on a laptop. No Stable Diffusion, no CLIP, no pretrained weights of any kind.

13.7M parameters. 14 MB at int8. 186 ms per image on a CPU.

Two variants are included, and the difference between them is the point.

AS-I AS-I-300
Glyphs it can draw 1254 300
Training samples per glyph 36 150
Final val loss 0.0913 0.0374
Size 14 MB 14 MB
Time per image 186 ms 192 ms

AS-I vs AS-I-300

Top row AS-I, bottom row AS-I-300, same prompts and seed: red heart Β· pizza Β· grinning face Β· cat face Β· birthday cake Β· hamburger Β· strawberry Β· cookie

Identical architecture, identical compute, identical size β€” 59% lower loss, and the difference is visible rather than statistical. AS-I-300's strawberry has seeds and a leaf where AS-I's is a red blob; its cookie has chocolate chips; its pizza has pepperoni.

A fixed parameter budget buys a fixed amount of detail. Spreading it over 4Γ— more identities spends it on breadth instead of sharpness. Small models are not bad models β€” they are models that have to choose.

Example input and output

AS-I samples

python sample.py --prompt "red heart"
python sample.py --prompt "a large red heart in the center on a black background"
python sample.py --preset AS-I-300 --prompt "pizza"
Prompt What it draws
red heart a clean, correctly-shaped red heart
soccer ball black-and-white ball, pentagon pattern intact
rocket rocket body with fins and nose cone
cat face orange cat face with ears and whiskers
a small pizza in the top left on a navy background exactly that

The prompt grammar β€” this is a closed vocabulary

<name>
a <size> <name> in the <position> on a <bg> background

size      small | medium | large
position  top left | top | top right | left | center | right
          bottom left | bottom | bottom right
bg        white | black | navy | grey | cream | teal

Prompt adherence, scored automatically over 120 prompts:

Attribute AS-I AS-I-300
background 100% 100%
size 100% 100%
position 88% 93%

What it cannot do

two astronauts playing chess β€” nothing. It knows emoji names and placement words. Novel combinations of known words compose fine (pizza in the top left never appeared in training). Novel concepts do not, and no amount of training at this size will change that.

Open-domain text-to-image needs ~1B parameters and ~150,000 A100-hours. This is what the same problem looks like when the budget is a laptop and the rule is that every weight has to be yours.

Architecture

prompt -> word-level text encoder (0.45M params, trained here, NOT CLIP)
       -> cross-attention U-Net (13.2M) on a 16x16x4 latent, 8 DDIM steps
       -> VAE decoder -> 64x64 image

No codebook. The obvious reference (RQ-VAE, arXiv:2203.01941) spends 16,384 codes Γ— 256 dims Γ— 4 quantizers β‰ˆ 16.8M params β€” about 67 MB β€” on lookup tables alone, more than this entire model. A continuous 4-channel latent needs no table.

4Γ— downsampling, not 8Γ—. Stable Diffusion uses 8Γ—, but it applies that to 512px images and lands on a 64Γ—64 latent. Applying 8Γ— to a 64px image lands on 8Γ—8 β€” the same ratio with 64Γ— fewer cells β€” and reconstructs a rainbow as a brown smear at 21.7 dB. At 4Γ— it is 26.3 dB and colour survives.

Files

File What
AS-I-prior.pt the 1254-glyph diffusion prior + text encoder
AS-I-300-prior.pt the 300-glyph variant
AS-I-vae.pt the autoencoder (shared by both)

Usage

git clone https://github.com/ayushmaninbox/artificial-stupidity
cd artificial-stupidity/as-image-model
pip install -r requirements.txt
python sample.py --prompt "red heart"

License

MIT for code and weights. Training images are rendered from OpenMoji (CC BY-SA 4.0) β€” attribute OpenMoji if you redistribute renders or derivatives.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for ayushmaninbox/artificial-stupidity-image