File size: 3,271 Bytes
f86ef0c 55f4105 f86ef0c 521a864 f86ef0c c25d024 55f4105 e5158fd cd28a2d 8fb92bc cd28a2d f7c0284 990502e 34ac09b 990502e 34ac09b 990502e cd28a2d f86ef0c f5b7834 f86ef0c c25d024 f86ef0c 1b0d98c eb5cb7c f86ef0c 6b98730 3eb21bd e577eb4 ccf7d79 990502e 7c7de36 e577eb4 ccf7d79 7c7de36 c25d024 f86ef0c |
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 |
import gradio as gr
import requests
import io
import random
import os
from PIL import Image
from deep_translator import GoogleTranslator
from langdetect import detect
API_URL = "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl"
API_TOKEN = os.getenv("HF_READ_TOKEN") # it is free
headers = {"Authorization": f"Bearer {API_TOKEN}"}
def query(prompt, model, is_negative=False, steps=20, cfg_scale=7, seed=None):
language = detect(prompt)
if language == 'ru':
prompt = GoogleTranslator(source='ru', target='en').translate(prompt)
print(f'\033[1mГенерация:\033[0m {prompt}')
if model == 'DALL-E 3 XL':
API_URL = "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl"
if model == 'Playground v2':
API_URL = "https://api-inference.huggingface.co/models/playgroundai/playground-v2-1024px-aesthetic"
if model == 'Openjourney v4':
API_URL = "https://api-inference.huggingface.co/models/prompthero/openjourney-v4"
if model == 'Anything V5':
API_URL = "https://api-inference.huggingface.co/models/stablediffusionapi/anything-v5"
if model == 'AbsoluteReality v1.8.1':
API_URL = "https://api-inference.huggingface.co/models/digiplay/AbsoluteReality_v1.8.1"
if model == 'Dreamshaper v8':
API_URL = "https://api-inference.huggingface.co/models/Lykon/dreamshaper-8"
if model == 'Lyriel 1.6':
API_URL = "https://api-inference.huggingface.co/models/stablediffusionapi/lyrielv16"
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)
}
image_bytes = requests.post(API_URL, headers=headers, json=payload).content
image = Image.open(io.BytesIO(image_bytes))
return image
css = """
footer {visibility: hidden !important;}
"""
with gr.Blocks(css=css) as dalle:
with gr.Tab("Базовые настройки"):
with gr.Row():
with gr.Column(elem_id="prompt-container"):
text_prompt = gr.Textbox(label="Prompt", placeholder="Описание изображения", lines=3, elem_id="prompt-text-input")
model = gr.Radio(label="Модель", value="DALL-E 3 XL", choices=["AbsoluteReality v1.8.1", "DALL-E 3 XL", "Playground v2", "Openjourney v4", "Anything V5", "Dreamshaper v8", "Lyriel 1.6"])
with gr.Tab("Расширенные настройки"):
negative_prompt = gr.Textbox(label="Negative Prompt", placeholder="Чего не должно быть на изображении", value="[deformed | disfigured], poorly drawn, [bad : wrong] anatomy, [extra | missing | floating | disconnected] limb, (mutated hands and fingers), blurry, text, fuzziness", lines=3, elem_id="negative-prompt-text-input")
with gr.Row():
text_button = gr.Button("Генерация", variant='primary', elem_id="gen-button")
with gr.Row():
image_output = gr.Image(type="pil", label="Изображение", elem_id="gallery")
text_button.click(query, inputs=[text_prompt, model, negative_prompt], outputs=image_output)
dalle.launch(show_api=False) |