Clover Image Tiny 🤗 is a compact 512×512 diffusion model built for
low-latency, consumer-grade generation: local creative tools, edge
applications, and private on-device workflows such as phone inference through
Core ML. It starts from BK-SDM-Tiny's proven compressed Stable Diffusion v1.4
U-Net and gives it a second, fully recorded distillation pass against the full
frozen SD v1.4 teacher. Clover preserves the tiny 323.4M-parameter denoiser and
standard Diffusers compatibility while adding its own refreshed weights,
creator-selected visual character, reproducibility record, adapters,
inpainting, and local/on-device product stack.
The goal is straightforward: bring useful text-to-image generation closer to
the consumer device instead of assuming a large cloud model for every request.
That local-first design is built with even lower end-to-end product latency in
mind—especially where on-device execution can remove a cloud round trip.
Results vary with the prompt, seed, scheduler, and number of denoising steps.
For masked image editing, use the dedicated
Clover Image Tiny Inpaint model →.
It is a separate 9-channel adaptation with its own recommended pipeline and
Core ML resources.
The demo exposes prompt, negative prompt, seed, guidance, dimensions,
scheduler, and 4–100 conventional Diffusers inference steps. It creates one
image per request and keeps the packaged safety checker enabled.
The package figure includes the text encoder, VAE, tokenizer/configuration, and
the enabled upstream safety checker; it is therefore larger than the denoiser
alone. Component sizes are approximate runtime-footprint context, not a claim
that every byte is active in every backend.
1.2 What Clover adds to BK-SDM-Tiny-2M
Clover is a downstream, materially modified checkpoint of
nota-ai/bk-sdm-tiny-2m,
not a new or further-compressed architecture. It retains the same block-removed
Stable Diffusion 1.x U-Net topology and parameter count. The tokenizer, text
encoder, and VAE are byte-identical to the pinned upstream components; the
meaningful model-level change is the additionally distilled Clover U-Net
weights.
Aspect
BK-SDM-Tiny-2M
Clover Image Tiny
Training lineage
Its model card reports 50,000 distillation-pretraining iterations on 2,256,472 LAION-Aesthetics pairs
Inherits the pinned aad3e0e8 checkpoint, then adds a separately audited 500-step Clover distillation run
Teacher and objectives
SD v1.4 compression lineage with output and feature KD
Re-distilled against the exact pinned SD v1.4 teacher using equal-weight diffusion-target, teacher-output, and six-point normalized feature losses
Clover calibration data
—
Deterministically selected 1,000-pair PD3M set; license-filtered to CC0/Public Domain Mark items with a checksummed deletion audit and manifest
Trainable scope
Upstream release
U-Net only; teacher, text encoder, and VAE remained frozen
U-Net architecture
Block-removed U-Net, ~323.4M parameters
Same topology and ~323.4M parameters; weights are modified
Product target
Efficient compressed Stable Diffusion baseline
Low-latency consumer products: desktop-local generation, edge deployment, and Core ML phone inference
Runtime envelope
Original compact baseline
Same parameter count and effectively the same measured latency/memory class—no denoiser-size penalty for the Clover refresh
Release additions
Upstream BK-SDM model
Reproducible checkpoint identity, local runner, benchmark evidence, Core ML resources, style LoRAs, inpainting companion, and iOS integration
That makes Clover a quality-refreshed, product-oriented evolution in the same
compact runtime envelope, rather than merely a rename or a larger model. Its
advantage is the complete path from a small conventional checkpoint to
consumer-facing use: reproducible PyTorch inference, Core ML conversion,
native iPhone integration, style adapters, inpainting, and a hosted demo. The
exact checkpoint was selected after paired visual evaluation because its output
character was preferred for Clover's gallery and product direction.
The small shared-runtime benchmark below reinforces the efficiency story:
Clover averaged 1.024 s versus 1.027 s for BK-SDM-Tiny-2M on the same A10G
recipe, while peak allocation differed by only about 3 MB. Clover scored higher
on the CLIP prompt proxy for 6 of the 16 fixed prompts. BK-SDM-Tiny-2M retained
the higher overall mean (0.3246 versus 0.3195), so this small benchmark is
best read as evidence that Clover preserves the base model's efficiency and
competitive small-model behavior while delivering a distinct checkpoint and a
broader consumer-ready ecosystem—not as a universal ranking of image quality.
The same tiny-glass-greenhouse prompt shows the base output alongside the three
style adapters. These are visual references for the corresponding LoRA cards.
Clover is compared with its pinned BK-SDM-Tiny-2M base and two public
same-family references using 16 prompts, identical seeds, 512×512 output, 30
DDIM steps, guidance 7.5, and a shared NVIDIA A10G runtime. The measurement is
an engineering comparison, not a human-preference leaderboard.
The table keeps denoiser size and loaded pipeline size separate. The former is
the most useful apples-to-apples model comparison; the latter includes the
text encoder, VAE, and other loaded components and is runtime context rather
than a download-size metric.
CLIP cosine is only a prompt-adherence proxy. It is not a human-quality score,
FID, safety evaluation, or evidence that these models are interchangeable.
The complete protocol, machine-readable results, and generated examples are in
benchmarks/text-to-image/ and the
full benchmark report.
Four-prompt small-model comparison
4. iPhone and Core ML
The companion Clover Image Tiny iOS project
follows Apple platform conventions and exposes prompt, negative prompt, steps,
guidance, seed, image count, scheduler, random generator, and compute target.
Its model picker downloads SHA-256-verified, immutable Core ML resources from
Hugging Face; the large weights are not committed to the Xcode project or
bundled into the app.
The base catalog stores the shared text encoder, VAE decoder, safety checker,
and tokenizer once:
The context-aware v2 release distills a pinned SD inpainting teacher with
diverse free-form and object-like masks. It improved held-out masked MAE by
19.3% over v1. Recommended settings are DPM-Solver++, 20 steps, CFG 6.0, and a
96-pixel mask-context crop; the runtime composites through the exact mask so
unmasked pixels remain unchanged.
A worked add blue sunglasses edit is shown in the
inpainting model card.
In Diffusers, Clover's published attention-only style LoRAs can also be loaded
on the inpainting pipeline because their target layers retain the same shapes.
Adapters that modify the four-channel input convolution are incompatible with
the nine-channel U-Net. Dynamic LoRA loading is a separate deployment feature:
the currently shipped stateless Core ML inpainting path does not expose it.
5. Run locally
Download once, then generate offline with the bundled runner. Python 3.11 and
3.12 are supported.
--device auto selects CUDA when PyTorch can see an NVIDIA GPU and otherwise
uses CPU. After the first download, --local-files-only prevents network
access during generation.
6. Generation controls
The command above is ready to copy. Change these flags to explore the model:
Flag
Accepted values
Default
What it controls
--prompt
Non-empty text
Required
What to generate
--negative-prompt
Text, or empty
Empty
Details to discourage; the starter commands and live demo use blurry, distorted, low detail
--steps
4–100
50
Diffusion iterations; more steps take longer and do not guarantee a better image
--guidance-scale
0.0–20.0
7.5
How strongly the image follows the prompt
--scheduler
pndm, ddim, euler, euler-a, dpmpp-2m
pndm
Sampling method
--width
256–768, divisible by 64
512
Output width
--height
256–768, divisible by 64
512
Output height
--num-images
1–4
1
Images generated in one run
--seed
0–(2⁶³−1)
1337
Repeatable starting seed
--device
auto, cuda, mps, cpu
auto
Compute backend
--local-files-only
Flag
Off
Require an already-downloaded local model
The reference configuration is 50-step PNDM, guidance 7.5, 512×512, one
image, seed 1337, and an empty negative prompt. The live demo pre-fills
blurry, distorted, low detail; the local runner leaves the field empty unless
you pass the flag.
For multiple images, the first uses the requested filename and later images use
numbered names such as clover-image-tiny-02.png. Seeds advance from the
requested seed. A JSON sidecar beside the first PNG records every resolved
setting, output filename, seed, checksum, and safety result. Existing planned
outputs are never overwritten.
Run python model/examples/generate.py --help for the complete CLI reference.
7. Hardware and operating systems
System
Automatic backend
Precision
Current evidence
iPhone (iOS 17+)
Core ML
mixed/compiled
GitHub project and chunked download path linked above
Apple-silicon Mac
MPS
fp16
Measured locally on an M4 Pro
Windows/Linux with NVIDIA
CUDA
fp16
Supported code path; performance not measured
CPU-only macOS/Windows/Linux
CPU
fp32
Supported code path; performance not measured
Windows AMD/DirectML
—
—
No packaged DirectML path
Keep at least 2 GB free for the model alone and additional room for the Python
environment and caches; no formal total-install minimum has been measured.
Larger images and batches need more memory; lower --width, --height, or
--num-images if necessary.
The measured Mac reference used a 24 GB Apple M4 Pro and completed one 512×512
image in 18.21 seconds with fp16 MPS. Its process-lifetime maximum RSS was
631,341,056 bytes. This is a measured point, not a minimum-RAM claim. No Core
ML package is required for the Python path.
Seeded generation is repeatable within the selected runtime. Different
devices, dtypes, kernels, and dependency builds can produce different pixels.
9. About this release
Clover Image Tiny is a conventional knowledge-distillation checkpoint trained
for 500 optimizer steps on an exact licensed 1,000-pair calibration set. This
was a real U-Net optimization run—not a repackaging operation. Its final cursor
records 4,000 microsteps and 4,000 sample presentations, with finite training
rows and nonzero gradients throughout.
The model was initialized from
nota-ai/bk-sdm-tiny-2m@aad3e0e8ba61b7cb9f64869dc4e586f8ad9d3665
and distilled with a frozen
CompVis/stable-diffusion-v1-4@133a221b8aa7292a167afc5127cb63fb5005638b
teacher. It is a genuinely modified checkpoint, but it was not trained from
random initialization.
Six source-audited BK-Tiny ↔ SD v1.4 internal feature mappings
Reproducibility
Seed 1337 · atomic checkpoints every 50 steps · exact resume proven at step 100
Training hardware
One NVIDIA A100-SXM4-80GB
Each objective contributed something complementary: the diffusion term retained
the standard epsilon-prediction task, output KD pulled the compact student
toward the full teacher's denoising prediction, and feature KD aligned internal
representations at six explicitly mapped points across the down, attention, and
up paths. Teacher execution used no_grad; no teacher, CLIP text-encoder, or
VAE gradients were accumulated. This gives Clover a targeted weight refresh
without increasing its U-Net parameter count or abandoning standard Stable
Diffusion/Diffusers compatibility.
This repository contains the PyTorch/Diffusers checkpoint. Core ML artifacts,
style adapters, and the companion iOS project are versioned separately and
linked above.
10. Quality and known behavior
The included gallery demonstrates recognizable subjects across colorful
scenes, products, food, an animal, a landscape, and an interior.
Individual results vary by prompt, seed, scheduler, and step count. More
steps increase runtime but do not guarantee a better result.
Hands, anatomy, exact counts and relationships, and readable text can be
difficult.
The small-model comparison is an engineering benchmark with a CLIP
prompt-adherence proxy, not a controlled human-preference study.
Resolution and batch size multiply memory use.
11. Safety
The upstream safety checker is packaged and enabled in both the supported
runner and hosted demo. A flagged output may be returned as a black placeholder;
the JSON sidecar records nsfw_content_detected so the result is not silent.
The checker is useful but not a complete moderation system and can miss harmful
content or over-filter benign content.
Applications should add controls appropriate to their audience and review
outputs before sharing them. Do not use the model for consequential decisions,
identity claims, medical or legal conclusions, harassment, exploitation,
illegal activity, or uses prohibited by CreativeML OpenRAIL-M.
12. Training lineage and data
Clover fine-tuning data: exactly 1,000 accepted image-caption pairs from
Spawning/PD3M@2a5eb24a8dccf245acd8e56341761aee06da0bdf
Split: 973 train, 17 validation, and 10 test records
Data gate: CDLA-Permissive-2.0; accepted items retain CC0-1.0 or Public
Domain Mark 1.0 provenance
Preprocessing: deterministic center crop and 512×512 JPEG conversion,
version clover-pd3m-center-crop-512-jpeg95-v1
The set was chosen by a deterministic hash ordering from the pinned PD3M
revision, then validated for license, dimensions, MIME type, source
organization, payload integrity, and deletion-list status. The resulting shard,
manifest, rejection log, selection statistics, and preprocessing recipe were
all checksummed. This is a deliberately small calibration pass layered on top
of BK-SDM-Tiny-2M's much larger inherited pretraining—not a claim that Clover
learned general image generation from only 1,000 examples.
The 1,000 records describe the Clover fine-tuning run. The student and teacher
already contain knowledge from larger upstream corpora. Their pinned model
cards and weight licenses are disclosed, while complete item-level provenance
for all foundational pretraining is not available to this project.
See DATA_PROVENANCE.md for the portable manifest identity and
MODEL_DATA_LICENSES.md for the complete component ledger.
13. Citation
If Clover Image Tiny is useful in your work, please cite the model release:
bibtex
1@software{lozadaperez2026cloverimagetiny,
2 author = {Lukas Lozada Perez},
3 title = {Clover Image Tiny: Compact Local Text-to-Image Diffusion},
4 year = {2026},
5 url = {https://huggingface.co/neonforestmist/Clover-Image-Tiny}
6}
14. Licenses
The model weights are a derivative under CreativeML OpenRAIL-M. The example
runner and packaging code are under Apache-2.0. Dataset and item-level terms
remain separate. Read LICENSE, LICENSE-MODEL-CREATIVEML-OPENRAIL-M.txt,
LICENSE-CODE, and MODEL_DATA_LICENSES.md before redistribution or use.
The hero mosaic is user-supplied presentation artwork included by explicit
request for display in this public model repository. It is not benchmark
evidence, its panel-generation provenance is not claimed, and this package
does not grant a downstream reuse license for it.
checksums.json covers every file in the immutable validated release package
at the recorded builder commit. Later model-card-only revisions are additionally
preserved by the Hugging Face Git history.