diff --git a/optimized/image-edit/flux2klein-9b-character-sheet-4view/README.md b/optimized/image-edit/flux2klein-9b-character-sheet-4view/README.md new file mode 100644 index 0000000..feefda1 --- /dev/null +++ b/optimized/image-edit/flux2klein-9b-character-sheet-4view/README.md @@ -0,0 +1,13 @@ +# Flux.2 Klein — four-view character sheet + +Uses the photorealistic character edit output as a reference and produces a landscape sheet with front, left-profile, right-profile, and back views. + +- Reference input: `photoreal_character_reference.png` +- Resolution: 1920×1080 +- Sampler: Euler +- Steps: 4 +- CFG: 1.0 +- Seed: `20260923` +- Tested runtime: approximately 99 seconds on the RTX 3070 + +`workflow.json` is the API prompt; `ui-workflow.json` is the native ComfyUI web workflow. diff --git a/optimized/image-edit/flux2klein-9b-character-sheet-4view/ui-workflow.json b/optimized/image-edit/flux2klein-9b-character-sheet-4view/ui-workflow.json new file mode 100644 index 0000000..42b7229 --- /dev/null +++ b/optimized/image-edit/flux2klein-9b-character-sheet-4view/ui-workflow.json @@ -0,0 +1,906 @@ +{ + "id": "flux2klein-character-sheet-4view-ui", + "revision": 0, + "last_node_id": 125, + "last_link_id": 24, + "nodes": [ + { + "id": 1, + "type": "LoadImage", + "pos": [ + -900, + 500 + ], + "size": [ + 320, + 420 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 1 + ] + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "photoreal_character_reference.png", + "image" + ] + }, + { + "id": 70, + "type": "UNETLoader", + "pos": [ + -500, + 100 + ], + "size": [ + 370, + 110 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 2 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": [ + "flux-2-klein-9b-fp8mixed.safetensors", + "default" + ] + }, + { + "id": 71, + "type": "CLIPLoader", + "pos": [ + -500, + 280 + ], + "size": [ + 370, + 150 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 3 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "qwen_3_8b_fp8mixed.safetensors", + "flux2", + "default" + ] + }, + { + "id": 72, + "type": "VAELoader", + "pos": [ + -500, + 500 + ], + "size": [ + 370, + 110 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 4, + 5 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": [ + "full_encoder_small_decoder.safetensors" + ] + }, + { + "id": 80, + "type": "ImageScaleToTotalPixels", + "pos": [ + -500, + 720 + ], + "size": [ + 270, + 140 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 1 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 6, + 7 + ] + } + ], + "properties": { + "Node name for S&R": "ImageScaleToTotalPixels" + }, + "widgets_values": [ + "nearest-exact", + 1, + 1 + ] + }, + { + "id": 99, + "type": "GetImageSize", + "pos": [ + -100, + 720 + ], + "size": [ + 230, + 120 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 7 + } + ], + "outputs": [ + { + "name": "width", + "type": "INT", + "links": [] + }, + { + "name": "height", + "type": "INT", + "links": [] + } + ], + "properties": { + "Node name for S&R": "GetImageSize" + }, + "widgets_values": [] + }, + { + "id": 124, + "type": "VAEEncode", + "pos": [ + -100, + 500 + ], + "size": [ + 230, + 100 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "pixels", + "type": "IMAGE", + "link": 6 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 12, + 13 + ] + } + ], + "properties": { + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 74, + "type": "CLIPTextEncode", + "pos": [ + 0, + 40 + ], + "size": [ + 650, + 400 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 3 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 14 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "Use the provided photorealistic character image as the exact identity and wardrobe reference. Create a professional full-body character reference sheet of the same adult male character: preserve his face, skin tone, goatee, round sunglasses, backward purple-and-green baseball cap, gold hoop earring, layered gold chains, purple satin bomber jacket, white graphic T-shirt, loose olive cargo pants, white socks, purple-white sneakers, body proportions and clothing details exactly. Neutral light gray studio background, even soft photographic lighting, consistent scale, head-to-toe framing, realistic anatomy, natural hands, clean fashion-reference presentation, no logos, no readable text, no watermarks. Arrange exactly four separate full-body views horizontally in one landscape sheet: front-facing view, left side profile, right side profile, and rear-facing back view. Keep every panel equally sized and aligned, with no borders, labels, or extra people." + ] + }, + { + "id": 82, + "type": "ConditioningZeroOut", + "pos": [ + 720, + 500 + ], + "size": [ + 220, + 80 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 14 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 15 + ] + } + ], + "properties": { + "Node name for S&R": "ConditioningZeroOut" + }, + "widgets_values": [] + }, + { + "id": 125, + "type": "ReferenceLatent", + "pos": [ + 720, + 100 + ], + "size": [ + 230, + 100 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 14 + }, + { + "name": "latent", + "type": "LATENT", + "link": 12 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 16 + ] + } + ], + "properties": { + "Node name for S&R": "ReferenceLatent" + }, + "widgets_values": [] + }, + { + "id": 123, + "type": "ReferenceLatent", + "pos": [ + 720, + 650 + ], + "size": [ + 230, + 100 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 15 + }, + { + "name": "latent", + "type": "LATENT", + "link": 13 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 17 + ] + } + ], + "properties": { + "Node name for S&R": "ReferenceLatent" + }, + "widgets_values": [] + }, + { + "id": 63, + "type": "CFGGuider", + "pos": [ + 1020, + 300 + ], + "size": [ + 270, + 160 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 2 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 16 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 17 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 18 + ] + } + ], + "properties": { + "Node name for S&R": "CFGGuider" + }, + "widgets_values": [ + 1 + ] + }, + { + "id": 61, + "type": "KSamplerSelect", + "pos": [ + 1020, + 520 + ], + "size": [ + 270, + 80 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 19 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 62, + "type": "Flux2Scheduler", + "pos": [ + 1020, + 650 + ], + "size": [ + 270, + 130 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "link": null + }, + { + "name": "height", + "type": "INT", + "link": null + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 20 + ] + } + ], + "properties": { + "Node name for S&R": "Flux2Scheduler" + }, + "widgets_values": [ + 4, + 1920, + 1080 + ] + }, + { + "id": 66, + "type": "EmptyFlux2LatentImage", + "pos": [ + 1320, + 650 + ], + "size": [ + 270, + 130 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "link": null + }, + { + "name": "height", + "type": "INT", + "link": null + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 21 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyFlux2LatentImage" + }, + "widgets_values": [ + 1920, + 1080, + 1 + ] + }, + { + "id": 73, + "type": "RandomNoise", + "pos": [ + 1320, + 260 + ], + "size": [ + 270, + 100 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 22 + ] + } + ], + "properties": { + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 20260923, + "fixed" + ] + }, + { + "id": 64, + "type": "SamplerCustomAdvanced", + "pos": [ + 1640, + 360 + ], + "size": [ + 270, + 190 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 22 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 18 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 19 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 20 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 21 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "links": [ + 23 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null + } + ], + "properties": { + "Node name for S&R": "SamplerCustomAdvanced" + }, + "widgets_values": [] + }, + { + "id": 65, + "type": "VAEDecode", + "pos": [ + 1960, + 380 + ], + "size": [ + 230, + 100 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 23 + }, + { + "name": "vae", + "type": "VAE", + "link": 5 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 24 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 9, + "type": "SaveImage", + "pos": [ + 2250, + 380 + ], + "size": [ + 320, + 270 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 24 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": [ + "fluxExperiments/imageEdit/character_sheet_4view_seed20260923" + ] + } + ], + "links": [ + [ + 1, + 1, + 0, + 80, + 0, + "IMAGE" + ], + [ + 2, + 70, + 0, + 63, + 0, + "MODEL" + ], + [ + 3, + 71, + 0, + 74, + 0, + "CLIP" + ], + [ + 4, + 72, + 0, + 124, + 1, + "VAE" + ], + [ + 5, + 72, + 0, + 65, + 1, + "VAE" + ], + [ + 6, + 80, + 0, + 124, + 0, + "IMAGE" + ], + [ + 7, + 80, + 0, + 99, + 0, + "IMAGE" + ], + [ + 12, + 124, + 0, + 125, + 1, + "LATENT" + ], + [ + 13, + 124, + 0, + 123, + 1, + "LATENT" + ], + [ + 14, + 74, + 0, + 82, + 0, + "CONDITIONING" + ], + [ + 15, + 82, + 0, + 123, + 0, + "CONDITIONING" + ], + [ + 16, + 125, + 0, + 63, + 1, + "CONDITIONING" + ], + [ + 17, + 123, + 0, + 63, + 2, + "CONDITIONING" + ], + [ + 18, + 63, + 0, + 64, + 1, + "GUIDER" + ], + [ + 19, + 61, + 0, + 64, + 2, + "SAMPLER" + ], + [ + 20, + 62, + 0, + 64, + 3, + "SIGMAS" + ], + [ + 21, + 66, + 0, + 64, + 4, + "LATENT" + ], + [ + 22, + 73, + 0, + 64, + 0, + "NOISE" + ], + [ + 23, + 64, + 0, + 65, + 0, + "LATENT" + ], + [ + 24, + 65, + 0, + 9, + 0, + "IMAGE" + ] + ], + "groups": [], + "definitions": { + "config": {} + }, + "config": {}, + "extra": { + "note": "Flux.2 Klein photorealistic character edit; Euler 4 steps CFG 1.0; seed 20260921" + }, + "version": 0.4 +} diff --git a/optimized/image-edit/flux2klein-9b-character-sheet-4view/workflow.json b/optimized/image-edit/flux2klein-9b-character-sheet-4view/workflow.json new file mode 100644 index 0000000..c9ee723 --- /dev/null +++ b/optimized/image-edit/flux2klein-9b-character-sheet-4view/workflow.json @@ -0,0 +1,202 @@ +{ + "1": { + "class_type": "LoadImage", + "inputs": { + "image": "photoreal_character_reference.png" + } + }, + "9": { + "class_type": "SaveImage", + "inputs": { + "images": [ + "65", + 0 + ], + "filename_prefix": "fluxExperiments/imageEdit/character_sheet_4view_seed20260923" + } + }, + "61": { + "class_type": "KSamplerSelect", + "inputs": { + "sampler_name": "euler" + } + }, + "62": { + "class_type": "Flux2Scheduler", + "inputs": { + "steps": 4, + "width": 1920, + "height": 1080 + } + }, + "63": { + "class_type": "CFGGuider", + "inputs": { + "cfg": 1, + "model": [ + "70", + 0 + ], + "positive": [ + "125", + 0 + ], + "negative": [ + "123", + 0 + ] + } + }, + "64": { + "class_type": "SamplerCustomAdvanced", + "inputs": { + "noise": [ + "73", + 0 + ], + "guider": [ + "63", + 0 + ], + "sampler": [ + "61", + 0 + ], + "sigmas": [ + "62", + 0 + ], + "latent_image": [ + "66", + 0 + ] + } + }, + "65": { + "class_type": "VAEDecode", + "inputs": { + "samples": [ + "64", + 0 + ], + "vae": [ + "72", + 0 + ] + } + }, + "66": { + "class_type": "EmptyFlux2LatentImage", + "inputs": { + "width": 1920, + "height": 1080, + "batch_size": 1 + } + }, + "70": { + "class_type": "UNETLoader", + "inputs": { + "unet_name": "flux-2-klein-9b-fp8mixed.safetensors", + "weight_dtype": "default" + } + }, + "71": { + "class_type": "CLIPLoader", + "inputs": { + "clip_name": "qwen_3_8b_fp8mixed.safetensors", + "type": "flux2", + "device": "default" + } + }, + "72": { + "class_type": "VAELoader", + "inputs": { + "vae_name": "full_encoder_small_decoder.safetensors" + } + }, + "73": { + "class_type": "RandomNoise", + "inputs": { + "noise_seed": 20260923 + } + }, + "74": { + "class_type": "CLIPTextEncode", + "inputs": { + "text": "Use the provided photorealistic character image as the exact identity and wardrobe reference. Create a professional full-body character reference sheet of the same adult male character: preserve his face, skin tone, goatee, round sunglasses, backward purple-and-green baseball cap, gold hoop earring, layered gold chains, purple satin bomber jacket, white graphic T-shirt, loose olive cargo pants, white socks, purple-white sneakers, body proportions and clothing details exactly. Neutral light gray studio background, even soft photographic lighting, consistent scale, head-to-toe framing, realistic anatomy, natural hands, clean fashion-reference presentation, no logos, no readable text, no watermarks. Arrange exactly four separate full-body views horizontally in one landscape sheet: front-facing view, left side profile, right side profile, and rear-facing back view. Keep every panel equally sized and aligned, with no borders, labels, or extra people.", + "clip": [ + "71", + 0 + ] + } + }, + "80": { + "class_type": "ImageScaleToTotalPixels", + "inputs": { + "image": [ + "1", + 0 + ], + "upscale_method": "nearest-exact", + "megapixels": 1, + "resolution_steps": 1 + } + }, + "82": { + "class_type": "ConditioningZeroOut", + "inputs": { + "conditioning": [ + "74", + 0 + ] + } + }, + "99": { + "class_type": "GetImageSize", + "inputs": { + "image": [ + "80", + 0 + ] + } + }, + "123": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "82", + 0 + ], + "latent": [ + "124", + 0 + ] + } + }, + "124": { + "class_type": "VAEEncode", + "inputs": { + "pixels": [ + "80", + 0 + ], + "vae": [ + "72", + 0 + ] + } + }, + "125": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "74", + 0 + ], + "latent": [ + "124", + 0 + ] + } + } +}