from diffusers import StableDiffusionPipeline import gradio as gr import torch import os from share_btn import community_icon_html, loading_icon_html, share_js if torch.cuda.is_available(): torchfloat = torch.float16 else: torchfloat = torch.float32 models = [ "DGSpitzer/Cyberpunk-Anime-Diffusion" ] prompt_prefixes = { models[0]: "dgs illustration style " } current_model = models[0] #auth_token = os.environ.get("test") or True #pipe = StableDiffusionPipeline.from_pretrained(current_model, use_auth_token=auth_token, torch_dtype=torchfloat, revision="fp16") pipe = StableDiffusionPipeline.from_pretrained(current_model, torch_dtype=torchfloat, revision="fp16") if torch.cuda.is_available(): pipe = pipe.to("cuda") else: pipe = pipe.to("cpu") device = "GPU 🔥" if torch.cuda.is_available() else "CPU 🥶" def on_model_change(model): global current_model global pipe if model != current_model: current_model = model pipe = StableDiffusionPipeline.from_pretrained(current_model, torch_dtype=torchfloat) if torch.cuda.is_available(): pipe = pipe.to("cuda") def inference(prompt, guidance, steps): promptPrev = prompt prompt = prompt_prefixes[current_model] + prompt image = pipe(prompt, num_inference_steps=int(steps), guidance_scale=guidance, width=512, height=512).images[0] return image, gr.update(visible=True), gr.update(visible=True), gr.update(visible=True), gr.update(placeholder=promptPrev) def inference_example(prompt, guidance, steps): prompt = prompt_prefixes[current_model] + prompt image = pipe(prompt, num_inference_steps=int(steps), guidance_scale=guidance, width=512, height=512).images[0] return image css = """ #col-container {max-width: 700px; margin-left: auto; margin-right: auto;} a {text-decoration-line: underline; font-weight: 600;} .animate-spin { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } #share-btn-container { display: flex; padding-left: 0.5rem !important; padding-right: 0.5rem !important; background-color: #000000; justify-content: center; align-items: center; border-radius: 9999px !important; width: 13rem; } #share-btn { all: initial; color: #ffffff;font-weight: 600; cursor:pointer; font-family: 'IBM Plex Sans', sans-serif; margin-left: 0.5rem !important; padding-top: 0.25rem !important; padding-bottom: 0.25rem !important;right:0; } #share-btn * { all: unset; } #share-btn-container div:nth-child(-n+2){ width: auto !important; min-height: 0px !important; } #share-btn-container .wrap { display: none !important; } """ with gr.Blocks(css=css) as demo: gr.HTML( """

DGS Diffusion Space

Demo for Cyberpunk Anime Diffusion. Based of the projects by anzorq and fffiloni

""" ) gr.Markdown(''' 👇 Buy me a coffee if you like ♥ this project~ 👇 Running this server costs me $100 per week, any help would be much appreciated! [![Buy me a coffee](https://badgen.net/badge/icon/Buy%20Me%20A%20Coffee?icon=buymeacoffee&label)](https://www.buymeacoffee.com/dgspitzer) ''') with gr.Row(): with gr.Column(): model = gr.Dropdown(label="Model", choices=models, value=models[0]) prompt = gr.Textbox(label="Prompt", placeholder="{} is added automatically".format(prompt_prefixes[current_model]), elem_id="input-prompt") guidance = gr.Slider(label="Guidance scale", value=7.5, maximum=15) steps = gr.Slider(label="Steps", value=27, maximum=100, minimum=2) run = gr.Button(value="Run") gr.Markdown(f"Running on: {device}") with gr.Column(): image_out = gr.Image(height=512, type="filepath", elem_id="output-img") with gr.Column(elem_id="col-container"): with gr.Group(elem_id="share-btn-container"): community_icon = gr.HTML(community_icon_html, visible=False) loading_icon = gr.HTML(loading_icon_html, visible=False) share_button = gr.Button("Share to community", elem_id="share-btn", visible=False) model.change(on_model_change, inputs=model, outputs=[]) run.click(inference, inputs=[prompt, guidance, steps], outputs=[image_out, share_button, community_icon, loading_icon, prompt]) share_button.click(None, [], [], _js=share_js) gr.Examples([ ["portrait of anime girl", 7.5, 27], ["a beautiful perfect face girl, Anime fine details portrait of school girl in front of modern tokyo city landscape on the background deep bokeh, anime masterpiece by studio ghibli, 8k, sharp high quality anime, artstation", 7.5, 27], ["cyberpunk city landscape with fancy car", 7.5, 27], ["portrait of liu yifei girl, soldier working in a cyberpunk city, cleavage, intricate, 8k, highly detailed, digital painting, intense, sharp focus", 7.5, 27], ["portrait of a muscular beard male in dgs illustration style, half-body, holding robot arms, strong chest", 7.5, 27], ], [prompt, guidance, steps], image_out, inference_example, cache_examples=torch.cuda.is_available()) gr.Markdown(''' Models and Space by [@DGSpitzer](https://huggingface.co/DGSpitzer)❤️
[![Twitter Follow](https://img.shields.io/twitter/follow/DGSpitzer?label=%40DGSpitzer&style=social)](https://twitter.com/DGSpitzer) ![visitors](https://visitor-badge.glitch.me/badge?page_id=dgspitzer_DGS_Diffusion_Space) ![Model Views](https://visitor-badge.glitch.me/badge?page_id=Cyberpunk_Anime_Diffusion) ''') demo.queue() demo.launch()