Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -29,9 +29,12 @@ print(device)
|
|
| 29 |
# init stable diffusion model
|
| 30 |
pipe = ComposableStableDiffusionPipeline.from_pretrained(
|
| 31 |
"CompVis/stable-diffusion-v1-4",
|
| 32 |
-
use_auth_token=
|
| 33 |
).to(device)
|
| 34 |
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
# create model for CLEVR Objects
|
| 37 |
clevr_options = model_and_diffusion_defaults_for_clevr()
|
|
@@ -113,48 +116,54 @@ def compose_clevr_objects(prompt, guidance_scale, steps):
|
|
| 113 |
return out_img
|
| 114 |
|
| 115 |
|
| 116 |
-
def stable_diffusion_compose(prompt, scale, steps):
|
|
|
|
| 117 |
with autocast('cpu' if not th.cuda.is_available() else 'cuda'):
|
| 118 |
-
image = pipe(prompt, guidance_scale=scale, num_inference_steps=steps
|
|
|
|
|
|
|
| 119 |
return image
|
| 120 |
|
| 121 |
|
| 122 |
-
def compose(prompt, version, guidance_scale, steps):
|
| 123 |
try:
|
| 124 |
with th.no_grad():
|
| 125 |
if version == 'Stable_Diffusion_1v_4':
|
| 126 |
-
return stable_diffusion_compose(prompt, guidance_scale, steps)
|
| 127 |
else:
|
| 128 |
return compose_clevr_objects(prompt, guidance_scale, steps)
|
| 129 |
except Exception as e:
|
| 130 |
print(e)
|
| 131 |
return None
|
| 132 |
|
| 133 |
-
|
| 134 |
-
examples_1 = 'a camel | a forest'
|
| 135 |
examples_2 = 'A blue sky | A mountain in the horizon | Cherry Blossoms in front of the mountain'
|
| 136 |
examples_3 = '0.1, 0.5 | 0.3, 0.5 | 0.5, 0.5 | 0.7, 0.5 | 0.9, 0.5'
|
| 137 |
-
examples_4 = 'a
|
| 138 |
examples_5 = 'a white church | lightning in the background'
|
| 139 |
examples_6 = 'a camel | arctic'
|
| 140 |
examples_7 = 'A lake | A mountain | Cherry Blossoms next to the lake'
|
| 141 |
examples = [
|
| 142 |
-
[
|
| 143 |
-
[
|
| 144 |
-
[
|
| 145 |
-
[
|
| 146 |
-
[
|
|
|
|
|
|
|
| 147 |
]
|
| 148 |
|
| 149 |
title = 'Compositional Visual Generation with Composable Diffusion Models'
|
| 150 |
-
description = '<p>
|
| 151 |
|
| 152 |
iface = gr.Interface(compose,
|
| 153 |
inputs=[
|
| 154 |
-
gr.Textbox(label='prompt', value='a
|
|
|
|
| 155 |
gr.Radio(['Stable_Diffusion_1v_4', 'CLEVR Objects'], type="value", label='version', value='Stable_Diffusion_1v_4'),
|
| 156 |
gr.Slider(2, 30, value=15),
|
| 157 |
-
gr.Slider(10, 200, value=50)
|
|
|
|
| 158 |
],
|
| 159 |
outputs='image', cache_examples=False,
|
| 160 |
title=title, description=description, examples=examples)
|
|
|
|
| 29 |
# init stable diffusion model
|
| 30 |
pipe = ComposableStableDiffusionPipeline.from_pretrained(
|
| 31 |
"CompVis/stable-diffusion-v1-4",
|
| 32 |
+
use_auth_token='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'
|
| 33 |
).to(device)
|
| 34 |
|
| 35 |
+
def dummy(images, **kwargs):
|
| 36 |
+
return images, False
|
| 37 |
+
pipe.safety_checker = dummy
|
| 38 |
|
| 39 |
# create model for CLEVR Objects
|
| 40 |
clevr_options = model_and_diffusion_defaults_for_clevr()
|
|
|
|
| 116 |
return out_img
|
| 117 |
|
| 118 |
|
| 119 |
+
def stable_diffusion_compose(prompt, scale, steps, weights, seed):
|
| 120 |
+
generator = th.Generator("cuda").manual_seed(int(seed))
|
| 121 |
with autocast('cpu' if not th.cuda.is_available() else 'cuda'):
|
| 122 |
+
image = pipe(prompt, guidance_scale=scale, num_inference_steps=steps,
|
| 123 |
+
weights=weights, generator=generator)["sample"][0]
|
| 124 |
+
image.save(f'{"_".join(prompt.split())}.png')
|
| 125 |
return image
|
| 126 |
|
| 127 |
|
| 128 |
+
def compose(prompt, weights, version, guidance_scale, steps, seed):
|
| 129 |
try:
|
| 130 |
with th.no_grad():
|
| 131 |
if version == 'Stable_Diffusion_1v_4':
|
| 132 |
+
return stable_diffusion_compose(prompt, guidance_scale, steps, weights, seed)
|
| 133 |
else:
|
| 134 |
return compose_clevr_objects(prompt, guidance_scale, steps)
|
| 135 |
except Exception as e:
|
| 136 |
print(e)
|
| 137 |
return None
|
| 138 |
|
| 139 |
+
examples_1 = "A castle in a forest | grainy, fog"
|
|
|
|
| 140 |
examples_2 = 'A blue sky | A mountain in the horizon | Cherry Blossoms in front of the mountain'
|
| 141 |
examples_3 = '0.1, 0.5 | 0.3, 0.5 | 0.5, 0.5 | 0.7, 0.5 | 0.9, 0.5'
|
| 142 |
+
examples_4 = 'a photo of Obama | a photo of Biden'
|
| 143 |
examples_5 = 'a white church | lightning in the background'
|
| 144 |
examples_6 = 'a camel | arctic'
|
| 145 |
examples_7 = 'A lake | A mountain | Cherry Blossoms next to the lake'
|
| 146 |
examples = [
|
| 147 |
+
[examples_1, "1 | -1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 148 |
+
[examples_4, "1 | 1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 149 |
+
[examples_7, "1 | 1 | 1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 150 |
+
[examples_5, "1 | 1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 151 |
+
[examples_6, "1 | 1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 152 |
+
[examples_6, "1 | -1", 'Stable_Diffusion_1v_4', 15, 50, 0],
|
| 153 |
+
[examples_3, "1 | 1 | 1 | 1 | 1", 'CLEVR Objects', 10, 100, 0]
|
| 154 |
]
|
| 155 |
|
| 156 |
title = 'Compositional Visual Generation with Composable Diffusion Models'
|
| 157 |
+
description = '<p>Our conjucntion and negation operators are also added into stable diffusion webui! (<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Negative-prompt">Negation</a> and <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/c26732fbee2a57e621ac22bf70decf7496daa4cd">Conjunction</a>)</p></p><p>See more information from our <a href="https://energy-based-model.github.io/Compositional-Visual-Generation-with-Composable-Diffusion-Models/">Project Page</a>.</p><ul><li>One version is based on the released <a href="https://github.com/openai/glide-text2im">GLIDE</a> and <a href="https://github.com/CompVis/stable-diffusion/">Stable Diffusion</a> for composing natural language description.</li><li>Another is based on our pre-trained CLEVR Object Model for composing objects. <br>(<b>Note</b>: We recommend using <b><i>x</i></b> in range <b><i>[0.1, 0.9]</i></b> and <b><i>y</i></b> in range <b><i>[0.25, 0.7]</i></b>, since the training dataset labels are in given ranges.)</li></ul><p>When composing multiple sentences, use `|` as the delimiter, see given examples below.</p><p>You can also specify the weight of each text by using `|` as the delimiter. When the weight is negative, it will use Negation Operator (NOT). Otherwise it will use Conjucntion operator (AND).</p><p><b>Only Conjunction operator is enabled for CLEVR Object.</b></p><p><b>Note: When using Stable Diffusion, black images will be returned if the given prompt is detected as problematic. For composing GLIDE model, we recommend using the Colab demo in our <a href="https://energy-based-model.github.io/Compositional-Visual-Generation-with-Composable-Diffusion-Models/">Project Page</a>.</b></p>'
|
| 158 |
|
| 159 |
iface = gr.Interface(compose,
|
| 160 |
inputs=[
|
| 161 |
+
gr.Textbox(label='prompt', value='a photo of Obama | a photo of Biden'),
|
| 162 |
+
gr.Textbox(label='weights', value='1 | 1'),
|
| 163 |
gr.Radio(['Stable_Diffusion_1v_4', 'CLEVR Objects'], type="value", label='version', value='Stable_Diffusion_1v_4'),
|
| 164 |
gr.Slider(2, 30, value=15),
|
| 165 |
+
gr.Slider(10, 200, value=50),
|
| 166 |
+
gr.Number(0)
|
| 167 |
],
|
| 168 |
outputs='image', cache_examples=False,
|
| 169 |
title=title, description=description, examples=examples)
|