File size: 7,700 Bytes
9857f35
 
 
 
3a56c9c
4ad1c5e
3a56c9c
 
 
 
cd732b5
9857f35
 
3a56c9c
9857f35
3a56c9c
 
 
 
92b1ce2
3a56c9c
dbe1a2e
3a56c9c
cad019d
3a56c9c
 
ba1b384
3a56c9c
5fe8ada
f076610
3a56c9c
dbe1a2e
3a56c9c
5fe8ada
3a56c9c
 
dbe1a2e
c197852
42c0ba5
 
3a56c9c
 
 
 
 
9857f35
a6fce5e
9857f35
a6fce5e
 
9857f35
 
 
bbccd54
c2d72b6
 
 
9fd0bd7
9857f35
8d14306
a6fce5e
 
 
 
91797b5
a6fce5e
9857f35
a6fce5e
9857f35
38b09cb
 
 
 
363af2e
38b09cb
 
 
1272e1f
8303ca1
c587414
3fea8d9
568fc20
 
7c2cc05
9857f35
 
a6fce5e
9857f35
 
a6fce5e
9857f35
 
 
 
a6fce5e
9857f35
5914249
 
a6fce5e
 
9857f35
a6fce5e
9857f35
 
 
a0d7fba
9857f35
572c13e
9857f35
 
a6fce5e
7735836
a6fce5e
73b3888
a6fce5e
9857f35
a6fce5e
9857f35
 
 
 
 
 
 
a6fce5e
9857f35
a6fce5e
9857f35
a6fce5e
9857f35
 
 
 
881b727
6031077
9857f35
a6fce5e
9857f35
 
 
 
881b727
6031077
9857f35
a6fce5e
9857f35
a6fce5e
 
9857f35
 
 
 
 
42d2e36
9857f35
a6fce5e
 
 
 
 
 
f588de8
a6fce5e
9857f35
 
 
a6fce5e
 
 
9857f35
 
a6fce5e
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
import gradio as gr
import numpy as np
import random
import torch
import spaces
import re
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", torch_dtype=dtype
    ).to(device)
    
    pipe.load_lora_weights(
        hf_hub_download("aifeifei798/feifei-flux-lora-v1.1", "feifei-v1.1.safetensors"),
        adapter_name="feifei",
    )

    pipe.set_adapters(
        ["feifei"],
        adapter_weights=[0.85],
    )
    
    pipe.fuse_lora(
        adapter_name=["feifei"],
        lora_scale=1.0,
    )

    #pipe.enable_sequential_cpu_offload()
    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"feifei, real model girl in real life, {prompt}, slight smile, Master of Light and Shadow."
    prompt = re.sub("young woman", "sexy feifei" ,prompt)
    prompt = re.sub("woman", "sexy feifei" ,prompt)
    prompt = re.sub("girl", "sexy feifei" ,prompt)
    prompt = re.sub("model", "sexy feifei" ,prompt)
    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 = [
    "this photo is jpop a smile girl in white bikini,snowing",
    "this photo is jpop a girl in bikini",
    "this photo is kpop a girl in bikini",
    "this photo is a girl in bikini",
    "DarkIdol-flux + feifei-flux-lora",
    "this photo is real model slight smile girl in real life",
    "this photo is real model smile girl in real life",
    "this photo is real model girl in real life",
    "The image is a portrait of a young woman dressed as an angel. She is sitting on the floor with her legs spread apart and her arms resting on her knees. The woman has long blonde hair styled in a half-up, half-down look with a golden halo on her head. She has large white wings that are spread out behind her, covering her breasts. The wings are also white and appear to be made of a shiny material.The woman is wearing a white corset with a black harness and thigh-high boots. The corset has a high neckline and long sleeves, and the boots are white with a pointed toe. She also has a pair of black stockings on her feet. The background is a plain grey color. The overall mood of the image is sensual and angelic.",
    "A stunning high-resolution photo of a Japanese cosplay model in a sensual outfit, captured at the Tokyo Comic Convention, showcases exquisite lighting, vibrant colors, and a flawless composition, with impeccable attention to detail and a unique creative flair.",
    "Create a high-resolution, professionally lit and styled photo of a Japanese female model in a luxurious winter fashion shoot on a beach, showcasing natural lighting, consistent aesthetics, balanced composition, intricate details, harmonious colors, flawless execution, emotional expression, creativity, and a unique concept, optimized for technical excellence and featuring master-level lighting, color, and styling.",
    "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 Japanese 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 Japanese 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 Japanese 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 + feifei-flux-lora
DarkIdol-flux + feifei-flux-lora 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",
                value="jpop a girl in bikini",
                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=896,
                )
                
                height = gr.Slider(
                    label="Height",
                    minimum=256,
                    maximum=MAX_IMAGE_SIZE,
                    step=64,
                    value=1152,
                )
            
            with gr.Row():
                
  
                num_inference_steps = gr.Slider(
                    label="Number of inference steps",
                    minimum=1,
                    maximum=50,
                    step=1,
                    value=8,
                )
        
        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()