Spaces:
Sleeping
Sleeping
File size: 5,262 Bytes
b4f9b4b f1052d9 a67a3c8 b4f9b4b 210ed13 95af88e 210ed13 b1328e8 57971cb 210ed13 76b48d0 b4f9b4b ecc81cb 62c5b0c ba57615 76b48d0 62c5b0c f8fb4da 8d6fc68 210ed13 f8fb4da 210ed13 57971cb 210ed13 57971cb 210ed13 3ed5fef 1d16cc9 a597e6b 6cdce4d c6e402b 84291d5 0307843 7206ba2 a597e6b 48e1ac1 758f177 84291d5 0307843 f2fa35d 0307843 f2fa35d 0b4c2e7 0307843 83d3e5a b4f9b4b 7912b14 dd2b7f9 1f747ea 7300f25 b77bd5b dd2b7f9 b77bd5b e531993 452be41 dd2b7f9 b4f9b4b f183947 dd2b7f9 b4f9b4b 210ed13 02471b0 b9d2cc5 b77bd5b 210ed13 2daa864 210ed13 aac4d05 32ecfac 0b4c2e7 dd2b7f9 0b4c2e7 210ed13 aac4d05 210ed13 62c5b0c 210ed13 02471b0 aac4d05 dd2b7f9 02471b0 b9d2cc5 210ed13 dd2b7f9 210ed13 |
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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
import gradio as gr
import os
import re
#from tempfile import NamedTemporaryFile
import numpy as np
import spaces
import random
import string
from diffusers import AutoPipelineForText2Image
import torch
from pathos.multiprocessing import ProcessingPool as ProcessPoolExecutor
import requests
from lxml.html import fromstring
pool = ProcessPoolExecutor(4)
pool.__enter__()
#model_id = "runwayml/stable-diffusion-v1-5"
#model_id = "kandinsky-community/kandinsky-3"
model_id = "stabilityai/stable-diffusion-3-medium-diffusers"
device = "cuda" if torch.cuda.is_available() else "cpu"
if torch.cuda.is_available():
torch.cuda.max_memory_allocated(device=device)
pipe = AutoPipelineForText2Image.from_pretrained(model_id, torch_dtype=torch.float16, variant="fp16", use_safetensors=True, token=os.getenv('hf_token'))
pipe = pipe.to(device)
else:
pipe = AutoPipelineForText2Image.from_pretrained(model_id, use_safetensors=True, token=os.getenv('hf_token'))
pipe = pipe.to(device)
def translate(text,lang):
text = re.sub(f'[{string.punctuation}]', '', re.sub('[\s+]', ' ', text)).lower().strip()
lang = re.sub(f'[{string.punctuation}]', '', re.sub('[\s+]', ' ', lang)).lower().strip()
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15'
]
url = 'https://www.google.com/search'
resp = requests.get(
url = url,
params = {'q': f'{lang} translate {text}'},
headers = {
'User-Agent': random.choice(user_agents)
}
)
content = resp.content
html = fromstring(content)
#src = html.xpath('//pre[@data-placeholder="Enter text"]/textarea')[0].text.strip()
translated = text
try:
trgt = html.xpath('//span[@class="target-language"]')[0].text.strip()
rslt = html.xpath('//pre[@aria-label="Translated text"]/span')[0].text.strip()
if trgt.lower() == lang.lower():
translated = rslt
except:
raise Exception("Translation Error!")
ret = re.sub(f'[{string.punctuation}]', '', re.sub('[\s+]', ' ', translated)).lower().strip()
print(ret)
return ret
def generate_random_string(length):
characters = string.ascii_letters + string.digits
return ''.join(random.choice(characters) for _ in range(length))
@spaces.GPU(duration=120)
def Piper(_do,_dont):
return pipe(
_do,
height=512,
width=768,
negative_prompt=_dont,
num_inference_steps=40,
guidance_scale=10
)
def infer(prompt,prompt2):
name = generate_random_string(12)+".png"
_do = f'{ translate(prompt,"english") }, hot colors palette, muted colors, dynamic poze, realistic, accurate, matched, realistic details, award winning photograph, soft natural lighting, deep field, high definition, highly detailed, 8k'.lower()
_dont = f'{translate(prompt2,"english")}, ugly, deformed, disfigured, poor details, bad anatomy, labels, text, logo'
image = Piper(_do,_dont).images[0].save(name)
return name
css="""
#col-container {
margin: 0 auto;
max-width: 15cm;
}
#image-container {
aspect-ratio: 3 / 2;
}
.dropdown-arrow {
display: none !important;
}
"""
js="""
function custom(){
document.querySelector("div#prompt input").setAttribute("maxlength","38");
document.querySelector("div#prompt2 input").setAttribute("maxlength","38");
}
"""
if torch.cuda.is_available():
power_device = "GPU"
else:
power_device = "CPU"
with gr.Blocks(theme=gr.themes.Soft(),css=css,js=js) as demo:
with gr.Column(elem_id="col-container"):
gr.Markdown(f"""
# Image Generator
Currently running on {power_device}.
""")
with gr.Row():
prompt = gr.Textbox(
elem_id="prompt",
placeholder="Photo Description",
container=False,
rtl=True,
max_lines=1
)
prompt2 = gr.Textbox(
elem_id="prompt2",
placeholder="Forbidden Content",
container=False,
rtl=True,
max_lines=1
)
with gr.Row():
run_button = gr.Button("Run")
result = gr.Image(elem_id="image-container", label="Result", show_label=False, type='filepath')
run_button.click(
fn = infer,
inputs = [prompt,prompt2],
outputs = [result]
)
demo.queue().launch() |