bhaav-e / README.md
Mohit5899's picture
Acknowledge Udgam Labs
b740f6a verified
|
Raw History Blame Contribute Delete
7.09 kB
metadata
license: mit
language:
  - en
library_name: pytorch
pipeline_tag: text-to-video
tags:
  - text-to-video
  - video-generation
  - diffusion-transformer
  - rectified-flow
  - stickers
  - animation

Bhaav-E

A compact text-to-video model for animated stickers

Project Page GitHub Open In Colab License: MIT

a crying emoji bouncing, tears falling, light blue background a red furious emoji pulsing, steam puffing from its head, dark navy background a blue success checkmark drawing itself inside a circle, confetti bursting out, white background a party popper emoji pulsing, sparkles twinkling around it, light grey background
a cool emoji with sunglasses floating gently, sparkles twinkling around it, peach background a glowing star emoji wobbling side to side, sparkles twinkling around it, dark navy background a purple loading spinner spinning round and round, pulsing, black background a screaming in shock emoji wobbling side to side, peach background

Uncurated samples (seed 0, 50 steps, guidance 3.0): the first and only sample generated for each prompt.

Model Details

Bhaav-E generates 2-second looping stickers from a text prompt. It is a 211.92M-parameter video diffusion transformer trained from scratch with rectified flow, operating in the latent space of the frozen Wan2.2 video VAE and conditioned on a frozen Flan-T5-Base text encoder.

  • Developed by: Mohit
  • Model type: latent video diffusion transformer (rectified flow)
  • Output: 17 frames, 256 × 256, 8 fps, looping
  • Language: English prompts
  • License: MIT (frozen components: Apache-2.0)
  • Code: github.com/Mohit-5899/bhaav-e
Component Specification
Denoiser (trained) 16 transformer blocks, width 768, 12 heads, 2 × 2 patches (320 tokens)
Text encoder (frozen) google/flan-t5-base, max 35 tokens
Autoencoder (frozen) Wan2.2 VAE, 48 latent channels
Sampler 50 Euler steps, classifier-free guidance 3.0, time shift 5.0

Files

File Description
bhaav_e.safetensors Bhaav-E (recommended): EMA weights, step 40,000, fp32
config.json model size and sampler defaults
text/info.json, latents/vae_config.json text-encoder settings and VAE latent statistics used at inference
r1/ baseline checkpoint trained on the natural attribute distribution, same format
code/ model definition (videodit.py) and sampler (sample.py)

Uses

Intended use: generating short animated stickers, reaction emoji and UI micro-animations, and research on small video diffusion models, compositional generalization and evaluation with procedurally generated data.

Out of scope: subjects outside the training vocabulary, photorealistic video, high resolution or long clips.

How to Use

No installation: open the Colab notebook, select Runtime → Run all, and open the gradio.live link it prints. This runs the full web demo on a free GPU.

Python (CPU or GPU):

git clone https://github.com/Mohit-5899/bhaav-e && cd bhaav-e
pip install torch diffusers transformers sentencepiece safetensors pillow numpy huggingface_hub
import sys; sys.path.insert(0, "space")
from bhaav import Bhaav, save_gif

pipe = Bhaav()                       # downloads this checkpoint, the VAE and the text encoder
frames = pipe.generate("a crying emoji bouncing, tears falling, light blue background",
                       steps=50, cfg=3.0, seed=0)
save_gif(frames, "sticker.gif")

Prompt format: subject, motion, effect, background. The model supports 30 subjects (10 emotion faces, 10 animated emoji, 10 UI animations), 9 motions, 12 effects and 12 background colours; the full list is in the GitHub README.

Training

Data 85,816 procedurally rendered clips; 61,571 used for training, with effects balanced per subject
Objective rectified flow, MSE on predicted velocity
Optimizer Muon (lr 0.02) for transformer weight matrices, AdamW (lr 2e-4) for other parameters
Batch size × steps 64 × 40,000
Precision bf16 autocast
Compute 1 × NVIDIA RTX PRO 4500 (32 GB), ≈ 3.6 hours

Evaluation

256 prompts with attribute combinations seen in training and 256 with combinations held out from training. Automatic checkers read subject, motion, effect, background and accent from each generated clip; errors are counted only where the checker reads the corresponding real clip correctly.

Model Seen combinations Unseen combinations
Bhaav-E 2.0% 3.3%
Bhaav-E r1 (baseline) 2.0% 5.3%

Error rate on any attribute, guidance 3.0. The dominant failure mode is effect leakage: adding the effect most associated with a subject when none is requested. The unseen difference between the models is not statistically significant (exact sign test, p = 0.23; one training seed each). Full report: runs/r2/RESULTS.md.

Limitations

  • Closed vocabulary: only the 30 trained subjects, 12 effects and 12 backgrounds.
  • 256 × 256 resolution and 2-second duration.
  • Unrequested effects are occasionally added.
  • Evaluated with one seed per model and about 250 prompts per split.

Citation

@misc{bhaave2026,
  title        = {Bhaav-E: A Compact Text-to-Video Model for Animated Stickers},
  author       = {Mohit},
  year         = {2026},
  howpublished = {\url{https://github.com/Mohit-5899/bhaav-e}}
}

Acknowledgements

Built on Wan2.2, Flan-T5 and Microsoft Fluent Emoji (MIT, training artwork).

Special thanks to Udgam Labs for openly publishing the code, training logs and cost reports of their small models; their published recipe and model size served as the reference for this work.