Spaces:
Runtime error
Runtime error
import gradio as gr | |
import torch | |
from diffusers import StableDiffusionXLPipeline, AutoencoderKL, KDPM2AncestralDiscreteScheduler | |
from huggingface_hub import hf_hub_download | |
import spaces | |
from PIL import Image | |
import requests | |
from translatepy import Translator | |
import random | |
translator = Translator() | |
# ์์ ์ ์ | |
model = "Corcelio/mobius" | |
vae_model = "madebyollin/sdxl-vae-fp16-fix" | |
CSS = """ | |
.gradio-container { | |
max-width: 690px !important; | |
} | |
footer { | |
visibility: hidden; | |
} | |
""" | |
JS = """function () { | |
gradioURL = window.location.href | |
if (!gradioURL.endsWith('?__theme=dark')) { | |
window.location.replace(gradioURL + '?__theme=dark'); | |
} | |
}""" | |
# VAE ์ปดํฌ๋ํธ ๋ก๋ | |
vae = AutoencoderKL.from_pretrained( | |
vae_model, | |
torch_dtype=torch.float16 | |
) | |
# GPU ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ชจ๋ธ ๋ฐ ์ค์ผ์ค๋ฌ ์ด๊ธฐํ | |
if torch.cuda.is_available(): | |
pipe = StableDiffusionXLPipeline.from_pretrained(model, vae=vae, torch_dtype=torch.float16).to("cuda") | |
pipe.scheduler = KDPM2AncestralDiscreteScheduler.from_config(pipe.scheduler.config) | |
# ํจ์ ์ ์ | |
def generate_image( | |
prompt, | |
negative="low quality", | |
width=1024, | |
height=1024, | |
scale=1.5, | |
steps=30): | |
prompt = str(translator.translate(prompt, 'English')) | |
print(f'prompt:{prompt}') | |
generator1 = torch.manual_seed(random.randint(0, 10000)) | |
generator2 = torch.manual_seed(random.randint(0, 10000)) | |
images1 = pipe( | |
prompt, | |
negative_prompt=negative, | |
width=width, | |
height=height, | |
guidance_scale=scale, | |
num_inference_steps=steps, | |
generator=generator1 | |
).images | |
images2 = pipe( | |
prompt, | |
negative_prompt=negative, | |
width=width, | |
height=height, | |
guidance_scale=scale, | |
num_inference_steps=steps, | |
generator=generator2 | |
).images | |
return images1[0], images2[0] # ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ | |
examples = [ | |
"์๋ฆ๋ค์ด 20์ธ ํ๊ตญ ์ฌ์ ๋ชจ๋ธ, 'ํ๊ตญ ์ฌ์๊ฐ์ ์์ด์ ๋ฎ์ ์ผ๊ตด', ๊ฒ์์ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ๊ฐ์ ์ ๋ํผ, ๋ฐฐ๊ฒฝ ํฐ์, ์ค๋ง์ผ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ ์ ๋ ธ์ถ, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 20์ธ ์๊ตญ ์ฌ์ ๋ชจ๋ธ, '์ ๋ง์์จ ๋ฎ์ ์ผ๊ตด', ๊ธ๋ฐ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, ์ด๋ธ๋ ๋๋ ์ค, ๋ฐฐ๊ฒฝ ์์์, ์ค๋ง์ผ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ ์ ๋ ธ์ถ, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 20์ธ ํ๊ตญ ์ฌ์ ๋ชจ๋ธ, 'ํ๊ตญ ์ฌ์ ์์ด๋ ๋ฎ์ ์ผ๊ตด', ๊ฒ์์ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, ๋นํค๋ ์์๋ณต, ๋ฐฐ๊ฒฝ ์์์ฅ, ์ค๋ง์ผ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ ์ ๋ ธ์ถ, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 23์ธ ์ค๊ตญ๊ตญ ์ฌ์ ๋ชจ๋ธ, ๊ฐ์ ๊ธด ์๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ๋ฐฐ๊ฒฝ ์คํ๋์ค, ์ง์งํ ํ์ , ์คํผ์ค ์ ๋ํผ, ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 18์ธ ์ผ๋ณธ ์ฌ์ ๋ชจ๋ธ, ๊ฒ์์ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, ์ค๋ง์ผ ํ์ , ๊ต๋ณต ์ ๋ํผ, ๋ฐฐ๊ฒฝ ํ๊ต ๊ต์ค, ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 20์ธ ๋ธ๋ผ์ง ์ฌ์ ๋ชจ๋ธ, ๊ฒ์์ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ๊ฐํธ์ฌ ์ ๋ํผ, ๋ฐฐ๊ฒฝ ํฐ์, ์ค๋ง์ผ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ ์ ๋ ธ์ถ, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 20์ธ ์ค์จ๋ด ์ฌ์ ๋ชจ๋ธ, ๊ธ๋ฐ ๊ธด ์๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ๋นํค๋ ์์๋ณต, ๋ฐฐ๊ฒฝ ํด๋ณ๊ฐ, ์ค๋ง์ผ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 18์ธ ๋ฌ์์ ์ฌ์ ๋ชจ๋ธ, ๊ธ๋ฐ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ๋นํค๋ ์์๋ณต, ๋ฐฐ๊ฒฝ ์์์ฅ, ์์ํ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 20์ธ ํ๋์ค ์ฌ์ ๋ชจ๋ธ, ๊ฐ์ ์งง์ ๋จ๋ฐ๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ๋น์ฆ๋์ค ์ ์ฅ, ๋ฐฐ๊ฒฝ ์ฌ๋ฌด์ค, ํฌ๊ฒ ์๋ ํ์ , ๋ชจ๋ธ ํฌ์ฆ, ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง", | |
"์๋ฆ๋ค์ด 16์ธ ์ฐํฌ๋ผ์ด๋ ์ฌ์ ๋ชจ๋ธ, ๊ฐ์ ๊ธด ์๋จธ๋ฆฌ, C์ปต ์ฌ์ด์ฆ์ ํฐ ๊ฐ์ด, ํฐ ๊ณจ๋ฐ, ์คํผ์ค ์ ๋ํผ, ์น์ค ํฌ์ฆ, ๋ฐฐ๊ฒฝ ํธํ , ํ๋ณตํ ํ์ , ์ ๋ฉด ์์, ์ด๊ณ ํด์๋ ์ฌ์ง" | |
] | |
# Gradio ์ธํฐํ์ด์ค | |
with gr.Blocks(css=CSS, js=JS, theme="soft") as demo: | |
gr.HTML("<h1><center>๋๋ง์ ๋ชจ๋ธ ์บ๋ฆญํฐ ์์ฑ</center></h1>") | |
with gr.Group(): | |
with gr.Row(): | |
prompt = gr.Textbox(label='Enter Your Prompt', value="best quality, HD, aesthetic", scale=6) | |
submit = gr.Button(scale=1, variant='primary') | |
img1 = gr.Image(label='Generated Image 1') | |
img2 = gr.Image(label='Generated Image 2') | |
with gr.Accordion("Advanced Options", open=False): | |
with gr.Row(): | |
negative = gr.Textbox(label="Negative prompt", value="low quality, low quality, (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, (NSFW:1.25)") | |
with gr.Row(): | |
width = gr.Slider( | |
label="Width", | |
minimum=512, | |
maximum=1280, | |
step=8, | |
value=1024, | |
) | |
height = gr.Slider( | |
label="Height", | |
minimum=512, | |
maximum=1280, | |
step=8, | |
value=1024, | |
) | |
with gr.Row(): | |
scale = gr.Slider( | |
label="Guidance", | |
minimum=3.5, | |
maximum=7, | |
step=0.1, | |
value=7, | |
) | |
steps = gr.Slider( | |
label="Steps", | |
minimum=1, | |
maximum=50, | |
step=1, | |
value=50, | |
) | |
gr.Examples( | |
examples=examples, | |
inputs=prompt, | |
outputs=[img1, img2], | |
fn=generate_image, | |
cache_examples=False, # ์บ์ ์์ฑํ์ง ์๋๋ก ์ค์ | |
) | |
prompt.submit(fn=generate_image, | |
inputs=[prompt, negative, width, height, scale, steps], | |
outputs=[img1, img2], | |
) | |
submit.click(fn=generate_image, | |
inputs=[prompt, negative, width, height, scale, steps], | |
outputs=[img1, img2], | |
) | |
#demo.queue().launch() | |
demo.queue().launch(auth=("gini", "pick")) | |