--- license: cc-by-4.0 tags: - diffusion - ddpm - ddim - onnx - quickdraw - image-generation library_name: onnx pipeline_tag: unconditional-image-generation datasets: - quickdraw --- # You Are the Model - Quick, Draw! diffusion A tiny class-conditional diffusion model that draws 32x32 doodles, small enough to run a full 25-step DDIM sample in the browser. It powers **You Are the Model**, a daily drawing puzzle where the player takes over the denoising loop: at each round you pick which noise prediction to apply, your choice is fed back into the real sampler, and a bad pick genuinely derails the drawing. ## Model | | | |---|---| | Architecture | class-conditional U-Net, epsilon prediction | | Parameters | 1,929,313 (7.7 MB fp32) | | Resolution | 32x32 grayscale, values in [-1, 1] | | Classes | 24 (+1 null class for classifier-free guidance) | | Noise schedule | cosine, 1000 train timesteps | | Sampler | DDIM, 25 steps, guidance 3.0 | | Trained | 60,000 steps, batch 256, AdamW, EMA 0.9995, bf16 | | Hardware | NVIDIA GeForce RTX 3090, 1.23 h, about $0.167 | ### Classes `fish`, `flower`, `house`, `sailboat`, `smiley face`, `star`, `umbrella`, `envelope`, `t-shirt`, `ice cream`, `apple`, `banana`, `ladder`, `lightning`, `mountain`, `pants`, `wine glass`, `eyeglasses`, `snowman`, `car`, `hand`, `crown`, `donut`, `camera` ## Files | File | Purpose | |---|---| | `yatm_v2.onnx` | the browser asset - opset 17, dynamic batch | | `yatm_v2.meta.json` | class list, sampler settings, parity numbers | | `yatm_v2.abar.json` | cosine alpha-bar table, so the JS sampler matches exactly | | `ema.pt` | EMA weights (PyTorch) | | `samples.png` | fixed-seed sample sheet, one row per class | | `eval.json` | classifier gate and guidance sweep | | `metrics.jsonl` | training and validation curves | | `config.resolved.json` | the exact resolved config and environment | ## Inputs and outputs ``` x: float32 [batch, 1, 32, 32] noisy latent t: int64 [batch] timestep, 0..999 y: int64 [batch] class index, or 24 for unconditional -> eps: float32 [batch, 1, 32, 32] ``` Classifier-free guidance: run the batch twice (class and null) and combine with `eps = eps_null + w * (eps_class - eps_null)`. ## Evaluation A held-out CNN classifier (95.9% accurate on real test drawings) labels **100.0%** of fixed-seed samples as the class they were conditioned on, at the best guidance scale of 3.0. Weakest class: `fish` at 100.0%. Python and ONNX Runtime agree to `8.3e-02` maximum absolute difference over a full 25-step sample, so the browser and the training code produce the same picture from the same seed. ## Dataset and attribution Trained on the [Google Quick, Draw!](https://github.com/googlecreativelab/quickdraw-dataset) dataset (`numpy_bitmap` 28x28 drawings, padded to 32x32), which is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) by Google Creative Lab. 12,000 drawings per class were downloaded, filtered for empty and over-inked drawings and exact duplicates, then split deterministically. This model is released under the same CC BY 4.0 licence.