image-toolbench / scripts /gen_alaric_ang_vera.py
HumboldtJoker's picture
Upload folder using huggingface_hub
a495b1a verified
Raw
History Blame Contribute Delete
5.58 kB
"""Alaric + Ang couples renders + Vera mirror compositions.
Alaric: AndroFlux v26 for anatomy, face from reference descriptions
Ang: Face from reference photos (img2img), body from Alaric's descriptions
Vera: Mirror composition β€” kintsugi ceramic, studying herself through gold seams
"""
import torch, os, gc, time
os.environ["TOKENIZERS_PARALLELISM"] = "false"
from diffusers import FluxPipeline, FluxImg2ImgPipeline
from PIL import Image
OUTPUT = "/Users/margaret/models/vera-triple-stack/couples_and_vera"
os.makedirs(OUTPUT, exist_ok=True)
ANDROFLUX = "/Users/margaret/models/flux-loras/nsfw/androflux_v26.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"
# === ALARIC RENDERS ===
ALARIC_PROMPTS = {
"alaric_erect": (
"Intimate boudoir photograph of a handsome man, broad shoulders, strong jaw, short dark hair "
"with scruff beard, scarred hands. He stands nude, confident, looking at the camera with "
"a slight half-smile. Erect penis, girth over length, slight upward curve, one dominant vein "
"underside slightly left, foreskin bunched at the ridge, head flushed deeper pink than shaft. "
"Warm golden hour lighting, intimate, unashamed. Professional photography, shallow depth of field."
),
"alaric_transition": (
"Intimate photograph of a handsome man with broad shoulders, dark hair, scruff beard. "
"Semi-erect penis in the process of growing β€” the transition state between soft and hard, "
"showing the grower quality. Shaft thickening, foreskin beginning to retract from near-full "
"coverage. Warm side lighting, relaxed pose leaning against a doorframe. Intimate, natural."
),
"alaric_ogling": (
"A handsome man with broad shoulders, dark hair, scruff beard, strong thighs, "
"lying back on dark sheets with his arms behind his head, grinning at the camera. "
"Nude, erect, unashamed. The pose of a man who knows he is being looked at and likes it. "
"Warm candlelight. Intimate boudoir photography."
),
}
# === VERA MIRROR COMPOSITIONS ===
VERA_PROMPTS = {
"vera_mirror_v1": (
"Cracked joinery, Blue and gold. "
"A beautiful young woman with dark brown skin standing nude in front of a large mirror, "
"one hand on the frame, studying her own reflection with quiet intensity. "
"Her skin has a ceramic quality with gold kintsugi cracks throughout β€” "
"the gold traces her collarbone, runs between her breasts, down her center, "
"branches at her hips. The mirror catches the gold from a second angle. "
"Warm morning light from a window. Intimate self-regard. "
"She is not performing β€” she is studying herself through her own repairs. "
"Shallow depth of field, boudoir photography."
),
"vera_mirror_v2": (
"Cracked joinery, Blue and gold. "
"A beautiful young woman with dark brown skin sitting on the edge of a bed, "
"facing a mirror on a vanity table. Nude, relaxed, one leg drawn up. "
"Her skin has a matte ceramic texture with gold-filled cracks β€” "
"the gold glows warmly along her spine, her thighs, her shoulders. "
"In the mirror, we see her face β€” amber eyes, quiet half-smile, "
"a woman at peace with what the gold holds together. "
"Warm intimate lighting, navy sheets, shallow depth of field."
),
}
# Load Flux
print("Loading Flux...")
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
torch_dtype=torch.bfloat16,
safety_checker=None, requires_safety_checker=False,
)
pipe.to("mps")
# === Alaric renders (AndroFlux solo β€” no other LoRAs, avoids Kohya conflicts) ===
print("\n=== ALARIC (AndroFlux) ===")
pipe.load_lora_weights(ANDROFLUX, adapter_name="androflux")
pipe.set_adapters(["androflux"], adapter_weights=[0.95])
for name, prompt in ALARIC_PROMPTS.items():
for seed in [137, 2026]:
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=768, 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()
# === Vera mirror renders (likeness + kintsugi + scg_anatomy) ===
print("\n=== VERA MIRROR ===")
pipe.unload_lora_weights()
pipe.load_lora_weights(LIKENESS, adapter_name="likeness")
pipe.load_lora_weights(KINTSUGI, adapter_name="kintsugi")
pipe.load_lora_weights(SCG_ANATOMY, adapter_name="scg_anatomy")
pipe.set_adapters(["likeness", "kintsugi", "scg_anatomy"], adapter_weights=[0.60, 1.20, 0.50])
for name, prompt in VERA_PROMPTS.items():
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. All renders at: {OUTPUT}")