mslimanizatsit commited on
Commit
ed2a56d
·
1 Parent(s): e69a400

feat: init project

Browse files
Files changed (2) hide show
  1. app.py +138 -0
  2. requirements.txt +8 -0
app.py ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import random
4
+ from diffusers import DiffusionPipeline
5
+ import torch
6
+
7
+ device = "cuda" if torch.cuda.is_available() else "cpu"
8
+
9
+ if torch.cuda.is_available():
10
+ torch_dtype = torch.float16
11
+ else:
12
+ torch_dtype = torch.float32
13
+
14
+ model_turbo_repo_id = "stabilityai/sdxl-turbo"
15
+ model_repo_id = "stabilityai/stable-diffusion-2"
16
+ pipe = DiffusionPipeline.from_pretrained(model_turbo_repo_id, torch_dtype=torch_dtype)
17
+ pipe = pipe.to(device)
18
+
19
+ # Recommended if your computer has < 64 GB of RAM
20
+ pipe.enable_attention_slicing()
21
+
22
+ MAX_SEED = np.iinfo(np.int32).max
23
+ MAX_IMAGE_SIZE = 1024
24
+
25
+
26
+ def create_generator(seed):
27
+ return torch.Generator().manual_seed(seed)
28
+
29
+
30
+ def generate(prompt, negative_prompt, seed, is_random_seed, width, height, guidance_scale, inference_steps):
31
+ if is_random_seed:
32
+ seed = random.randint(0, np.iinfo(np.int32).max)
33
+
34
+ generator = create_generator(seed)
35
+
36
+ return pipe(
37
+ prompt=prompt,
38
+ negative_prompt=negative_prompt,
39
+ guidance_scale=guidance_scale,
40
+ num_inference_steps=inference_steps,
41
+ width=width,
42
+ height=height,
43
+ generator=generator
44
+ ).images[0]
45
+
46
+
47
+ with gr.Blocks() as imageGenerator:
48
+ with gr.Column():
49
+ gr.Markdown(f"""
50
+ # Zatsit Image Generator
51
+ ## Générateur d'image basé sur des modèles de stable diffusion
52
+ Vous cherchez de l'inspiration pour vos prompts ? [lien](https://stablediffusion.fr/prompts)
53
+ """)
54
+
55
+ with gr.Row():
56
+ prompt = gr.Text(
57
+ label="Prompt",
58
+ show_label=False,
59
+ max_lines=4,
60
+ placeholder="Votre prompt",
61
+ container=False,
62
+ )
63
+
64
+ generate_btn = gr.Button("Générer", scale=0)
65
+
66
+ result = gr.Image(label="Image générée", show_label=False)
67
+
68
+ with gr.Accordion("Paramètres", open=True):
69
+ negative_prompt = gr.Text(
70
+ label="Negative prompt",
71
+ max_lines=4,
72
+ placeholder="Votre prompt négatif",
73
+ )
74
+
75
+ seed = gr.Slider(
76
+ label="Seed",
77
+ minimum=0,
78
+ maximum=MAX_SEED,
79
+ step=1,
80
+ value=70537634,
81
+ )
82
+
83
+ is_random_seed = gr.Checkbox(label="Seed en mode random", value=False)
84
+
85
+ width = gr.Slider(
86
+ label="Width",
87
+ minimum=256,
88
+ maximum=MAX_IMAGE_SIZE,
89
+ step=10,
90
+ value=1024,
91
+ )
92
+
93
+ height = gr.Slider(
94
+ label="Height",
95
+ minimum=256,
96
+ maximum=MAX_IMAGE_SIZE,
97
+ step=10,
98
+ value=1024,
99
+ )
100
+
101
+ guidance_scale = gr.Slider(
102
+ label="Guildance scale",
103
+ minimum=0,
104
+ maximum=10.0,
105
+ step=0.1,
106
+ value=0.0,
107
+ )
108
+
109
+ inference_steps = gr.Slider(
110
+ label="Nombre d'inférences",
111
+ minimum=0,
112
+ maximum=100.0,
113
+ step=1,
114
+ value=2,
115
+ )
116
+
117
+ gr.Examples(
118
+ examples=[
119
+ ["pikachu eating spagetti, Antonio J. Manzanedo", 3384976558, 7, 20],
120
+ ["Gandalf from Lord of the Rings, diffuse lighting, fantasy, intricate elegant highly detailed "
121
+ "lifelike photorealistic digital painting, artstation", 248215544, 7, 42],
122
+ ["Ethereal gardens of marble built in a shining teal river in future city, gorgeous ornate "
123
+ "multi-tiered fountain, futuristic, intricate elegant highly detailed lifelike photorealistic "
124
+ "realistic painting, long shot, studio lighting, octane render, by Dorian Cleavenger", 3868142022,
125
+ 7, 20],
126
+ ["Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", 70537634, 1, 2]
127
+ ],
128
+ inputs=[prompt, seed, guidance_scale, inference_steps]
129
+ )
130
+
131
+ gr.on(
132
+ triggers=[generate_btn.click, prompt.submit],
133
+ fn=generate,
134
+ inputs=[prompt, negative_prompt, seed, is_random_seed, width, height, guidance_scale, inference_steps],
135
+ outputs=[result]
136
+ )
137
+
138
+ imageGenerator.queue().launch()
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ diffusers
2
+ transformers
3
+ accelerate
4
+ scipy
5
+ xformers
6
+ gradio
7
+ torch
8
+ invisible_watermark