Add output examples, use EulerA sampler and reduce inference steps to 20 to reduce CPU runtime from 20 minutes.
Browse files- app.py +10 -6
- examples/card.png +0 -0
- examples/image.png +0 -0
- examples/text.txt +10 -0
app.py
CHANGED
|
@@ -21,7 +21,7 @@ import random
|
|
| 21 |
from transformers import GPT2TokenizerFast
|
| 22 |
|
| 23 |
import torch
|
| 24 |
-
from diffusers import DiffusionPipeline
|
| 25 |
|
| 26 |
gpu = False
|
| 27 |
|
|
@@ -30,10 +30,14 @@ AUTH_TOKEN = os.environ.get('AUTH_TOKEN')
|
|
| 30 |
|
| 31 |
if gpu:
|
| 32 |
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", custom_pipeline="stable_diffusion_mega", torch_dtype=torch.float16, revision="fp16", use_auth_token=AUTH_TOKEN)
|
|
|
|
|
|
|
| 33 |
pipeline.to("cuda")
|
| 34 |
else:
|
| 35 |
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",
|
| 36 |
custom_pipeline="stable_diffusion_mega", use_auth_token=AUTH_TOKEN)
|
|
|
|
|
|
|
| 37 |
|
| 38 |
# Huggingface Spaces have 16GB RAM and 8 CPU cores
|
| 39 |
# See https://huggingface.co/docs/hub/spaces-overview#hardware-resources
|
|
@@ -105,7 +109,7 @@ def run(name):
|
|
| 105 |
prompt_template = f"fantasy illustration of a {card_type} {name}, by Greg Rutkowski"
|
| 106 |
print(f"GENERATING IMAGE FOR {prompt_template}")
|
| 107 |
# Regarding sizing see https://huggingface.co/blog/stable_diffusion#:~:text=When%20choosing%20image%20sizes%2C%20we%20advise%20the%20following%3A
|
| 108 |
-
images = pipeline.text2img(prompt_template, width=512, height=368).images
|
| 109 |
card_image = None
|
| 110 |
for image in images:
|
| 111 |
save_name = get_savename('card_images', name, 'png')
|
|
@@ -258,12 +262,12 @@ def html_to_png(card_name, html):
|
|
| 258 |
app_description = (
|
| 259 |
"""
|
| 260 |
# Create your own Magic: The Gathering cards!
|
| 261 |
-
Enter a name, click Submit,
|
| 262 |
""").strip()
|
| 263 |
input_box = gr.Textbox(label="Enter a card name", placeholder="Firebolt")
|
| 264 |
-
rendered_card = gr.Image(label="Card", type='pil')
|
| 265 |
-
output_text_box = gr.Textbox(label="Card Text")
|
| 266 |
-
output_card_image = gr.Image(label="Card Image", type='pil')
|
| 267 |
output_card_html = gr.HTML(label="Card HTML", visible=False, show_label=False)
|
| 268 |
x = gr.components.Textbox()
|
| 269 |
iface = gr.Interface(title="MagicGen", theme="default", description=app_description, fn=run, inputs=[input_box],
|
|
|
|
| 21 |
from transformers import GPT2TokenizerFast
|
| 22 |
|
| 23 |
import torch
|
| 24 |
+
from diffusers import DiffusionPipeline, EulerAncestralDiscreteScheduler
|
| 25 |
|
| 26 |
gpu = False
|
| 27 |
|
|
|
|
| 30 |
|
| 31 |
if gpu:
|
| 32 |
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", custom_pipeline="stable_diffusion_mega", torch_dtype=torch.float16, revision="fp16", use_auth_token=AUTH_TOKEN)
|
| 33 |
+
scheduler = EulerAncestralDiscreteScheduler.from_config(pipeline.scheduler.config)
|
| 34 |
+
pipeline.scheduler = scheduler
|
| 35 |
pipeline.to("cuda")
|
| 36 |
else:
|
| 37 |
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",
|
| 38 |
custom_pipeline="stable_diffusion_mega", use_auth_token=AUTH_TOKEN)
|
| 39 |
+
scheduler = EulerAncestralDiscreteScheduler.from_config(pipeline.scheduler.config)
|
| 40 |
+
pipeline.scheduler = scheduler
|
| 41 |
|
| 42 |
# Huggingface Spaces have 16GB RAM and 8 CPU cores
|
| 43 |
# See https://huggingface.co/docs/hub/spaces-overview#hardware-resources
|
|
|
|
| 109 |
prompt_template = f"fantasy illustration of a {card_type} {name}, by Greg Rutkowski"
|
| 110 |
print(f"GENERATING IMAGE FOR {prompt_template}")
|
| 111 |
# Regarding sizing see https://huggingface.co/blog/stable_diffusion#:~:text=When%20choosing%20image%20sizes%2C%20we%20advise%20the%20following%3A
|
| 112 |
+
images = pipeline.text2img(prompt_template, width=512, height=368, num_inference_steps=20).images
|
| 113 |
card_image = None
|
| 114 |
for image in images:
|
| 115 |
save_name = get_savename('card_images', name, 'png')
|
|
|
|
| 262 |
app_description = (
|
| 263 |
"""
|
| 264 |
# Create your own Magic: The Gathering cards!
|
| 265 |
+
Enter a name, click Submit, it may take up to 10 minutes to run on the free CPU only instance.
|
| 266 |
""").strip()
|
| 267 |
input_box = gr.Textbox(label="Enter a card name", placeholder="Firebolt")
|
| 268 |
+
rendered_card = gr.Image(label="Card", type='pil', value="examples/card.png")
|
| 269 |
+
output_text_box = gr.Textbox(label="Card Text", value=pathlib.Path("examples/text.txt").read_text('utf-8'))
|
| 270 |
+
output_card_image = gr.Image(label="Card Image", type='pil', value="examples/image.png")
|
| 271 |
output_card_html = gr.HTML(label="Card HTML", visible=False, show_label=False)
|
| 272 |
x = gr.components.Textbox()
|
| 273 |
iface = gr.Interface(title="MagicGen", theme="default", description=app_description, fn=run, inputs=[input_box],
|
examples/card.png
ADDED
|
examples/image.png
ADDED
|
examples/text.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Name: Firebolt
|
| 2 |
+
ManaCost: {1}{R}
|
| 3 |
+
Type: Instant
|
| 4 |
+
Rarity: common
|
| 5 |
+
Text: Firebolt deals 2 damage to target creature and you gain 2 life.
|
| 6 |
+
Draw a card at the beginning of the next end step.
|
| 7 |
+
FlavorText:
|
| 8 |
+
Power:
|
| 9 |
+
Toughness:
|
| 10 |
+
Color: ['R']
|