UDGAM LABS · Text-to-image model · 212M parameters
Chitra Tiny
A 212M-parameter English text-to-image model trained from scratch by Udgam Labs. It makes 256×256 images from a text prompt and runs comfortably on a laptop: about 3 seconds per image on an Apple-silicon Mac, faster on a GPU.
Chitra (चित्र) means "picture".
More: visual walkthrough · code, examples and evaluation on GitHub · evaluation details

One image per prompt, seeds 0–15, guidance 7, 50 steps. Prompts, left to right and top to bottom: a red apple on a wooden table · a lighthouse on a rocky coast at sunset · a black and white photo of a city street · an oil painting of a vase of flowers · a dog sitting in the grass · a sailing ship on a calm sea · a portrait of an old man with a beard · a mountain landscape with snow and pine trees · two cats sleeping on a sofa · a bowl of soup next to a spoon · a red car parked in front of a house · a watercolor painting of a bird on a branch · a church with a tall tower · a bridge over a river in autumn · a plate with a slice of cake · a woman holding an umbrella in the rain.
| Developer | Udgam Labs |
| Parameters | 212M (diffusion transformer: 16 layers, width 768) |
| Output | 256×256 RGB |
| Method | latent rectified-flow diffusion, classifier-free guidance |
| Text encoder | google/flan-t5-base (frozen, Apache-2.0) |
| Image decoder | stabilityai/sd-vae-ft-mse (frozen, MIT) |
| Training | from scratch, on about 4.7 million public-domain and CC0-licensed images with automatically generated captions |
| Licence | Apache-2.0 |
Quick start
pip install torch transformers diffusers safetensors huggingface_hub pillow
git clone https://huggingface.co/udgamlabs/Chitra-Tiny && cd Chitra-Tiny
python chitra_tiny.py "a lighthouse on a rocky coast at sunset" --n 4 # writes chitra_0.png ... chitra_3.png
from chitra_tiny import ChitraTiny
pipe = ChitraTiny.from_pretrained("udgamlabs/Chitra-Tiny") # or the local folder
images = pipe("an oil painting of a vase of flowers", n=4, guidance=7, steps=50, seed=0)
images[0].save("flowers.png")
A local web playground is included: pip install gradio, run python app.py, then open http://127.0.0.1:7860.
Settings:
- Guidance (default 7): higher follows the prompt more literally; 3–5 gives more variety.
- Steps (default 50): 25 is about twice as fast with a small loss in detail.
- Seed: changes the picture.
- Negative prompt: optional, things to avoid.
What it is good at, and what it is not
Chitra Tiny is a small research model. It is good at:
- photographs and old photographs
- paintings and illustrations
- landscapes, buildings, vehicles, food and simple single subjects
It is weak at:
- less common everyday objects (for example frisbees, toasters, carrots)
- several objects in one picture, counting and positions ("a cup left of a laptop")
- people, especially faces and hands
- writing legible text in images
The output is 256×256, so fine detail is limited.
Evaluation
All numbers below were measured by us, with the same seeds and settings for every model in each comparison.
| Test | Chitra Tiny | Notes |
|---|---|---|
| FID, 5,000 held-out images (lower is better) | 22.1 | Guidance 4, 50 steps. Held-out images come from the same kind of public-domain and CC0 photos it was trained on |
| CLIP score, ViT-L/14 (higher is better) | 26.2 | Real held-out images with their own captions score 27.5 |
| GenEval overall (higher is better) | 0.190 at guidance 4 · 0.219 at guidance 7 | 553 prompts × 4 images. Stable Diffusion 1.5 scored 0.426 in our same harness |
GenEval breakdown at guidance 7:
| Single object | Two objects | Counting | Colours | Position | Colour attribution |
|---|---|---|---|---|---|
| 0.60 | 0.10 | 0.15 | 0.39 | 0.01 | 0.07 |
GenEval asks for the 80 everyday object types of the COCO dataset. Chitra Tiny scores 0.85 on single objects that are common in its training images, but only 0.33 on rare ones. The gap to larger models comes mostly from data coverage and model size.
Where it falls short
All numbers are from the tables above.
- Prompts with several parts. GenEval overall 0.219 at guidance 7, against 0.426 for Stable Diffusion 1.5 in the same harness. It is weakest on position (0.01), colour attribution (0.07), two objects (0.10) and counting (0.15).
- Rare objects. 0.85 on single objects that are common in its training images, 0.33 on rare ones.
- Prompt match. CLIP score 26.2, against 27.5 for real held-out images with their own captions.
- The kinds of picture it gets wrong are listed under What it is good at, and what it is not.
Intended use and limitations
Intended use: research, education, experimentation with small diffusion models, and as a starting point for fine-tuning.
Not suitable for:
- depicting real people
- news or factual imagery
- any use where errors or biases could cause harm
Not safety-filtered:
- Training images come from curated public-domain and CC0 collections.
- The model has no safety filter of its own.
- Add your own content moderation for any public-facing use.
Training images and captions reflect their sources, which over-represent historic, Western and museum imagery. Expect these biases in its outputs.
Licence and attribution
- Weights and code: Apache-2.0.
- Dependencies: Chitra Tiny downloads and uses google/flan-t5-base (Apache-2.0) and stabilityai/sd-vae-ft-mse (MIT).
- Training data: the training images were released by their creators into the public domain or under CC0.
Citation
@misc{chitratiny2026,
title = {Chitra Tiny: a 212M text-to-image model trained from scratch},
author = {Udgam Labs},
year = {2026},
url = {https://huggingface.co/udgamlabs/Chitra-Tiny}
}
About Udgam Labs. Udgam Labs is an independent AI research lab. We work from first principles: before we build, we understand why things work, whether we are training a model, fine-tuning one or applying AI to a new problem. Udgam (उद्गम) is Sanskrit for origin. udgamlabs.com
- Downloads last month
- 20
