{"id": "5d81b0e3-7a2c-4f19-9c6e-gmanski-krea2-v2", "revision": 0, "last_node_id": 17, "last_link_id": 22, "nodes": [{"id": 1, "type": "MarkdownNote", "pos": [-1500, -420], "size": [600, 820], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {"Node name for S&R": "MarkdownNote"}, "widgets_values": ["## Gmanski Krea 2 v2\n\nOur Krea 2 text-to-image, with two upgrades that won a same-seed A/B against v1:\n\n1. **Realism LoRA**: Realism Engine v3.1 at **0.6**, on top of the turbo LoRA (0.6).\n2. **Second pass**: the 1024×1280 result is upscaled 1.5× in latent space and re-sampled for 4 steps (euler / simple, denoise **0.4**). Finished size **1536×1920**.\n\n### What changed versus v1\n- Faces keep the age you ask for. v1 tended to add forehead lines and crow's feet; v2 doesn't.\n- Real pores, lashes and fine hair at full size, without freckles turning into dot patterns.\n- We also tried the second pass on res_2s (6 steps, 0.35). It over-sharpened freckles into stipple, so v2 uses euler.\n- We tested BloomGirls UltraRealism stacked on top too. It looked great but made faces read about 3 years younger than prompted, so it's out.\n\n### Run it\n1. Write the **Positive** prompt as plain sentences: who, where, what she's wearing, the light, the camera. Keep the \"No text…\" line at the end.\n2. Optional: put a **character LoRA** in the empty 3rd slot of the LoRA stack at 1.0, and start the prompt with its trigger word.\n3. Queue. Results land in `output/Gmanski/krea2_v2_00001.png`.\n\n### Knobs\n- **Second-pass denoise** (0.4): lower keeps the first pass exactly, higher adds more detail and drifts more. 0.3–0.45 is the useful range.\n- **Realism Engine** strength: 0.4–0.7. Lower reads a little older and plainer, higher a little younger and glossier.\n- **CFG** 1.0: the negative prompt does nothing at 1.0. ~2.0 enables it at roughly double the time.\n\n### Cost\n- **Download**: the `krea2` pack (~34 GB) plus `krea2-v2` (1.6 GB, Hugging Face, no token).\n- **VRAM**: 24 GB+. About 1.5× v1's time per image because of the second pass.\n\n### Models\n`gmanski-packs install krea2-v2` (pulls `krea2` too).\nRealism Engine v3.1 by RazzzHF (Hugging Face).\n"], "title": "Read me: Gmanski Krea 2 v2", "color": "#432", "bgcolor": "#653"}, {"id": 2, "type": "UNETLoader", "pos": [-850, -420], "size": [420, 90], "flags": {}, "order": 1, "mode": 0, "inputs": [{"name": "unet_name", "type": "COMBO", "link": null, "widget": {"name": "unet_name"}}, {"name": "weight_dtype", "type": "COMBO", "link": null, "widget": {"name": "weight_dtype"}}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [1]}], "properties": {"Node name for S&R": "UNETLoader", "models": [{"name": "krea2_raw_bf16.safetensors", "url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/diffusion_models/krea2_raw_bf16.safetensors", "directory": "diffusion_models"}]}, "widgets_values": ["krea2_raw_bf16.safetensors", "default"], "title": "Krea 2 RAW checkpoint"}, {"id": 3, "type": "CLIPLoader", "pos": [-850, -290], "size": [420, 110], "flags": {}, "order": 2, "mode": 0, "inputs": [{"name": "clip_name", "type": "COMBO", "link": null, "widget": {"name": "clip_name"}}, {"name": "type", "type": "COMBO", "link": null, "widget": {"name": "type"}}, {"name": "device", "type": "COMBO", "link": null, "widget": {"name": "device"}}], "outputs": [{"name": "CLIP", "type": "CLIP", "links": [2, 3, 5]}], "properties": {"Node name for S&R": "CLIPLoader", "models": [{"name": "qwen3vl_4b_bf16.safetensors", "url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/text_encoders/qwen3vl_4b_bf16.safetensors", "directory": "text_encoders"}]}, "widgets_values": ["qwen3vl_4b_bf16.safetensors", "krea2", "default"], "title": "Krea 2 text encoder"}, {"id": 4, "type": "VAELoader", "pos": [-850, -140], "size": [420, 60], "flags": {}, "order": 3, "mode": 0, "inputs": [{"name": "vae_name", "type": "COMBO", "link": null, "widget": {"name": "vae_name"}}], "outputs": [{"name": "VAE", "type": "VAE", "links": [21]}], "properties": {"Node name for S&R": "VAELoader", "models": [{"name": "wan21_vae_fp32.safetensors", "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_fp32.safetensors", "directory": "vae"}]}, "widgets_values": ["wan21_vae_fp32.safetensors"], "title": "Wan 2.1 FP32 VAE"}, {"id": 5, "type": "Power Lora Loader (rgthree)", "pos": [-850, 20], "size": [400, 240], "flags": {}, "order": 4, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 1}, {"name": "clip", "type": "CLIP", "link": 2}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [7, 14]}, {"name": "CLIP", "type": "CLIP", "links": []}], "properties": {"Node name for S&R": "Power Lora Loader (rgthree)", "models": [{"name": "krea2_turbo_lora_rank_64_bf16.safetensors", "url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/loras/krea2_turbo_lora_rank_64_bf16.safetensors", "directory": "loras"}, {"name": "realism_engine_krea2_v3.1.safetensors", "url": "https://huggingface.co/RazzzHF/realism_engine_krea2/resolve/main/realism_engine_krea2_v3.1.safetensors", "directory": "loras"}]}, "widgets_values": [{}, {"type": "PowerLoraLoaderHeaderWidget"}, {"on": true, "lora": "krea2_turbo_lora_rank_64_bf16.safetensors", "strength": 0.6, "strengthTwo": null}, {"on": true, "lora": "realism_engine_krea2_v3.1.safetensors", "strength": 0.6, "strengthTwo": null}, {"on": false, "lora": "None", "strength": 1.0, "strengthTwo": null}, {"on": false, "lora": "None", "strength": 0.5, "strengthTwo": null}, {}, ""], "title": "LoRA stack: turbo 0.6 + Realism Engine 0.6 + your character (slot 3)"}, {"id": 6, "type": "PrimitiveStringMultiline", "pos": [-850, 320], "size": [400, 160], "flags": {}, "order": 5, "mode": 0, "inputs": [{"name": "value", "type": "STRING", "link": null, "widget": {"name": "value"}}], "outputs": [{"name": "STRING", "type": "STRING", "links": [4]}], "properties": {"Node name for S&R": "PrimitiveStringMultiline"}, "widgets_values": ["A candid smartphone photo of a 29-year-old woman with shoulder-length chestnut hair and freckles, sitting at a sunny café window with a flat white, wearing a cream knit sweater, glancing at the camera with a small smile. Natural window light, slightly imperfect framing, natural skin texture. No text, captions, watermarks or logos anywhere."], "title": "Positive"}, {"id": 7, "type": "PrimitiveStringMultiline", "pos": [-850, 520], "size": [400, 160], "flags": {}, "order": 6, "mode": 0, "inputs": [{"name": "value", "type": "STRING", "link": null, "widget": {"name": "value"}}], "outputs": [{"name": "STRING", "type": "STRING", "links": [6]}], "properties": {"Node name for S&R": "PrimitiveStringMultiline"}, "widgets_values": ["blurry, low quality, distorted, extra fingers, deformed hands, logo, emblem, brand name, text, watermark"], "title": "Negative (no effect unless CFG > 1.0 — see readme)"}, {"id": 8, "type": "CLIPTextEncode", "pos": [-400, 320], "size": [300, 80], "flags": {}, "order": 7, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 3}, {"name": "text", "type": "STRING", "link": 4, "widget": {"name": "text"}}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [8, 15]}], "properties": {"Node name for S&R": "CLIPTextEncode"}, "widgets_values": [""], "title": "Encode positive"}, {"id": 9, "type": "CLIPTextEncode", "pos": [-400, 520], "size": [300, 80], "flags": {}, "order": 8, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 5}, {"name": "text", "type": "STRING", "link": 6, "widget": {"name": "text"}}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [9, 16]}], "properties": {"Node name for S&R": "CLIPTextEncode"}, "widgets_values": [""], "title": "Encode negative"}, {"id": 10, "type": "PrimitiveFloat", "pos": [-400, 680], "size": [300, 60], "flags": {}, "order": 9, "mode": 0, "inputs": [{"name": "value", "type": "FLOAT", "link": null, "widget": {"name": "value"}}], "outputs": [{"name": "FLOAT", "type": "FLOAT", "links": [11, 18]}], "properties": {"Node name for S&R": "PrimitiveFloat"}, "widgets_values": [1.0], "title": "CFG (1.0 = negative prompt disabled; ~2.0 enables it, ~2x time)"}, {"id": 11, "type": "Seed (rgthree)", "pos": [-400, 760], "size": [300, 130], "flags": {}, "order": 10, "mode": 0, "inputs": [], "outputs": [{"name": "SEED", "type": "INT", "links": [12, 19]}], "properties": {"Node name for S&R": "Seed (rgthree)"}, "widgets_values": [-1, "", "", ""], "title": "Seed (shared by both passes)"}, {"id": 12, "type": "EmptyLatentImage", "pos": [-400, -420], "size": [300, 100], "flags": {}, "order": 11, "mode": 0, "inputs": [], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [10]}], "properties": {"Node name for S&R": "EmptyLatentImage"}, "widgets_values": [1024, 1280, 1], "title": "Empty Latent Image (first-pass size; final is 1.5x)"}, {"id": 13, "type": "KSampler", "pos": [0, -420], "size": [360, 260], "flags": {}, "order": 12, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 7}, {"name": "positive", "type": "CONDITIONING", "link": 8}, {"name": "negative", "type": "CONDITIONING", "link": 9}, {"name": "latent_image", "type": "LATENT", "link": 10}, {"name": "seed", "type": "INT", "link": 12, "widget": {"name": "seed"}}, {"name": "steps", "type": "INT", "link": null, "widget": {"name": "steps"}}, {"name": "cfg", "type": "FLOAT", "link": 11, "widget": {"name": "cfg"}}, {"name": "sampler_name", "type": "COMBO", "link": null, "widget": {"name": "sampler_name"}}, {"name": "scheduler", "type": "COMBO", "link": null, "widget": {"name": "scheduler"}}, {"name": "denoise", "type": "FLOAT", "link": null, "widget": {"name": "denoise"}}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [13]}], "properties": {"Node name for S&R": "KSampler"}, "widgets_values": [0, "randomize", 20, 1.0, "res_2s", "beta", 1.0], "title": "Pass 1: compose (20 steps, res_2s/beta)"}, {"id": 14, "type": "LatentUpscaleBy", "pos": [0, -110], "size": [360, 90], "flags": {}, "order": 13, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 13}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [17]}], "properties": {"Node name for S&R": "LatentUpscaleBy"}, "widgets_values": ["nearest-exact", 1.5], "title": "Latent upscale 1.5x"}, {"id": 15, "type": "KSampler", "pos": [420, -420], "size": [360, 260], "flags": {}, "order": 14, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 14}, {"name": "positive", "type": "CONDITIONING", "link": 15}, {"name": "negative", "type": "CONDITIONING", "link": 16}, {"name": "latent_image", "type": "LATENT", "link": 17}, {"name": "seed", "type": "INT", "link": 19, "widget": {"name": "seed"}}, {"name": "steps", "type": "INT", "link": null, "widget": {"name": "steps"}}, {"name": "cfg", "type": "FLOAT", "link": 18, "widget": {"name": "cfg"}}, {"name": "sampler_name", "type": "COMBO", "link": null, "widget": {"name": "sampler_name"}}, {"name": "scheduler", "type": "COMBO", "link": null, "widget": {"name": "scheduler"}}, {"name": "denoise", "type": "FLOAT", "link": null, "widget": {"name": "denoise"}}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [20]}], "properties": {"Node name for S&R": "KSampler"}, "widgets_values": [0, "randomize", 4, 1.0, "euler", "simple", 0.4], "title": "Pass 2: detail (4 steps, euler/simple, denoise 0.4)"}, {"id": 16, "type": "VAEDecode", "pos": [840, -420], "size": [300, 46], "flags": {}, "order": 15, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 20}, {"name": "vae", "type": "VAE", "link": 21}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [22]}], "properties": {"Node name for S&R": "VAEDecode"}, "widgets_values": [], "title": "Decode"}, {"id": 17, "type": "SaveImage", "pos": [1180, -420], "size": [280, 60], "flags": {}, "order": 16, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 22}, {"name": "filename_prefix", "type": "STRING", "link": null, "widget": {"name": "filename_prefix"}}], "outputs": [], "properties": {"Node name for S&R": "SaveImage"}, "widgets_values": ["Gmanski/krea2_v2"], "title": "Save"}], "links": [[1, 2, 0, 5, 0, "MODEL"], [2, 3, 0, 5, 1, "CLIP"], [3, 3, 0, 8, 0, "CLIP"], [4, 6, 0, 8, 1, "STRING"], [5, 3, 0, 9, 0, "CLIP"], [6, 7, 0, 9, 1, "STRING"], [7, 5, 0, 13, 0, "MODEL"], [8, 8, 0, 13, 1, "CONDITIONING"], [9, 9, 0, 13, 2, "CONDITIONING"], [10, 12, 0, 13, 3, "LATENT"], [11, 10, 0, 13, 6, "FLOAT"], [12, 11, 0, 13, 4, "INT"], [13, 13, 0, 14, 0, "LATENT"], [14, 5, 0, 15, 0, "MODEL"], [15, 8, 0, 15, 1, "CONDITIONING"], [16, 9, 0, 15, 2, "CONDITIONING"], [17, 14, 0, 15, 3, "LATENT"], [18, 10, 0, 15, 6, "FLOAT"], [19, 11, 0, 15, 4, "INT"], [20, 15, 0, 16, 0, "LATENT"], [21, 4, 0, 16, 1, "VAE"], [22, 16, 0, 17, 0, "IMAGE"]], "groups": [], "config": {}, "extra": {"ds": {"scale": 0.62, "offset": [1480, 420]}, "gmanski_template": "krea2-v2", "generator": "scripts/build_gmanski_krea2_v2_workflow.py", "source": "https://gmanski.com/workflows/krea2-v2"}, "version": 0.4}