DarkIdol-flux / app.py
aifeifei798's picture
Update app.py
617166b verified
raw
history blame
6.29 kB
import gradio as gr
import numpy as np
import random
import spaces
import torch
from diffusers import DiffusionPipeline, AutoencoderTiny
from huggingface_hub import hf_hub_download
def feifeimodload():
dtype = torch.bfloat16
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = DiffusionPipeline.from_pretrained(
"aifeifei798/DarkIdol-flux-v1.1", torch_dtype=dtype
).to(device)
pipe.load_lora_weights(
hf_hub_download("aifeifei798/flux-nsfw-lora", "Ultra-Realistic Nipple Generator_v2.safetensors"),
adapter_name="Ultra-Realistic",
)
pipe.set_adapters(
["Ultra-Realistic"],
adapter_weights=[0.75],
)
pipe.fuse_lora(
adapter_name=["Ultra-Realistic"],
lora_scale=1.0,
)
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
pipe.unload_lora_weights()
torch.cuda.empty_cache()
return pipe
pipe = feifeimodload()
MAX_SEED = np.iinfo(np.int32).max
MAX_IMAGE_SIZE = 2048
@spaces.GPU()
def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, num_inference_steps=4, progress=gr.Progress(track_tqdm=True)):
if randomize_seed:
seed = random.randint(0, MAX_SEED)
generator = torch.Generator().manual_seed(seed)
prompt = f"{prompt}, slight smile, Master of Light and Shadow."
image = pipe(
prompt = prompt,
width = width,
height = height,
num_inference_steps = num_inference_steps,
generator = generator,
guidance_scale=3.5
).images[0]
return image, seed
examples = [
"A stunning Japanese female model poses in a serene, misty forest, surrounded by lush greenery, with soft, warm light casting a golden glow on her face, as she gently lifts a delicate, crystal perfume bottle to her nose, her eyes closed in rapture, exuding an aura of elegance and refinement, with a subtle, enigmatic smile playing on her lips, in a masterful blend of natural and studio lighting, with a muted color palette of emerald greens, soft pinks, and creamy whites, and intricate details of her traditional Japanese attire, including a flowing, silk kimono with subtle, cherry blossom patterns, and a delicate, beaded obi, all perfectly captured in a high-resolution, large-format photograph, with impeccable composition, and a sense of timeless, ethereal beauty.",
"Capture a serene Japanese model in a snow-covered street, clad in a sensual Balenciaga winter outfit, evoking a sense of intimacy and luxury, with a harmonious blend of warm and cool tones, subtle shadows, and meticulous details, conveying a narrative of elegance and poise.",
"A high-resolution photograph of a female model posing for a Louis Vuitton brand advertisement, featuring natural lighting effects, a consistent style, balanced composition, rich details, harmonious colors, no visible flaws, emotional expression, creativity, and uniqueness, with optimized technical parameters, master-level lighting, master-level color, and master-level styling.",
"A high-resolution photograph of a female model in a serene, natural setting, with soft, warm lighting, and a minimalist aesthetic, showcasing a elegant fragrance bottle and the model's effortless, emotive expression, with impeccable styling, and a muted color palette, evoking a sense of understated luxury and refinement.",
"A high-resolution photograph of a female model posing beside a sleek, red Ferrari, bathed in warm, golden light, with subtle shadows accentuating her curves and the car's contours, set against a blurred, gradient blue background, with the model's elegant, flowing gown and the Ferrari's metallic sheen perfectly complementing each other in a masterful display of color, texture, and composition.",
]
css="""
#col-container {
margin: 0 auto;
max-width: 520px;
}
"""
with gr.Blocks(css=css) as demo:
with gr.Column(elem_id="col-container"):
gr.Markdown(f"""# DarkIdol-flux
DarkIdol-flux is a text-to-image AI model designed to create aesthetic, detailed and diverse images from textual prompts in just 6-8 steps. It offers enhanced performance in image quality, typography, understanding complex prompts, and resource efficiency.
""")
with gr.Row():
prompt = gr.Text(
label="Prompt",
show_label=False,
max_lines=12,
placeholder="Enter your prompt",
container=False,
)
run_button = gr.Button("Run")
result = gr.Image(label="Result", show_label=False,height=520)
with gr.Accordion("Advanced Settings", open=False):
seed = gr.Slider(
label="Seed",
minimum=0,
maximum=MAX_SEED,
step=1,
value=0,
)
randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
with gr.Row():
width = gr.Slider(
label="Width",
minimum=256,
maximum=MAX_IMAGE_SIZE,
step=64,
value=832,
)
height = gr.Slider(
label="Height",
minimum=256,
maximum=MAX_IMAGE_SIZE,
step=64,
value=1280,
)
with gr.Row():
num_inference_steps = gr.Slider(
label="Number of inference steps",
minimum=1,
maximum=50,
step=1,
value=6,
)
gr.Examples(
examples = examples,
fn = infer,
inputs = [prompt],
outputs = [result, seed],
cache_examples=False
)
gr.on(
triggers=[run_button.click, prompt.submit],
fn = infer,
inputs = [prompt, seed, randomize_seed, width, height, num_inference_steps],
outputs = [result, seed]
)
demo.launch()