File size: 6,950 Bytes
d8fcee4
 
 
 
 
9f6fb93
8ec67ee
d8fcee4
 
 
 
 
e9784b1
d8fcee4
 
 
c462fe7
d8fcee4
 
 
 
 
 
 
 
 
 
 
c4b5d77
d8fcee4
c4b5d77
 
 
d8fcee4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c4b5d77
d8fcee4
c4b5d77
 
 
d8fcee4
 
b9c2637
d8fcee4
 
4406e6c
d8fcee4
 
 
 
 
 
 
b9c2637
d8fcee4
51d2448
d8fcee4
 
 
 
 
c4b5d77
 
 
 
 
fdf21aa
d8fcee4
 
1a63003
d8fcee4
 
eedafde
 
d8fcee4
a039a6a
d8fcee4
 
c4b5d77
d8fcee4
c4b5d77
d8fcee4
e7ae5d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import gradio as gr
import torch
import numpy as np
import modin.pandas as pd
from PIL import Image
from diffusers import DiffusionPipeline #, StableDiffusion3Pipeline
from huggingface_hub import hf_hub_download

device = 'cuda' if torch.cuda.is_available() else 'cpu'
torch.cuda.max_memory_allocated(device=device)
torch.cuda.empty_cache()

def genie (Model, Prompt, negative_prompt, height, width, scale, steps, seed, refine, high_noise_frac):
    generator = np.random.seed(0) if seed == 0 else torch.manual_seed(seed)
       
    if Model == "PhotoReal":
        pipe = DiffusionPipeline.from_pretrained("circulus/canvers-real-v3.9.1", torch_dtype=torch.float16, safety_checker=None) if torch.cuda.is_available() else DiffusionPipeline.from_pretrained("circulus/canvers-real-v3.8.1")
        pipe.enable_xformers_memory_efficient_attention()
        pipe = pipe.to(device)
        torch.cuda.empty_cache()
        if refine == "Yes":
            refiner = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0", use_safetensors=True, torch_dtype=torch.float16, variant="fp16") if torch.cuda.is_available() else DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0")
            refiner.enable_xformers_memory_efficient_attention()
            refiner = refiner.to(device)
            torch.cuda.empty_cache()
            int_image = pipe(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale).images
            image = refiner(Prompt, negative_prompt=negative_prompt, image=int_image, denoising_start=high_noise_frac).images[0]
            torch.cuda.empty_cache()
            return image
        else:
            image = pipe(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale).images[0]
            torch.cuda.empty_cache()
            return image
    
    if Model == "Animagine XL 3.0":
        animagine = DiffusionPipeline.from_pretrained("cagliostrolab/animagine-xl-3.0", torch_dtype=torch.float16, safety_checker=None) if torch.cuda.is_available() else DiffusionPipeline.from_pretrained("cagliostrolab/animagine-xl-3.0")
        animagine.enable_xformers_memory_efficient_attention()
        animagine = animagine.to(device)
        torch.cuda.empty_cache()
        if refine == "Yes":
            torch.cuda.empty_cache()
            torch.cuda.max_memory_allocated(device=device)
            int_image = animagine(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale, output_type="latent").images
            torch.cuda.empty_cache()
            animagine = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0", use_safetensors=True, torch_dtype=torch.float16, variant="fp16") if torch.cuda.is_available() else DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0")
            animagine.enable_xformers_memory_efficient_attention()
            animagine = animagine.to(device)
            torch.cuda.empty_cache()
            image = animagine(Prompt, negative_prompt=negative_prompt, image=int_image, denoising_start=high_noise_frac).images[0]
            torch.cuda.empty_cache()
            return image    
        else:
            image = animagine(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale).images[0]
            torch.cuda.empty_cache()
            return image

    if Model == "SDXL 1.0":
        
        torch.cuda.empty_cache()
        torch.cuda.max_memory_allocated(device=device)
        sdxl = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
        sdxl.enable_xformers_memory_efficient_attention()
        sdxl = sdxl.to(device)   
        torch.cuda.empty_cache()
    
        if refine == "Yes":
            torch.cuda.max_memory_allocated(device=device)
            torch.cuda.empty_cache()
            image = sdxl(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale, output_type="latent").images
            torch.cuda.empty_cache()
            sdxl = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0", use_safetensors=True, torch_dtype=torch.float16, variant="fp16") if torch.cuda.is_available() else DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0")
            sdxl.enable_xformers_memory_efficient_attention()
            sdxl = sdxl.to(device)
            torch.cuda.empty_cache()
            refined = sdxl(Prompt, negative_prompt=negative_prompt, image=image, denoising_start=high_noise_frac).images[0]
            torch.cuda.empty_cache()
            return refined
        else:   
            image = sdxl(Prompt, negative_prompt=negative_prompt, height=height, width=width, num_inference_steps=steps, guidance_scale=scale).images[0]
            torch.cuda.empty_cache()
            return image

    return image
    
gr.Interface(fn=genie, inputs=[gr.Radio(['PhotoReal', 'Animagine XL 3.0', 'SDXL 1.0',], value='PhotoReal', label='Choose Model'),
                               gr.Textbox(label='What you want the AI to generate. 77 Token Limit.'), 
                               gr.Textbox(label='What you Do Not want the AI to generate. 77 Token Limit'),
                               gr.Slider(512, 1024, 768, step=128, label='Height'),
                               gr.Slider(512, 1024, 768, step=128, label='Width'),
                               gr.Slider(1, maximum=15, value=5, step=.25, label='Guidance Scale'), 
                               gr.Slider(5, maximum=100, value=50, step=5, label='Number of Iterations'), 
                               gr.Slider(minimum=0, step=1, maximum=9999999999999999, randomize=True, label='Seed: 0 is Random'), 
                               gr.Radio(["Yes", "No"], label='SDXL 1.0 Refiner: Use if the Image has too much Noise', value='No'),
                               gr.Slider(minimum=.9, maximum=.99, value=.95, step=.01, label='Refiner Denoise Start %')],
             outputs=gr.Image(label='Generated Image'), 
             title="Manju Dream Booth V2.1 with SDXL 1.0 Refiner - GPU", 
             description="<br><br><b/>Warning: This Demo is capable of producing NSFW content.", 
             article = "If You Enjoyed this Demo and would like to Donate, you can send any amount to any of these Wallets. <br><br>SHIB (BEP20): 0xbE8f2f3B71DFEB84E5F7E3aae1909d60658aB891 <br>PayPal: https://www.paypal.me/ManjushriBodhisattva <br>ETH: 0xbE8f2f3B71DFEB84E5F7E3aae1909d60658aB891 <br>DOGE: D9QdVPtcU1EFH8jDC8jhU9uBcSTqUiA8h6<br><br>Code Monkey: <a href=\"https://huggingface.co/Manjushri\">Manjushri</a>").launch(debug=True, max_threads=80)