Spaces:
Running
on
Zero
Running
on
Zero
File size: 2,920 Bytes
2e721a4 aefd3bd 932a564 0c1adc7 0b0bc86 aefd3bd 0b0bc86 f553d63 71cc78c f2d86fb fb04a60 340f8fa 6c31caf 0b0bc86 53d7a5e 0b0bc86 932a564 9549665 932a564 0b0bc86 932a564 f04735b 932a564 0c1adc7 0b0bc86 932a564 a9fdd2e c24c440 |
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 |
import spaces
import gradio as gr
import torch
import modin.pandas as pd
import numpy as np
from diffusers import DiffusionPipeline, DPMSolverSinglestepScheduler, ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
import requests
import cv2
from uuid import uuid4
import numpy as np
from PIL import Image
controlnet = ControlNetModel.from_pretrained("diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16).to("cuda")
pipe = StableDiffusionXLControlNetPipeline.from_pretrained("mann-e/Mann-E_Dreams", controlnet=controlnet, torch_dtype=torch.float16).to("cuda")
pipe.scheduler = DPMSolverSinglestepScheduler.from_config(pipe.scheduler.config, use_karras_sigmas=True)
#pipe.enable_xformers_memory_efficient_attention()
pipe.enable_vae_slicing()
torch.cuda.empty_cache()
@spaces.GPU
def genie (input_image, prompt, negative_prompt, width, height, steps, seed, conditioning_scale):
#processing the input image
res = requests.get(input_image)
image_name = f'tmp_{uuid4()}.png'
if res.ok:
with open(image_name, 'wb') as f:
f.write(res.content)
# Canny Edge Detection
image = cv2.imread(image_name)
image = np.array(image)
image = cv2.Canny(image, 100, 200)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
#cv2.imwrite('canny.png', image)
image = Image.fromarray(image)
conditioning_scale = float(conditioning_scale)
#generating a new image
generator = np.random.seed(0) if seed == 0 else torch.manual_seed(seed)
int_image = pipe(prompt=prompt, negative_prompt=negative_prompt, width=width, height=height, generator=generator, num_inference_steps=steps, guidance_scale=4, image=image, controlnet_conditioning_scale=conditioning_scale).images[0]
return int_image
gr.Interface(fn=genie, inputs=[gr.Textbox(label='Base Image URL'),
gr.Textbox(label='What you want the AI to generate. 75 Token Limit.'),
gr.Textbox(label='What you DO NOT want the AI to generate. 75 Token Limit.'),
gr.Slider(576, maximum=1280, value=768, step=16, label='Width (can go up to 1280, but for square images maximum is 1024x1024)'),
gr.Slider(576, maximum=1280, value=768, step=16, label='Height (can go up to 1280, but for square images maximum is 1024x1024)'),
gr.Slider(1, maximum=8, value=6, step=1, label='Number of Iterations'),
gr.Slider(minimum=0, step=1, maximum=999999999999999999, randomize=True, label="Seed"),
gr.Slider(minimum=0, step=0.05, maximum=1, label="Conditioning Scale"),
],
outputs='image',
title="Mann-E Dreams w/ ControlNet",
description="Mann-E Dreams <br><br><b>WARNING: This model is capable of producing NSFW (Softcore) images.</b><br><br>In case you don't want a base image, just paste link to an image and put conditioning scale to 0",
article = "").launch(debug=True, max_threads=80, show_error=True)
|