prithivMLmods commited on
Commit
3eed408
1 Parent(s): a304821

Create app.txt

Browse files
Files changed (1) hide show
  1. app.txt +220 -0
app.txt ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import random
4
+ import spaces
5
+ import torch
6
+ from diffusers import DiffusionPipeline
7
+ from PIL import Image
8
+ import uuid
9
+ from typing import Tuple
10
+
11
+ dtype = torch.bfloat16
12
+ device = "cuda" if torch.cuda.is_available() else "cpu"
13
+
14
+ pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=dtype).to(device)
15
+
16
+ MAX_SEED = np.iinfo(np.int32).max
17
+ MAX_IMAGE_SIZE = 2048
18
+
19
+ style_list = [
20
+ {
21
+ "name": "8K",
22
+ "prompt": "hyper-realistic 8K image of {prompt}. ultra-detailed, lifelike, high-resolution, sharp, vibrant colors, photorealistic",
23
+ },
24
+ {
25
+ "name": "4K",
26
+ "prompt": "hyper-realistic 4K image of {prompt}. ultra-detailed, lifelike, high-resolution, sharp, vibrant colors, photorealistic",
27
+ },
28
+ {
29
+ "name": "HD",
30
+ "prompt": "hyper-realistic 2K image of {prompt}. ultra-detailed, lifelike, high-resolution, sharp, vibrant colors, photorealistic",
31
+ },
32
+ {
33
+ "name": "BW",
34
+ "prompt": "black and white collage of {prompt}. monochromatic, timeless, classic, dramatic contrast",
35
+ },
36
+ {
37
+ "name": "Polar",
38
+ "prompt": "collage of polaroid photos featuring {prompt}. vintage style, high contrast, nostalgic, instant film aesthetic",
39
+ },
40
+ {
41
+ "name": "Mustard",
42
+ "prompt": "Duotone style Mustard applied to {prompt}",
43
+ },
44
+ {
45
+ "name": "Cinema",
46
+ "prompt": "cinematic collage of {prompt}. film stills, movie posters, dramatic lighting",
47
+ },
48
+ {
49
+ "name": "Coral",
50
+ "prompt": "Duotone style Coral applied to {prompt}",
51
+ },
52
+ {
53
+ "name": "Scrap",
54
+ "prompt": "scrapbook style collage of {prompt}. mixed media, hand-cut elements, textures, paper, stickers, doodles",
55
+ },
56
+ {
57
+ "name": "Fuchsia",
58
+ "prompt": "Duotone style Fuchsia tone applied to {prompt}",
59
+ },
60
+ {
61
+ "name": "Violet",
62
+ "prompt": "Duotone style Violet applied to {prompt}",
63
+ },
64
+ {
65
+ "name": "Pastel",
66
+ "prompt": "Duotone style Pastel applied to {prompt}",
67
+ },
68
+ {
69
+ "name": "Style Zero",
70
+ "prompt": "{prompt}",
71
+ },
72
+ ]
73
+
74
+ css="""
75
+ #col-container {
76
+ margin: 0 auto;
77
+ max-width: 530px;
78
+ }
79
+ """
80
+
81
+ styles = {k["name"]: k["prompt"] for k in style_list}
82
+ DEFAULT_STYLE_NAME = "Style Zero"
83
+ STYLE_NAMES = list(styles.keys())
84
+
85
+ def apply_style(style_name: str, positive: str) -> str:
86
+ if style_name in styles:
87
+ p = styles[style_name]
88
+ positive = p.format(prompt=positive)
89
+ return positive
90
+
91
+ def set_wallpaper_size(size):
92
+ if size == "Mobile (1080x1920)":
93
+ return 1080, 1920
94
+ elif size == "Desktop (1920x1080)":
95
+ return 1920, 1080
96
+ elif size == "Extented (1920x512)":
97
+ return 1920, 512
98
+ elif size == "Headers (1080x512)":
99
+ return 1080, 512
100
+ else:
101
+ return 1024, 1024 # Default return if none of the conditions are met
102
+
103
+ @spaces.GPU(duration=60, enable_queue=True)
104
+ def infer(prompt, seed=42, randomize_seed=False, wallpaper_size="Desktop(1920x1080)", num_inference_steps=4, style_name=DEFAULT_STYLE_NAME, progress=gr.Progress(track_tqdm=True)):
105
+ if randomize_seed:
106
+ seed = random.randint(0, MAX_SEED)
107
+ generator = torch.Generator().manual_seed(seed)
108
+
109
+ width, height = set_wallpaper_size(wallpaper_size)
110
+
111
+ styled_prompt = apply_style(style_name, prompt)
112
+
113
+ options = {
114
+ "prompt": styled_prompt,
115
+ "width": width,
116
+ "height": height,
117
+ "guidance_scale": 0.0,
118
+ "num_inference_steps": num_inference_steps,
119
+ "generator": generator,
120
+ }
121
+
122
+ torch.cuda.empty_cache()
123
+ images = pipe(**options).images
124
+
125
+ grid_img = Image.new('RGB', (width, height))
126
+ grid_img.paste(images[0], (0, 0))
127
+
128
+ unique_name = str(uuid.uuid4()) + ".png"
129
+ grid_img.save(unique_name)
130
+ return unique_name, seed
131
+
132
+ examples = [
133
+
134
+ "chocolate dripping from a donut a yellow background",
135
+ "cold coffee in a cup bokeh --ar 85:128 --style",
136
+ "an anime illustration of a wiener schnitzel",
137
+ "a delicious ceviche cheesecake slice, ultra-hd+",
138
+ ]
139
+
140
+ def load_predefined_images1():
141
+ predefined_images1 = [
142
+ "assets/ww.webp",
143
+ "assets/xx.webp",
144
+ "assets/yy.webp",
145
+ ]
146
+ return predefined_images1
147
+
148
+ with gr.Blocks(css=css, theme="bethecloud/storj_theme") as demo:
149
+
150
+ with gr.Column(elem_id="col-container"):
151
+ gr.Markdown(f"""# FLUX.1 SIM""")
152
+ with gr.Row():
153
+ prompt = gr.Text(
154
+ label="Prompt",
155
+ show_label=False,
156
+ max_lines=1,
157
+ placeholder="Enter your prompt",
158
+ container=False,
159
+ )
160
+ run_button = gr.Button("Run", scale=0)
161
+ result = gr.Image(label="Result", show_label=False)
162
+
163
+ with gr.Row(visible=True):
164
+ wallpaper_size = gr.Radio(
165
+ choices=["Mobile (1080x1920)", "Desktop (1920x1080)", "Extented (1920x512)", "Headers (1080x512)", "Default (1024x1024)"],
166
+ label="Pixel Size(x*y)",
167
+ value="Default (1024x1024)"
168
+ )
169
+
170
+ with gr.Row(visible=True):
171
+ style_selection = gr.Radio(
172
+ show_label=True,
173
+ container=True,
174
+ interactive=True,
175
+ choices=STYLE_NAMES,
176
+ value=DEFAULT_STYLE_NAME,
177
+ label="Quality Style",
178
+ )
179
+ with gr.Accordion("Advanced Settings", open=True):
180
+ seed = gr.Slider(
181
+ label="Seed",
182
+ minimum=0,
183
+ maximum=MAX_SEED,
184
+ step=1,
185
+ value=0,
186
+ )
187
+ randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
188
+ with gr.Row():
189
+ num_inference_steps = gr.Slider(
190
+ label="Number of inference steps",
191
+ minimum=1,
192
+ maximum=50,
193
+ step=1,
194
+ value=4,
195
+ )
196
+
197
+ gr.Examples(
198
+ examples=examples,
199
+ fn=infer,
200
+ inputs=[prompt],
201
+ outputs=[result, seed],
202
+ cache_examples=False,
203
+ )
204
+
205
+ gr.on(
206
+ triggers=[prompt.submit, run_button.click],
207
+ fn=infer,
208
+ inputs=[prompt, seed, randomize_seed, wallpaper_size, num_inference_steps, style_selection],
209
+ outputs=[result, seed]
210
+ )
211
+
212
+ gr.Markdown("### Image Sample")
213
+ predefined_gallery = gr.Gallery(label="## Images Sample", columns=3, show_label=False, value=load_predefined_images1())
214
+
215
+ gr.Markdown("**Disclaimer/Note:**")
216
+
217
+ gr.Markdown("🍕Model used in the space <a href='https://huggingface.co/black-forest-labs/FLUX.1-schnell' target='_blank'>black-forest-labs/FLUX.1-schnell</a>. More: 12B param rectified flow transformer distilled from [FLUX.1 [pro]](https://blackforestlabs.ai/) for 4 step generation[[blog](https://blackforestlabs.ai/announcing-black-forest-labs/)] [[model](https://huggingface.co/black-forest-labs/FLUX.1-schnell)]")
218
+ gr.Markdown("⚠️ users are accountable for the content they generate and are responsible for ensuring it meets appropriate ethical standards.")
219
+
220
+ demo.launch()