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
File size: 6,315 Bytes
a495b1a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | """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}")
|