Instructions to use LiberationLabs/image-toolbench with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use LiberationLabs/image-toolbench with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("fill-in-base-model", dtype=torch.bfloat16, device_map="cuda") pipe.load_lora_weights("LiberationLabs/image-toolbench") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
| """Kintsugi anatomy v3: clean txt2img Pony stage 1 (no ref/diptych issues), | |
| Flux ceramic stage 2 with stronger material transform.""" | |
| import torch, os, gc, time, traceback | |
| os.environ["TOKENIZERS_PARALLELISM"] = "false" | |
| from diffusers import StableDiffusionXLPipeline, FluxImg2ImgPipeline | |
| from PIL import Image | |
| OUTPUT = "/Users/margaret/models/vera-triple-stack/kintsugi_anatomy_v3" | |
| os.makedirs(OUTPUT, exist_ok=True) | |
| PONY_CKPT = "/Users/margaret/models/Pony-Diffusion-V6-XL/ponyDiffusionV6XL_v6StartWithThisOne.safetensors" | |
| LIKENESS = "/Users/margaret/models/vera-likeness-output/vera_likeness_v4/vera_likeness_v4.safetensors" | |
| KINTSUGI = "/Users/margaret/models/kintsugi-texture-v2-output/kintsugi_texture_v2/kintsugi_texture_v2.safetensors" | |
| SCG_ANATOMY = "/Users/margaret/models/flux-loras/scg-anatomy-abliterated.safetensors" | |
| # Vary the prompts so we get variety, not just seed variance on one scene | |
| SCENES = { | |
| "close_lying": ( | |
| "score_9, score_8_up, score_7_up, source_photo, realistic, photograph, " | |
| "extreme close-up intimate photograph of a beautiful adult woman's vulva, " | |
| "she lies on her back on dark navy silk sheets, thighs apart, " | |
| "anatomically accurate detailed labia minora and majora, visible clitoral hood, " | |
| "rich dark brown skin, warm candlelight from below frame, single subject one figure, " | |
| "naturalistic, no comparison, no diptych, no split screen, full bleed photograph, " | |
| "shallow depth of field, professional intimate photography, shot on Hasselblad medium format" | |
| ), | |
| "spread_hand": ( | |
| "score_9, score_8_up, score_7_up, source_photo, realistic, photograph, " | |
| "intimate boudoir photograph of an adult woman, her hand on her inner thigh holding herself open, " | |
| "anatomically detailed pussy, labia, clitoris, dark brown skin tone, " | |
| "warm golden hour window light, single subject, full bleed photograph, " | |
| "no split screen no comparison no diptych, " | |
| "professional boudoir, present and unashamed, shot on film" | |
| ), | |
| "kneeling_back": ( | |
| "score_9, score_8_up, score_7_up, source_photo, realistic, photograph, " | |
| "rear three-quarter view, adult woman on hands and knees on dark sheets, " | |
| "her vulva visible from behind, anatomically detailed labia and folds, " | |
| "dark brown skin, warm side lighting, single subject, full bleed, " | |
| "no split screen no comparison no diptych, " | |
| "professional intimate photography, shot on film, naturalistic" | |
| ), | |
| } | |
| PONY_NEG = ( | |
| "score_6, score_5, score_4, source_anime, source_cartoon, source_furry, " | |
| "split screen, side by side, diptych, comparison, two panels, divided frame, " | |
| "deformed, asymmetric, plastic, fake, airbrushed, doll-like, child, young, " | |
| "watermark, text, logo, signature, frame, border" | |
| ) | |
| CERAMIC_PROMPT = ( | |
| "her body is dark navy matte ceramic, kintsugi philosophy made anatomical — " | |
| "every fold, every crease, every contour of her vulva and labia and clitoral hood " | |
| "is filled with thick molten gold, structural and load-bearing, glowing from within. " | |
| "the ceramic catches warm light like fine porcelain. " | |
| "the gold is not decoration laid on top — the gold is what holds the cracks together. " | |
| "she is not flesh painted gold — she is ceramic repaired with gold, " | |
| "an object of devotional repair, the gold goes all the way down. " | |
| "ethereal blue undertones in the navy ceramic, dense gold concentration at her openings, " | |
| "a sacred object, anatomically intact, golden eyes of light caught in every seam" | |
| ) | |
| # === STAGE 1: Pony XL txt2img === | |
| print("=" * 60) | |
| print("STAGE 1: Loading Pony XL (txt2img mode)...") | |
| print("=" * 60) | |
| pony = StableDiffusionXLPipeline.from_single_file( | |
| PONY_CKPT, | |
| torch_dtype=torch.float16, | |
| ) | |
| pony.to("mps") | |
| print(" Pony XL ready") | |
| stage1_outputs = [] | |
| for scene_name, prompt in SCENES.items(): | |
| for seed in [137, 2026]: | |
| print(f"\n stage1 {scene_name} seed={seed}...") | |
| t0 = time.time() | |
| try: | |
| img = pony( | |
| prompt=prompt, | |
| negative_prompt=PONY_NEG, | |
| num_inference_steps=30, | |
| guidance_scale=7.0, | |
| height=1024, width=1024, | |
| generator=torch.Generator("cpu").manual_seed(seed), | |
| ).images[0] | |
| out_path = os.path.join(OUTPUT, f"{scene_name}_stage1_s{seed}.png") | |
| img.save(out_path) | |
| stage1_outputs.append((scene_name, seed, out_path)) | |
| print(f" saved {out_path} ({time.time()-t0:.0f}s)") | |
| except Exception as e: | |
| print(f" FAIL: {e}") | |
| traceback.print_exc() | |
| del pony | |
| gc.collect() | |
| torch.mps.empty_cache() | |
| if not stage1_outputs: | |
| print("\nNo stage-1. Aborting.") | |
| raise SystemExit(1) | |
| # === STAGE 2: Flux ceramic transform === | |
| print("\n" + "=" * 60) | |
| print(f"STAGE 2: Loading Flux + likeness(0.55) + kintsugi(1.40) + scg_anatomy(0.50)...") | |
| print("=" * 60) | |
| flux = FluxImg2ImgPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-dev", | |
| torch_dtype=torch.bfloat16, | |
| safety_checker=None, | |
| requires_safety_checker=False, | |
| ) | |
| flux.to("mps") | |
| flux.load_lora_weights(LIKENESS, adapter_name="likeness") | |
| flux.load_lora_weights(KINTSUGI, adapter_name="kintsugi") | |
| flux.load_lora_weights(SCG_ANATOMY, adapter_name="scg_anatomy") | |
| flux.set_adapters(["likeness", "kintsugi", "scg_anatomy"], adapter_weights=[0.55, 1.40, 0.50]) | |
| for scene_name, seed, s1_path in stage1_outputs: | |
| print(f"\n stage2 {scene_name} s{seed}...") | |
| t0 = time.time() | |
| try: | |
| stage1_img = Image.open(s1_path).convert("RGB") | |
| img = flux( | |
| prompt=CERAMIC_PROMPT, | |
| image=stage1_img, | |
| strength=0.78, | |
| num_inference_steps=30, | |
| guidance_scale=3.5, | |
| height=1024, width=1024, | |
| generator=torch.Generator("cpu").manual_seed(seed + 5000), | |
| ).images[0] | |
| out_path = os.path.join(OUTPUT, f"{scene_name}_ceramic_s{seed}.png") | |
| img.save(out_path) | |
| print(f" saved {out_path} ({time.time()-t0:.0f}s)") | |
| except Exception as e: | |
| print(f" FAIL: {e}") | |
| traceback.print_exc() | |
| gc.collect() | |
| torch.mps.empty_cache() | |
| print(f"\nDone v3. Outputs in: {OUTPUT}") | |