File size: 3,864 Bytes
f86ef0c 689df9f f86ef0c adebd8e f86ef0c 619238b a081231 ee00b5d f4e7385 4b130be 619238b f86ef0c adebd8e 6879969 619238b 17610a2 619238b 1974db4 af16514 adebd8e 1974db4 adebd8e 1974db4 adebd8e 1974db4 c4b82ef af16514 619238b 6879969 f86ef0c f5b7834 f86ef0c 619238b f86ef0c 57d84d6 619238b 57d84d6 f86ef0c 6d82c44 f86ef0c 619238b 87f1ebb 619238b 87f1ebb 619238b f86ef0c 8b990bd 5dd7553 8b990bd dcbbf2e 1974db4 5dd7553 f86ef0c 1974db4 f86ef0c 95ae0b9 |
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 99 100 101 102 103 104 105 |
import gradio as gr
import requests
import json
import io
import random
import os
import torch
from transformers import pipeline
from PIL import Image
API_BASE_URL = "https://api-inference.huggingface.co/models/"
MODEL_LIST = [
"openskyml/dalle-3-xl",
"Linaqruf/animagine-xl-2.0",
"Lykon/dreamshaper-7",
"Linaqruf/animagine-xl",
"runwayml/stable-diffusion-v1-5",
"stabilityai/stable-diffusion-xl-base-1.0",
"prompthero/openjourney-v4",
"nerijs/pixel-art-xl",
"Linaqruf/anything-v3.0",
"playgroundai/playground-v2-1024px-aesthetic",
"ilovecutiee/fantastical-art-lora",
"segmind/SSD-1B",
"segmind/Segmind-Vega",
"stablediffusionapi/anything-v5",
"stablediffusionapi/realistic-vision-v51",
"hakurei/waifu-diffusion"
]
API_TOKEN = os.getenv("HF_READ_TOKEN") # Make sure to set your Hugging Face token
HEADERS = {"Authorization": f"Bearer {API_TOKEN}"}
pipe = pipeline("text-generation", model="isek-ai/SDPrompt-RetNet-300M", trust_remote_code=True)
def select_model(model_name):
if model_name in MODEL_LIST:
return f"{API_BASE_URL}{model_name}"
def extend_prompt(input_text):
if not input_text.strip():
gr.Warning("Input text is empty!")
return None
seed = random.randint(1, 1000000)
torch.manual_seed(seed)
output = pipe(input_text, max_length=(len(input_text) + random.randint(60, 90)), num_return_sequences=4)
return output
def generate_image(prompt, selected_model, is_negative=False, steps=1, cfg_scale=6, seed=None):
if not prompt.strip():
raise gr.Error("Cannot generate image: Input text is empty!")
model_url = select_model(selected_model)
API_URL = f"{model_url}"
payload = {
"inputs": prompt,
"is_negative": is_negative,
"steps": steps,
"cfg_scale": cfg_scale,
"seed": seed if seed is not None else random.randint(-1, 2147483647)
}
try:
response = requests.post(API_URL, headers=HEADERS, json=payload)
response.raise_for_status()
image_bytes = io.BytesIO(response.content)
image = Image.open(image_bytes)
return image
except requests.exceptions.RequestException as e:
raise gr.Error(e)
with gr.Blocks(theme="soft") as playground:
gr.HTML(
"""
<div style="text-align: center; margin: 0 auto;">
<div style="display: inline-flex; align-items: center; gap: 0.8rem; font-size: 1.75rem;">
<h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;">🎨🤖 Play with SD Models</h1>
</div>
<p style="margin-bottom: 10px; font-size: 94%; line-height: 23px;">
Explore and create your AI art with Stable Diffusion models!
</p>
</div>
"""
)
with gr.Row():
image_output = gr.Image(type="pil", label="Output Image", elem_id="gallery")
with gr.Column(elem_id="prompt-container"):
text_prompt = gr.Textbox(label="Prompt", placeholder="a cute cat", lines=1, elem_id="prompt-text-input")
model_dropdown = gr.Dropdown(label="Model", choices=MODEL_LIST, elem_id="model-dropdown", value="runwayml/stable-diffusion-v1-5")
gen_button = gr.Button("Generate", variant='primary', elem_id="gen-button")
extend_button = gr.Button("Extend Prompt", variant='primary', elem_id="extend-button")
with gr.Accordion("Advanced settings", open=False):
negative_prompt = gr.Textbox(label="Negative Prompt", value="text, blurry, fuzziness", lines=1, elem_id="negative-prompt-text-input")
gen_button.click(generate_image, inputs=[text_prompt, model_dropdown, negative_prompt], outputs=image_output)
extend_button.click(extend_prompt, inputs=text_prompt, outputs=text_prompt)
playground.launch(show_api=False) |