Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
# os.environ["CUDA_VISIBLE_DEVICES"] = "-1" | |
from categories import categories, font_list | |
import pdb | |
from PIL import Image | |
import random | |
try: | |
import pygsheets | |
except Exception as e: | |
print("pygsheets not found", e) | |
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:128" | |
global_index = 0 | |
mode_global = "DS-Fusion-Express" | |
prompt_global = "" | |
def log_data_to_sheet(pre_style, style_custom, glyph, attribute): | |
try: | |
#authorization | |
gc = pygsheets.authorize(service_file='./huggingface-connector-02adcb4cdf00.json') | |
#open the google spreadsheet (where 'PY to Gsheet Test' is the name of my sheet) | |
sh = gc.open('HuggingFace Logs') | |
#select the first sheet | |
wks = sh[0] | |
# Send fields list | |
wks.append_table(values=[pre_style, style_custom, glyph, attribute]) | |
except: | |
pass | |
def change_font(evt: gr.SelectData): | |
global global_index | |
global_index = evt.index | |
def my_main(pre_style, style_custom, glyph, attribute): | |
log_data_to_sheet(pre_style, style_custom, glyph, attribute) | |
global prompt_global | |
glyph = glyph[0] | |
command = "rm -r out_cur/*" | |
os.system(command) | |
for i in range(1,5): | |
command = "cp initial_show/" + str(i) +".png out_cur/"+str(i)+".png" | |
os.system(command) | |
style = pre_style | |
command = "rm -r data_style/" | |
os.system(command) | |
if style_custom != "": | |
style = style_custom | |
if len(glyph) != 1: | |
prompt_global = f" {style}" | |
else: | |
prompt_global = f" {style} {glyph}" | |
li = "ckpt/all2.ckpt" | |
output_path = f"out/express" | |
if attribute == "": | |
prompt = f" '{style} {glyph}'" | |
else: | |
prompt = f" '{attribute} {style} {glyph}'" | |
command = "rm -r out/" | |
os.system(command) | |
print(prompt) | |
command = "python txt2img.py --ddim_eta 1.0 \ | |
--n_samples 4 \ | |
--n_iter 1\ | |
--ddim_steps 50 \ | |
--scale 5.0\ | |
--H 256\ | |
--W 256\ | |
--outdir " + output_path + " --ckpt " +li +" --prompt " + prompt | |
os.system(command) | |
command = "rm -r out_cur/*" | |
os.system(command) | |
path = [] | |
final_imgs = os.listdir(output_path+"/samples") | |
for i in range(4): | |
path.append(os.path.join(output_path+"/samples", final_imgs[i])) | |
path_in = os.path.join(output_path+"/samples", final_imgs[i]) | |
command = "cp " + path_in + " " + "out_cur/"+final_imgs[i] | |
os.system(command) | |
return gr.update(value=path) | |
def rem_bg(): | |
command= "rm -r out_bg/*" | |
os.system(command) | |
files = os.listdir("out_cur") | |
if len(files)>0: | |
command_3 = f"python script_step3.py --input_dir out_cur --method 'rembg'" | |
os.system(command_3) | |
for file in files: | |
command = "cp out_bg/"+file +" out_cur/" | |
os.system(command) | |
path = [] | |
for file in files: | |
file_path = os.path.join("out_cur", file) | |
image = Image.open(file_path) | |
new_image = Image.new("RGBA", image.size, "WHITE") | |
new_image.paste(image, (0, 0), image) | |
new_image.save(file_path, "PNG") | |
path.append(file_path) | |
return gr.update(value = path) | |
font_list_express = [ | |
'Caladea-Regular', #works good | |
# 'Garuda-Bold', #works poorlyß | |
'FreeSansOblique', #works average | |
"Purisa", #works good | |
"Uroob" #worksaverage | |
] | |
path_fonts_express = [] | |
for font in font_list_express: | |
path_in = "font_list/fonts/"+font+".png" | |
path_fonts_express.append(path_in) | |
def make_upper(value): | |
if value == "": | |
return "" | |
return value[0].upper() | |
def get_out_cur(): | |
path = [] | |
pth = "log_view" | |
for file in os.listdir(pth): | |
file_final = os.path.join(pth, file) | |
path.append(file_final) | |
return gr.update(value=path) | |
def update_time_mode(value): | |
if value == 'DS-Fusion': | |
return gr.update(value="Generation Time: ~5 mins") | |
else: | |
return gr.update(value="Generation Time: ~30 seconds") | |
def update_time_cb(value): | |
if value: | |
if mode_global == "DS-Fusion": | |
return gr.update(value="Generation Time: ~8 mins") | |
return gr.update(value="Generation Time: ~30 seconds") | |
else: | |
if mode_global == "DS-Fusion": | |
return gr.update(value="Generation Time: ~5 mins") | |
return gr.update(value="Generation Time: ~30 seconds") | |
def load_img(): | |
path = [] | |
dir = "out_cur" | |
for file in os.listdir(dir): | |
file_full = os.path.join(dir, file) | |
path.append(file_full) | |
return path | |
css = ''' | |
<!-- this makes the items inside the gallery to shrink --> | |
div#gallery_64 div.grid { | |
height: 64px; | |
width: 180px; | |
} | |
<!-- this makes the gallery's height to shrink --> | |
div#gallery_64 > div:nth-child(3) { | |
min-height: 172px !important; | |
} | |
<!-- this makes the gallery's height to shrink when you click one image to view it bigger --> | |
div#gallery_64 > div:nth-child(4) { | |
min-height: 172px !important; | |
} | |
''' | |
with gr.Blocks(css=css) as demo: | |
with gr.Column(): | |
with gr.Row(): | |
with gr.Column(): | |
with gr.Row(): | |
in4 = gr.Text(label="Character (A-Z, 0-9) to Stylize", info = "Only works with capitals. Will pick first letter if more than one", value = "R", interactive = True) | |
in2 = gr.Dropdown(categories, label="Pre-Defined Style Categories", info = "Categories used to train Express", value = "DRAGON", interactive = True) | |
with gr.Row(): | |
in3 = gr.Text(label="Override Style Category ", info="This will replace the pre-defined style value", value = "", interactive = True) | |
in5 = gr.Text(label="Additional Style Attribute ",info= "e.g. pixel, grayscale, etc", value = "", interactive = True) | |
# with gr.Row(): | |
# with gr.Column(): | |
# in8 = gr.Checkbox(label="MULTI FONT INPUT - font selection below is over-ridden", info="Select for more abstract results", value = False, interactive = True).style(container=True) | |
# gallery = gr.Gallery([], label="Select Font", show_label=True, elem_id="gallery_64").style(grid=[2,6], preview=True, height="auto") | |
with gr.Row(): | |
btn = gr.Button("Let's Stylize It - Generation Time: ~60 seconds", interactive = True) | |
# btn_bg = gr.Button("Remove Background", interactive = True) | |
with gr.Column(): | |
gallery_out = gr.Gallery(label="Generated images", elem_id="gallery_out").style(grid=[2,2], height="full") | |
outputs = [gallery_out] | |
# gallery.select(change_font, None, None) | |
inputs = [in2,in3,in4,in5] | |
btn.click(my_main, inputs, outputs) | |
# btn_bg.click(rem_bg, None, outputs) | |
if __name__ == "__main__": | |
command = "rm -r out_cur/*" | |
os.system(command) | |
for i in range(1,5): | |
command = "cp initial_show/" + str(i) +".png out_cur/"+str(i)+".png" | |
os.system(command) | |
demo.queue() | |
demo.launch(share=False) | |