adamelliotfields commited on
Commit
6ac2c39
1 Parent(s): 1128e78

Style adjustments

Browse files
Files changed (4) hide show
  1. demo.css +25 -30
  2. demo.py +68 -62
  3. head.html +8 -0
  4. intro.html +2 -2
demo.css CHANGED
@@ -1,4 +1,5 @@
1
  .accordion {
 
2
  background-color: transparent;
3
  }
4
  .accordion > button {
@@ -8,37 +9,46 @@
8
  width: auto;
9
  margin-right: 4px;
10
  }
11
-
12
- .gr-group div {
13
- gap: 0px;
 
 
14
  }
15
 
16
  .tabs, .tabitem, .tab-nav, .tab-nav > .selected {
17
  border-width: 0px;
18
  }
19
-
20
- #about {
21
- padding: 20px 24px;
 
 
 
 
22
  }
23
 
24
  #gallery {
25
- background-color: var(--bg);
26
- }
27
- #gallery > div:nth-child(2) {
28
- overflow-y: hidden;
29
- }
30
- .dark #gallery {
31
- background-color: var(--background-fill-primary);
32
  }
33
 
34
  #intro {
35
  display: flex;
36
  align-items: center;
37
  }
 
 
 
 
 
 
 
38
  #intro > svg {
39
  display: inline-block;
40
- width: 1.75rem;
41
- height: 1.75rem;
 
42
  margin-left: 0.5rem;
43
  fill: #047857 !important;
44
  animation: spin 3s linear infinite reverse;
@@ -49,18 +59,3 @@
49
  @keyframes spin {
50
  100% { transform: rotate(360deg); }
51
  }
52
-
53
- #menu-tabs {
54
- margin-top: 12px;
55
- }
56
-
57
- #prompt {
58
- background-color: var(--bg);
59
- }
60
- .dark #prompt {
61
- background-color: var(--background-fill-primary);
62
- }
63
-
64
- #random-seed > button {
65
- margin-right: 8px;
66
- }
 
1
  .accordion {
2
+ --block-border-width: 0px;
3
  background-color: transparent;
4
  }
5
  .accordion > button {
 
9
  width: auto;
10
  margin-right: 4px;
11
  }
12
+ .accordion .tabs {
13
+ margin-top: 12px;
14
+ }
15
+ .accordion .tabitem > div {
16
+ --block-border-width: 1px;
17
  }
18
 
19
  .tabs, .tabitem, .tab-nav, .tab-nav > .selected {
20
  border-width: 0px;
21
  }
22
+ .tabitem {
23
+ max-height: 600px;
24
+ overflow-y: auto;
25
+ }
26
+ .tabitem .markdown {
27
+ margin-top: 4px;
28
+ margin-left: 8px;
29
  }
30
 
31
  #gallery {
32
+ --block-border-width: 0px;
33
+ background-color: transparent;
 
 
 
 
 
34
  }
35
 
36
  #intro {
37
  display: flex;
38
  align-items: center;
39
  }
40
+ #intro > h1 > span {
41
+ color: #047857 !important;
42
+ font-style: italic;
43
+ }
44
+ #intro > h1 > span:is(.dark *) {
45
+ color: #10b981 !important;
46
+ }
47
  #intro > svg {
48
  display: inline-block;
49
+ width: 1.5rem;
50
+ height: 1.5rem;
51
+ margin-top: 0.25rem;
52
  margin-left: 0.5rem;
53
  fill: #047857 !important;
54
  animation: spin 3s linear infinite reverse;
 
59
  @keyframes spin {
60
  100% { transform: rotate(360deg); }
61
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
demo.py CHANGED
@@ -34,7 +34,7 @@ def generate_btn_click(*args, **kwargs):
34
  if prompt is None or prompt.strip() == "":
35
  raise gr.Error("You must enter a prompt")
36
 
37
- images = generate(*args, **kwargs)
38
  end = time.perf_counter()
39
  diff = end - start
40
  gr.Info(f"Generated {len(images)} images in {diff:.2f}s")
@@ -42,6 +42,7 @@ def generate_btn_click(*args, **kwargs):
42
 
43
 
44
  with gr.Blocks(
 
45
  css="./demo.css",
46
  js="./demo.js",
47
  theme=gr.themes.Default(
@@ -59,22 +60,17 @@ with gr.Blocks(
59
  ).set(
60
  block_background_fill=gr.themes.colors.gray.c50,
61
  block_background_fill_dark=gr.themes.colors.gray.c900,
62
- block_border_width="0px",
63
- block_border_width_dark="0px",
64
  block_shadow="0 0 #0000",
65
  block_shadow_dark="0 0 #0000",
66
- block_title_text_weight=500,
67
- form_gap_width="0px",
68
- section_header_text_weight=500,
69
  ),
70
  ) as demo:
71
  gr.HTML(read_file("intro.html"))
72
  output_images = gr.Gallery(
73
- height=320,
74
  label="Output",
75
  show_label=False,
76
- columns=4,
77
  interactive=False,
 
78
  elem_id="gallery",
79
  )
80
  prompt = gr.Textbox(
@@ -83,7 +79,6 @@ with gr.Blocks(
83
  lines=2,
84
  placeholder="corgi, at the beach, cute",
85
  value=None,
86
- elem_id="prompt",
87
  )
88
  generate_btn = gr.Button("Generate", variant="primary", elem_classes=[])
89
 
@@ -93,7 +88,7 @@ with gr.Blocks(
93
  elem_id="menu",
94
  elem_classes=["accordion"],
95
  ):
96
- with gr.Tabs(elem_id="menu-tabs"):
97
  with gr.TabItem("⚙️ Settings"):
98
  with gr.Group():
99
  negative_prompt = gr.Textbox(
@@ -116,6 +111,7 @@ with gr.Blocks(
116
  value="1:1",
117
  filterable=False,
118
  )
 
119
 
120
  with gr.Row():
121
  guidance_scale = gr.Slider(
@@ -123,7 +119,7 @@ with gr.Blocks(
123
  minimum=1.0,
124
  maximum=15.0,
125
  step=0.1,
126
- value=7,
127
  )
128
  inference_steps = gr.Slider(
129
  label="Inference Steps",
@@ -133,57 +129,67 @@ with gr.Blocks(
133
  value=30,
134
  )
135
 
136
- with gr.Column():
137
- seed = gr.Number(label="Seed", value=0)
138
- with gr.Row():
139
- random_seed_btn = gr.Button(
140
- "🎲 Random",
141
- variant="secondary",
142
- size="sm",
143
- scale=1,
144
- )
145
- increment_seed = gr.Checkbox(
146
- label="Autoincrement",
147
- value=True,
148
- scale=8,
149
- elem_classes=["checkbox"],
150
- elem_id="increment-seed",
151
- )
152
-
153
- with gr.TabItem("🧠 Model"):
154
- model = gr.Dropdown(
155
- label="Model",
156
- choices=[
157
- "fluently/Fluently-v4",
158
- "Lykon/dreamshaper-8",
159
- "prompthero/openjourney-v4",
160
- "runwayml/stable-diffusion-v1-5",
161
- "SG161222/Realistic_Vision_V5.1_Novae",
162
- ],
163
- value="Lykon/dreamshaper-8",
164
- )
165
- scheduler = gr.Dropdown(
166
- label="Scheduler",
167
- choices=[
168
- "DEIS 2M",
169
- "DPM++ 2M",
170
- "DPM2 a",
171
- "Euler a",
172
- "Heun",
173
- "LMS",
174
- "PNDM",
175
- ],
176
- value="DEIS 2M",
177
- elem_id="scheduler",
178
- )
179
- use_karras = gr.Checkbox(
180
- label="Karras σ",
181
- value=True,
182
- elem_classes=["checkbox"],
183
- )
184
-
185
- with gr.TabItem("ℹ️ About", elem_id="about"):
186
- gr.Markdown(read_file("about.md"))
 
 
 
 
 
 
 
 
 
 
187
 
188
  # update the random seed using JavaScript
189
  random_seed_btn.click(None, outputs=[seed], js="() => Math.floor(Math.random() * 2**32)")
 
34
  if prompt is None or prompt.strip() == "":
35
  raise gr.Error("You must enter a prompt")
36
 
37
+ images = generate(*args, **kwargs, Error=gr.Error)
38
  end = time.perf_counter()
39
  diff = end - start
40
  gr.Info(f"Generated {len(images)} images in {diff:.2f}s")
 
42
 
43
 
44
  with gr.Blocks(
45
+ head=read_file("head.html"),
46
  css="./demo.css",
47
  js="./demo.js",
48
  theme=gr.themes.Default(
 
60
  ).set(
61
  block_background_fill=gr.themes.colors.gray.c50,
62
  block_background_fill_dark=gr.themes.colors.gray.c900,
 
 
63
  block_shadow="0 0 #0000",
64
  block_shadow_dark="0 0 #0000",
 
 
 
65
  ),
66
  ) as demo:
67
  gr.HTML(read_file("intro.html"))
68
  output_images = gr.Gallery(
 
69
  label="Output",
70
  show_label=False,
71
+ columns=1,
72
  interactive=False,
73
+ show_share_button=False,
74
  elem_id="gallery",
75
  )
76
  prompt = gr.Textbox(
 
79
  lines=2,
80
  placeholder="corgi, at the beach, cute",
81
  value=None,
 
82
  )
83
  generate_btn = gr.Button("Generate", variant="primary", elem_classes=[])
84
 
 
88
  elem_id="menu",
89
  elem_classes=["accordion"],
90
  ):
91
+ with gr.Tabs():
92
  with gr.TabItem("⚙️ Settings"):
93
  with gr.Group():
94
  negative_prompt = gr.Textbox(
 
111
  value="1:1",
112
  filterable=False,
113
  )
114
+ seed = gr.Number(label="Seed", value=0)
115
 
116
  with gr.Row():
117
  guidance_scale = gr.Slider(
 
119
  minimum=1.0,
120
  maximum=15.0,
121
  step=0.1,
122
+ value=7.5,
123
  )
124
  inference_steps = gr.Slider(
125
  label="Inference Steps",
 
129
  value=30,
130
  )
131
 
132
+ with gr.Row():
133
+ model = gr.Dropdown(
134
+ label="Model",
135
+ choices=[
136
+ "fluently/Fluently-v4",
137
+ "Linaqruf/anything-v3-1",
138
+ "Lykon/dreamshaper-8",
139
+ "prompthero/openjourney-v4",
140
+ "runwayml/stable-diffusion-v1-5",
141
+ "SG161222/Realistic_Vision_V5.1_Novae",
142
+ ],
143
+ value="Lykon/dreamshaper-8",
144
+ )
145
+ scheduler = gr.Dropdown(
146
+ label="Scheduler",
147
+ choices=[
148
+ "DEIS 2M",
149
+ "DPM++ 2M",
150
+ "DPM2 a",
151
+ "Euler a",
152
+ "Heun",
153
+ "LMS",
154
+ "PNDM",
155
+ ],
156
+ value="DEIS 2M",
157
+ elem_id="scheduler",
158
+ )
159
+
160
+ with gr.Row():
161
+ use_karras = gr.Checkbox(
162
+ label="Use Karras σ",
163
+ value=True,
164
+ elem_classes=["checkbox"],
165
+ scale=2,
166
+ )
167
+ increment_seed = gr.Checkbox(
168
+ label="Autoincrement seed",
169
+ value=True,
170
+ elem_classes=["checkbox"],
171
+ elem_id="increment-seed",
172
+ scale=2,
173
+ )
174
+ random_seed_btn = gr.Button(
175
+ "🎲 Random seed",
176
+ variant="secondary",
177
+ size="sm",
178
+ scale=1,
179
+ )
180
+
181
+ with gr.TabItem("🛠️ Advanced"):
182
+ gr.Markdown("_Coming soon..._", elem_classes=["markdown"])
183
+
184
+ with gr.TabItem("ℹ️ Info"):
185
+ gr.Markdown(read_file("info.md"), elem_classes=["markdown"])
186
+
187
+ # change gallery columns when num_images changes
188
+ num_images.change(
189
+ lambda n: gr.Gallery(columns=n),
190
+ inputs=[num_images],
191
+ outputs=[output_images],
192
+ )
193
 
194
  # update the random seed using JavaScript
195
  random_seed_btn.click(None, outputs=[seed], js="() => Math.floor(Math.random() * 2**32)")
head.html ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <style>
2
+ /* gradio styles go in head */
3
+ @media (min-width: 1024px) {
4
+ gradio-app > .gradio-container {
5
+ max-width: 960px !important;
6
+ }
7
+ }
8
+ </style>
intro.html CHANGED
@@ -1,7 +1,7 @@
1
  <div id="intro">
2
- <h1>Stable Diffusion <em>Zero</em></h1>
3
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 15 15">
4
  <path d="M7.48877 6.75C7.29015 6.75 7.09967 6.82902 6.95923 6.96967C6.81879 7.11032 6.73989 7.30109 6.73989 7.5C6.73989 7.69891 6.81879 7.88968 6.95923 8.03033C7.09967 8.17098 7.29015 8.25 7.48877 8.25C7.68738 8.25 7.87786 8.17098 8.0183 8.03033C8.15874 7.88968 8.23764 7.69891 8.23764 7.5C8.23764 7.30109 8.15874 7.11032 8.0183 6.96967C7.87786 6.82902 7.68738 6.75 7.48877 6.75ZM7.8632 0C11.2331 0 11.3155 2.6775 9.54818 3.5625C8.80679 3.93 8.47728 4.7175 8.335 5.415C8.69446 5.565 9.00899 5.7975 9.24863 6.0975C12.0195 4.5975 15 5.19 15 7.875C15 11.25 12.3265 11.325 11.4428 9.5475C11.0684 8.805 10.2746 8.475 9.57813 8.3325C9.42836 8.6925 9.19621 9 8.89665 9.255C10.3869 12.0225 9.79531 15 7.11433 15C3.74438 15 3.67698 12.315 5.44433 11.43C6.17823 11.0625 6.50774 10.2825 6.65751 9.5925C6.29056 9.4425 5.96855 9.2025 5.72891 8.9025C2.96555 10.3875 0 9.8025 0 7.125C0 3.75 2.666 3.6675 3.54967 5.445C3.92411 6.1875 4.71043 6.51 5.40689 6.6525C5.54918 6.2925 5.78882 5.9775 6.09586 5.7375C4.60559 2.97 5.1972 0 7.8632 0Z"></path>
5
  </svg>
6
  </div>
7
- <p>Stable Diffusion 1.5 with extras. Powered by 🤗 <a href="https://huggingface.co/spaces/zero-gpu-explorers/README" target="_blank" rel="noopener noreferrer">ZeroGPU</a>.</p>
 
1
  <div id="intro">
2
+ <h1>Stable Diffusion <span>Zero</span></h1>
3
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 15 15">
4
  <path d="M7.48877 6.75C7.29015 6.75 7.09967 6.82902 6.95923 6.96967C6.81879 7.11032 6.73989 7.30109 6.73989 7.5C6.73989 7.69891 6.81879 7.88968 6.95923 8.03033C7.09967 8.17098 7.29015 8.25 7.48877 8.25C7.68738 8.25 7.87786 8.17098 8.0183 8.03033C8.15874 7.88968 8.23764 7.69891 8.23764 7.5C8.23764 7.30109 8.15874 7.11032 8.0183 6.96967C7.87786 6.82902 7.68738 6.75 7.48877 6.75ZM7.8632 0C11.2331 0 11.3155 2.6775 9.54818 3.5625C8.80679 3.93 8.47728 4.7175 8.335 5.415C8.69446 5.565 9.00899 5.7975 9.24863 6.0975C12.0195 4.5975 15 5.19 15 7.875C15 11.25 12.3265 11.325 11.4428 9.5475C11.0684 8.805 10.2746 8.475 9.57813 8.3325C9.42836 8.6925 9.19621 9 8.89665 9.255C10.3869 12.0225 9.79531 15 7.11433 15C3.74438 15 3.67698 12.315 5.44433 11.43C6.17823 11.0625 6.50774 10.2825 6.65751 9.5925C6.29056 9.4425 5.96855 9.2025 5.72891 8.9025C2.96555 10.3875 0 9.8025 0 7.125C0 3.75 2.666 3.6675 3.54967 5.445C3.92411 6.1875 4.71043 6.51 5.40689 6.6525C5.54918 6.2925 5.78882 5.9775 6.09586 5.7375C4.60559 2.97 5.1972 0 7.8632 0Z"></path>
5
  </svg>
6
  </div>
7
+ <p>Stable Diffusion 1.5 powered by 🤗 <a href="https://huggingface.co/spaces/zero-gpu-explorers/README" target="_blank" rel="noopener noreferrer">ZeroGPU</a>.</p>