mta122
first
ca4133a
raw
history blame
7.37 kB
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)