Blog
Release · 12 October 2026 · 3 min read

Chitra Tiny, a 212M-parameter text-to-image model trained from scratch

A small diffusion transformer that makes 256×256 pictures from a sentence, trained on about 4.7 million public-domain and CC0 images. Open weights, measured results and known failures.

Chitra (चित्र) means picture. Chitra Tiny is our first image model: a 212M-parameter English text-to-image model that turns a sentence into a 256×256 picture, in about three seconds on an Apple-silicon Mac.

Chitra Tiny output: a lighthouse on dark rocks against a purple and yellow sunset sky
“a lighthouse on a rocky coast at sunset” · seed 0 · guidance 7 · 50 steps. Saved on the first try, not picked from several.

It is a small research model — for learning how diffusion models behave, for experiments, and as a starting point for fine-tuning — and we have tried to be precise about what it can and cannot do.

What we built

  • A diffusion transformer trained from scratch. 16 layers, width 768, 212M parameters, trained with rectified flow. No weights came from any other image model.
  • Two existing open models, used unchanged: Google's Flan-T5-Base reads the prompt, and Stability AI's sd-vae-ft-mse decoder turns the model's 32×32 latent into pixels.
  • About 4.7 million training images, all released by their creators into the public domain or under CC0, with automatically generated captions. We held out 5,000 images before training for evaluation.

Results

We measured the released weights three ways. The first two use held-out images of the kind Chitra Tiny was trained on, so they favour it; GenEval is neutral.

TestChitra TinyReference
FID, 5,000 held-out images (lower is better)22.1Not comparable to FID on other datasets
CLIP score, ViT-L/14 (higher is better)26.2Real held-out images score 27.5
GenEval overall (higher is better)0.219Stable Diffusion 1.5 scores 0.426

GenEval breaks that score down by task, using the official code and 553 prompts with four images each:

TaskChitra TinyStable Diffusion 1.5
Single object0.600.96
Colours0.390.77
Counting0.150.38
Two objects0.100.37
Colour attribution0.070.05
Position0.010.04

Our harness gave Stable Diffusion 1.5 0.426, against 0.43 published by the GenEval authors, so it reproduces the published setup.

Two findings stood out. First, how common an object is matters a great deal: single-object accuracy was 0.85 for the most common third of objects and 0.33 for the rarest. Second, rewriting prompts to look like training captions made scores worse, not better. Data coverage and model size, more than the sampler, set the score.

Where it fails

These were all saved on the first try, so they are what you should expect for subjects like these:

Two red apples, not three
“three red apples on a table” — two apples. Counting is weak.
A sign covered in garbled letter shapes
“a shop sign that says OPEN” — letter-like shapes, no word. It cannot write legible text.

People are another weak spot: faces and hands come out distorted. Images are 256×256 only, prompts are English only, and the training images over-represent historic, Western and museum imagery.

Chitra Tiny has no safety filter of its own. If you put it in front of the public, add your own moderation, and do not use it to depict real people or news events.

Try it

The quickest way is the try box on the model page: type a prompt in your browser, free and without signing in. To run it yourself:

git clone https://github.com/UdgamLabs/chitra-tiny && cd chitra-tiny
pip install -r requirements.txt
python chitra_tiny.py "a lighthouse on a rocky coast at sunset" --n 4

The first run downloads the 0.85 GB weights plus the text encoder and decoder; no login is needed. It picks an NVIDIA GPU, Apple silicon or CPU automatically — about three seconds per image on an Apple-silicon Mac, tens of seconds on a CPU. Run python app.py for a local playground in your browser.

The weights are on Hugging Face, the evaluation notes have every number with its settings, and the walkthrough shows a gallery of saved outputs. Weights, code and docs are Apache-2.0.