DmitrMakeev's picture
Update app.py
34326c4
raw
history blame contribute delete
No virus
3.2 kB
import gradio as gr
import torch
import numpy as np
import modin.pandas as pd
from PIL import Image
from diffusers import DiffusionPipeline
device = 'cuda' if torch.cuda.is_available() else 'cpu'
if torch.cuda.is_available():
PYTORCH_CUDA_ALLOC_CONF={'max_split_size_mb': 6000}
torch.cuda.max_memory_allocated(device=device)
torch.cuda.empty_cache()
pipe = DiffusionPipeline.from_pretrained("segmind/SSD-1B", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
pipe.enable_xformers_memory_efficient_attention()
pipe = pipe.to(device)
torch.cuda.empty_cache()
refiner = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True, torch_dtype=torch.float16, variant="fp16")
refiner.enable_xformers_memory_efficient_attention()
refiner = refiner.to(device)
torch.cuda.empty_cache()
upscaler = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True)
upscaler.enable_xformers_memory_efficient_attention()
upscaler = upscaler.to(device)
torch.cuda.empty_cache()
else:
pipe = DiffusionPipeline.from_pretrained("segmind/SSD-1B", use_safetensors=True)
pipe = pipe.to(device)
refiner = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True)
refiner = refiner.to(device)
def genie (prompt, negative_prompt, height, width, scale, steps, seed, upscaling):
generator = torch.Generator(device=device).manual_seed(seed)
int_image = pipe(prompt, negative_prompt=negative_prompt, num_inference_steps=steps, height=height, width=width, guidance_scale=scale, num_images_per_prompt=1, generator=generator, output_type="latent").images
if upscaling == 'Yes':
image = refiner(prompt=prompt, image=int_image).images[0]
upscaled = upscaler(prompt=prompt, negative_prompt=negative_prompt, image=image, num_inference_steps=5, guidance_scale=0).images[0]
torch.cuda.empty_cache()
return (image, upscaled)
else:
image = refiner(prompt=prompt, negative_prompt=negative_prompt, image=int_image).images[0]
torch.cuda.empty_cache()
return (image, image)
gr.Interface(fn=genie, inputs=[gr.Textbox(label='Что вы хотите, чтобы ИИ генерировал'),
gr.Textbox(label='Что вы не хотите, чтобы ИИ генерировал'),
gr.Slider(512, 1024, 768, step=128, label='Высота картинки'),
gr.Slider(512, 1024, 768, step=128, label='Ширина картинки'),
gr.Slider(1, 15, 10, step=.25, label='Шкала расхождения'),
gr.Slider(25, maximum=100, value=50, step=25, label='Количество итераций'),
gr.Slider(minimum=1, step=1, maximum=999999999999999999, randomize=True, label='Зерно'),
gr.Radio(['Да', 'Нет'], label='Ремастеринг?')],
outputs=['image', 'image'],
title="Стабильная Диффузия - SDXL - Upscaler",
description="",
article = "<br><br><br><br><br><br><br><br><br><br>").launch(debug=True, max_threads=80)