Add model card (experimental spike, not for production)
Browse files
README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: other
|
| 3 |
+
license_name: experimental-research-only
|
| 4 |
+
tags:
|
| 5 |
+
- controlnet
|
| 6 |
+
- pose
|
| 7 |
+
- krea-2
|
| 8 |
+
- experimental
|
| 9 |
+
- not-for-production
|
| 10 |
+
base_model: krea/Krea-2-Turbo
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Krea 2 Turbo — Pose ControlNet (S0 SPIKE checkpoints)
|
| 14 |
+
|
| 15 |
+
> ⚠️ **PURELY EXPERIMENTAL — DO NOT USE IN PRODUCTION.**
|
| 16 |
+
> These are **feasibility-spike** checkpoints from a GO/NO-GO experiment, **not** a finished
|
| 17 |
+
> model. They were trained on a tiny corpus (5,000 pairs) for a fixed step budget to answer a
|
| 18 |
+
> single yes/no question — *can* a Krea-native pose control branch be trained at all. They are
|
| 19 |
+
> intermediate artifacts kept only to bootstrap ControlNet **interface wiring**. The shippable
|
| 20 |
+
> overlay will be a **separate, retrained** model on the full corpus. Expect artifacts,
|
| 21 |
+
> incomplete pose fidelity, and no stability guarantees.
|
| 22 |
+
|
| 23 |
+
## What this is
|
| 24 |
+
|
| 25 |
+
A from-scratch **pose ControlNet control branch** for the **Krea 2 Turbo** image model
|
| 26 |
+
(Qwen3‑VL‑4B TE + ~12B 28‑block single‑stream DiT + Qwen‑Image VAE; CFG‑free rectified‑flow,
|
| 27 |
+
8‑step). Krea 2 has a bespoke backbone with **no transferable ControlNet**, so the control branch
|
| 28 |
+
was trained from scratch. This repo hosts two intermediate checkpoints from the S0 spike:
|
| 29 |
+
|
| 30 |
+
| File | Step | Notes |
|
| 31 |
+
|---|---|---|
|
| 32 |
+
| `control_step5000.safetensors` (+ `.json`) | 5000 | primary — best pose fidelity in the spike |
|
| 33 |
+
| `control_step4500.safetensors` (+ `.json`) | 4500 | fallback (clean pre‑resume checkpoint) |
|
| 34 |
+
|
| 35 |
+
Each `.safetensors` **requires its `.json` sidecar** — it carries the injection metadata
|
| 36 |
+
(`inject_offset`, `n_blocks`, residual‑clamp `tau`, step) the inference harness reads to
|
| 37 |
+
configure the branch. Do not use a checkpoint without its sidecar.
|
| 38 |
+
|
| 39 |
+
## Architecture / recipe (spike)
|
| 40 |
+
|
| 41 |
+
- Branch = a trainable copy of the first **N=7** of 28 Krea single‑stream DiT blocks (~3.30B params).
|
| 42 |
+
- Reads the **VAE‑encoded pose‑skeleton latent**; a **zero‑initialised output projection** per block
|
| 43 |
+
adds a residual to the **frozen** main stream (base fully frozen: DiT + TE + VAE).
|
| 44 |
+
- **`inject_offset=1`** — branch injects into main block *i+1*, **skipping main block 0**.
|
| 45 |
+
- **Residual RMS clamp `τ=0.15`** — each injected residual is capped at `τ × RMS(main image tokens)`.
|
| 46 |
+
- Loss = Krea flow‑matching over the full noise schedule. Trained bf16 branch, lr 2e‑5, 512², batch 4.
|
| 47 |
+
|
| 48 |
+
These three choices (skip block 0, clamp, and a low‑lr + weight‑decay optimizer group on the
|
| 49 |
+
zero‑init projections) are load‑bearing: without them the zero‑init projection grows under AdamW
|
| 50 |
+
until the branch overwrites the frozen stream and generation collapses to noise.
|
| 51 |
+
|
| 52 |
+
## Intended use
|
| 53 |
+
|
| 54 |
+
**Wiring / integration testing only** — standing up and validating a Krea ControlNet inference
|
| 55 |
+
route (candle/CUDA `generate_krea_control_stream`, and later the MLX twin). Requires:
|
| 56 |
+
|
| 57 |
+
- the **Krea 2 Turbo** base weights (`krea/Krea-2-Turbo`), and
|
| 58 |
+
- the `krea-control-infer` harness from the `candle-gen` spike branch
|
| 59 |
+
(`claudeanthropic/sc-8460/krea-2-pose-controlnet-s0-spike`).
|
| 60 |
+
|
| 61 |
+
Recommended `control_scale` band **0.5–0.75** (default ~0.6–0.7); `control_scale = 0` is bit‑exact
|
| 62 |
+
to the base model. Values ≥ ~0.9 over‑drive the branch and degrade image quality (haze / halftone).
|
| 63 |
+
|
| 64 |
+
## Known limitations
|
| 65 |
+
|
| 66 |
+
- **Body pose‑lock** is strong and generalizes to unseen skeletons at 5k pairs; **head‑direction**
|
| 67 |
+
is *usable but scale‑sensitive* (best near `control_scale` 0.5), not rock‑solid.
|
| 68 |
+
- Image quality **degrades as `control_scale` rises** — a fundamental authority‑vs‑fidelity
|
| 69 |
+
tradeoff, sharper here because the base is frozen, CFG‑free, and few‑step. Not fully removable by
|
| 70 |
+
more data.
|
| 71 |
+
- Trained at **512²** only. Skeleton convention = OpenPose **body‑18 + head‑direction**
|
| 72 |
+
(nose/eyes/ears); **no hands, no dense face**.
|
| 73 |
+
|
| 74 |
+
## Training data & attribution
|
| 75 |
+
|
| 76 |
+
Trained on ~5,000 pairs derived from **COCO train2017 `person_keypoints`** ground‑truth annotations
|
| 77 |
+
(skeletons rendered in the controlnet_aux OpenPose drawing convention) with **COCO Captions** as the
|
| 78 |
+
text conditioning. COCO annotations are **CC BY 4.0**; COCO images are Flickr mixed‑license. This
|
| 79 |
+
checkpoint is a derived model artifact for research/feasibility only.
|
| 80 |
+
|
| 81 |
+
## Provenance
|
| 82 |
+
|
| 83 |
+
SceneWorks epic 8459 (Krea 2 pose ControlNet), story sc-8460 (S0 spike, verdict = GO).
|
| 84 |
+
Experimental — retained solely to bootstrap interface wiring; superseded by the production overlay
|
| 85 |
+
once the full‑corpus run (S3) lands.
|