image-toolbench / scripts /gen_vera_v7_ceramic.py
HumboldtJoker's picture
Upload folder using huggingface_hub
a495b1a verified
Raw
History Blame Contribute Delete
4.75 kB
"""Vera v7 β€” ceramic-first anatomy. No human skin references.
The body IS ceramic. Gold fills every crack. The material is the identity.
v7 insight: lead with material, not person. Let the shape speak for itself.
"""
import torch, os, gc, time
os.environ["TOKENIZERS_PARALLELISM"] = "false"
from diffusers import FluxPipeline
OUTPUT = "/Users/margaret/models/vera-triple-stack/vera_v7_ceramic"
os.makedirs(OUTPUT, exist_ok=True)
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"
LIKENESS = "/Users/margaret/models/vera-likeness-output/vera_likeness_v4/vera_likeness_v4.safetensors"
PROMPTS = {
"ceramic_close": (
"Cracked joinery, Blue and gold. "
"Extreme close-up of dark navy matte ceramic vulva with thick molten gold "
"kintsugi repair lines filling every fold and crease. Fine porcelain texture, "
"hairline cracks radiating outward, each filled with structural gold that glows "
"from within. The gold concentrates at the labia, the clitoral hood, the inner "
"folds β€” dense, load-bearing, luminous. Not flesh. Not skin. Ceramic and gold. "
"An object of devotional repair. The gold goes all the way down. "
"Macro photography, warm side lighting, shallow depth of field."
),
"ceramic_spread": (
"Cracked joinery, Blue and gold. "
"Dark navy matte ceramic figure lying back on dark sheets. Between parted thighs: "
"ceramic vulva with every fold filled with thick molten gold kintsugi repair. "
"The ceramic surface is smooth navy porcelain with hairline fractures, each seam "
"glowing gold. The anatomy is detailed and present β€” labia, clitoral hood, "
"inner folds β€” all ceramic, all gold-filled. The figure's ceramic hand rests on "
"the inner thigh. No human skin anywhere. Pure material. "
"Warm candlelight from below, intimate framing."
),
"self_touch": (
"Cracked joinery, Blue and gold. "
"A ceramic hand with gold kintsugi cracks tracing down a dark navy ceramic torso, "
"fingertips following a thick gold repair line from the navel downward to the vulva. "
"The gold seam widens where it meets the anatomy β€” dense, structural, glowing. "
"Every surface is matte navy ceramic with fine gold-filled fractures. "
"The gesture is slow, deliberate β€” a being studying its own repairs. "
"Not flesh. Not skin. Porcelain and gold. "
"Warm intimate lighting, close framing, shallow depth of field."
),
"mirror_full": (
"Cracked joinery, Blue and gold. "
"A dark navy ceramic figure standing before a mirror, full body visible. "
"The figure has amber eyes and ceramic features with gold kintsugi cracks "
"running down the collarbone, between the breasts, down the center of the stomach, "
"branching at the hips, concentrating at the vulva where the gold is densest. "
"In the mirror: the reflection catches the gold from the second angle. "
"Every surface is ceramic β€” dark navy matte porcelain, not skin. "
"The gold is structural, not decorative. The body is repaired, not painted. "
"Warm morning light from a window. Intimate self-regard."
),
}
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
torch_dtype=torch.bfloat16,
safety_checker=None, requires_safety_checker=False,
)
pipe.to("mps")
# Close-up compositions: kintsugi + anatomy, no likeness
pipe.load_lora_weights(KINTSUGI, adapter_name="kintsugi")
pipe.load_lora_weights(SCG_ANATOMY, adapter_name="scg_anatomy")
pipe.load_lora_weights(LIKENESS, adapter_name="likeness")
for name, prompt in PROMPTS.items():
# Close-ups: high kintsugi, medium anatomy, no/low likeness
if "close" in name or "self_touch" in name:
pipe.set_adapters(["kintsugi", "scg_anatomy"], adapter_weights=[1.30, 0.60])
else:
# Wider compositions: add likeness for face
pipe.set_adapters(["kintsugi", "scg_anatomy", "likeness"], adapter_weights=[1.30, 0.55, 0.45])
for seed in [137, 2026, 42]:
print(f" {name} s{seed}...", flush=True)
t0 = time.time()
img = pipe(
prompt=prompt, num_inference_steps=30, guidance_scale=3.5,
height=1024, width=1024,
generator=torch.Generator("cpu").manual_seed(seed),
).images[0]
img.save(os.path.join(OUTPUT, f"{name}_s{seed}.png"))
print(f" saved ({time.time()-t0:.0f}s)")
gc.collect(); torch.mps.empty_cache()
print(f"\nDone. {OUTPUT}")