CoolFace
Apppublic

lambda/text-to-naruto

sourceHugging Faceupdated 4y agoView on Hugging Face
74likes
app.py204 linesDownload Raw Back to root
1from contextlib import nullcontext2import gradio as gr3import torch4from torch import autocast5from diffusers import StableDiffusionPipeline6 7 8device = "cuda" if torch.cuda.is_available() else "cpu"9context = autocast if device == "cuda" else nullcontext10dtype = torch.float16 if device == "cuda" else torch.float3211 12pipe = StableDiffusionPipeline.from_pretrained("lambdalabs/sd-naruto-diffusers", torch_dtype=dtype)13pipe = pipe.to(device)14 15 16# Sometimes the nsfw checker is confused by the Naruto images, you can disable17# it at your own risk here18# disable_safety = True19 20# if disable_safety:21#   def null_safety(images, **kwargs):22#       return images, False23#   pipe.safety_checker = null_safety24 25 26def infer(prompt, n_samples, steps, scale):27 28    with context("cuda"):29        images = pipe(n_samples*[prompt], guidance_scale=scale, num_inference_steps=steps).images30 31    return images32 33css = """34        a {35            color: inherit;36            text-decoration: underline;37        }38        .gradio-container {39            font-family: 'IBM Plex Sans', sans-serif;40        }41        .gr-button {42            color: white;43            border-color: #9d66e5;44            background: #9d66e5;45        }46        input[type='range'] {47            accent-color: #9d66e5;48        }49        .dark input[type='range'] {50            accent-color: #dfdfdf;51        }52        .container {53            max-width: 730px;54            margin: auto;55            padding-top: 1.5rem;56        }57        #gallery {58            min-height: 22rem;59            margin-bottom: 15px;60            margin-left: auto;61            margin-right: auto;62            border-bottom-right-radius: .5rem !important;63            border-bottom-left-radius: .5rem !important;64        }65        #gallery>div>.h-full {66            min-height: 20rem;67        }68        .details:hover {69            text-decoration: underline;70        }71        .gr-button {72            white-space: nowrap;73        }74        .gr-button:focus {75            border-color: rgb(147 197 253 / var(--tw-border-opacity));76            outline: none;77            box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);78            --tw-border-opacity: 1;79            --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);80            --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px var(--tw-ring-offset-width)) var(--tw-ring-color);81            --tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity));82            --tw-ring-opacity: .5;83        }84        #advanced-options {85            margin-bottom: 20px;86        }87        .footer {88            margin-bottom: 45px;89            margin-top: 35px;90            text-align: center;91            border-bottom: 1px solid #e5e5e5;92        }93        .footer>p {94            font-size: .8rem;95            display: inline-block;96            padding: 0 10px;97            transform: translateY(10px);98            background: white;99        }100        .dark .logo{ filter: invert(1); }101        .dark .footer {102            border-color: #303030;103        }104        .dark .footer>p {105            background: #0b0f19;106        }107        .acknowledgments h4{108            margin: 1.25em 0 .25em 0;109            font-weight: bold;110            font-size: 115%;111        }112"""113 114block = gr.Blocks(css=css)115 116examples = [117    [118        'Yoda',119        2,120        7.5,121    ],122    [123        'Abraham Lincoln',124        2,125        7.5,126    ],127    [128        'George Washington',129        2,130        7,131    ],132]133 134with block:135    gr.HTML(136        """137            <div style="text-align: center; max-width: 650px; margin: 0 auto;">138              <div>139                <img class="logo" src="https://lambdalabs.com/hubfs/logos/lambda-logo.svg" alt="Lambda Logo"140                    style="margin: auto; max-width: 7rem;">141                <h1 style="font-weight: 900; font-size: 3rem;">142                  Naruto text to image143                </h1>144              </div>145              <p style="margin-bottom: 10px; font-size: 94%">146              Generate new Naruto anime character from a text description,147                <a href="https://lambdalabs.com/blog/how-to-fine-tune-stable-diffusion-how-we-made-the-text-to-pokemon-model-at-lambda/">created by Lambda Labs</a>.148              </p>149            </div>150        """151    )152    with gr.Group():153        with gr.Box():154            with gr.Row().style(mobile_collapse=False, equal_height=True):155                text = gr.Textbox(156                    label="Enter your prompt",157                    show_label=False,158                    max_lines=1,159                    placeholder="Enter your prompt",160                ).style(161                    border=(True, False, True, True),162                    rounded=(True, False, False, True),163                    container=False,164                )165                btn = gr.Button("Generate image").style(166                    margin=False,167                    rounded=(False, True, True, False),168                )169 170        gallery = gr.Gallery(171            label="Generated images", show_label=False, elem_id="gallery"172        ).style(grid=[2], height="auto")173 174 175        with gr.Row(elem_id="advanced-options"):176            samples = gr.Slider(label="Images", minimum=1, maximum=4, value=2, step=1)177            steps = gr.Slider(label="Steps", minimum=5, maximum=50, value=50, step=5)178            scale = gr.Slider(179                label="Guidance Scale", minimum=0, maximum=50, value=7.5, step=0.1180            )181 182 183        ex = gr.Examples(examples=examples, fn=infer, inputs=[text, samples, scale], outputs=gallery, cache_examples=False)184        ex.dataset.headers = [""]185 186 187        text.submit(infer, inputs=[text, samples, steps, scale], outputs=gallery)188        btn.click(infer, inputs=[text, samples, steps, scale], outputs=gallery)189        gr.HTML(190            """191                <div class="footer">192                    <p> Gradio Demo by 🤗 Hugging Face and Lambda Labs193                    </p>194                </div>195                <div class="acknowledgments">196                    <p> Put in a text prompt and generate your own Naruto anime character, no "prompt engineering" required!197                    <p>If you want to find out how we made this model read about it in <a href="https://lambdalabs.com/blog/how-to-fine-tune-stable-diffusion-how-we-made-the-text-to-pokemon-model-at-lambda/">this blog post</a>.198                    <p>And if you want to train your own Stable Diffusion variants, see our <a href="https://github.com/LambdaLabsML/examples/tree/main/stable-diffusion-finetuning">Examples Repo</a>!199                    <p>Trained by Eole Cervenka at <a href="https://lambdalabs.com/">Lambda Labs</a>.</p>200               </div>201           """202        )203 204block.launch()