chansung's picture
revision
ceefdf5
raw
history blame
4.38 kB
import copy
import random
import gradio as gr
import numpy
import PIL
from pathlib import Path
from constants.init_values import (
genres, places, moods, jobs, random_names, default_character_images
)
from modules import (
ImageMaker, palmchat
)
from interfaces import utils
# TODO: Replace checkpoint filename to Huggingface URL
#img_maker = ImageMaker('hellonijicute25d_V10b.safetensors', vae="kl-f8-anime2.vae.safetensors")
img_maker = ImageMaker('hellonijicute25d_V10b.safetensors') # without_VAE
############
# for plotting
def update_selected_char_image(evt: gr.EventData):
return evt.value
def get_random_name(cur_char_name, char_name1, char_name2, char_name3):
tmp_random_names = copy.deepcopy(random_names)
tmp_random_names.remove(cur_char_name)
tmp_random_names.remove(char_name1)
tmp_random_names.remove(char_name2)
tmp_random_names.remove(char_name3)
return random.choice(tmp_random_names)
def gen_character_image(
gallery_images,
name, age, mbti, personality, job,
genre, place, mood, creative_mode
):
# generate prompts for character image with PaLM
for _ in range(3):
try:
prompt, neg_prompt = img_maker.generate_character_prompts(name, age, job, keywords=[mbti, personality, genre, place, mood], creative_mode=creative_mode)
print(f"Image Prompt: {prompt}")
print(f"Negative Prompt: {neg_prompt}")
break
except Exception as e:
print(e)
if not prompt:
raise ValueError("Failed to generate prompts for character image.")
# generate image
try:
img_filename = img_maker.text2image(prompt, neg_prompt=neg_prompt, ratio='3:4', cfg=4.5)
except ValueError as e:
print(e)
img_filename = str(Path('.') / 'assets' / 'nsfw_warning.png')
# update gallery
# gen_image = numpy.asarray(PIL.Image.open(img_filename))
gallery_images.insert(0, img_filename)
return gr.update(value=gallery_images), gallery_images, img_filename
def update_on_age(evt: gr.SelectData):
job_list = jobs[evt.value]
return (
gr.update(value=places[evt.value][0], choices=places[evt.value]),
gr.update(value=moods[evt.value][0], choices=moods[evt.value]),
gr.update(value=job_list[0], choices=job_list),
gr.update(value=job_list[1], choices=job_list),
gr.update(value=job_list[2], choices=job_list),
gr.update(value=job_list[3], choices=job_list)
)
############
# for tabbing
def update_on_main_tabs(chat_state, evt: gr.SelectData):
chat_mode = "plot_chat"
if evt.value.lower() == "background setup":
chat_mode = "plot_chat"
elif evt.value.lower() == "story generation":
chat_mode = "story_chat"
else: # export
chat_mode = "export_chat"
ppm = chat_state[chat_mode]
return chat_mode, ppm.build_uis()
def reset():
from modules.palmchat import GradioPaLMChatPPManager
return (
[], # cursors
0, # cur_cursor
{
"setting_chat": GradioPaLMChatPPManager(),
"story_chat": GradioPaLMChatPPManager(),
"export_chat": GradioPaLMChatPPManager(),
}, # chat_state
"setting_chat", # chat_mode
default_character_images, # gallery_images1
default_character_images, # gallery_images2
default_character_images, # gallery_images3
default_character_images, # gallery_images4
default_character_images[0], # selected_main_char_image1
default_character_images[0], # selected_side_char_image1
default_character_images[0], # selected_side_char_image2
default_character_images[0], # selected_side_char_image3
genres[0], # genre_dd
places[genres[0]][0], # place_dd
moods[genres[0]][0], # mood_dd
default_character_images, # char_gallery1
jobs[genres[0]][0], # job_dd1
False, # side_char_enable_ckb1
default_character_images, # char_gallery2
jobs[genres[0]][1], # job_dd2
False, # side_char_enable_ckb2
default_character_images, # char_gallery3
jobs[genres[0]][2], # job_dd3
False, # side_char_enable_ckb3
default_character_images, # char_gallery4
jobs[genres[0]][3], # job_dd4
None, # story_image
None, # story_audio
None, # story_video
'', # story_content
gr.Slider(
1, 2, 1, step=1, interactive=True,
label="1/2", visible=False
), # story_progress
'', # custom_prompt_txt
'Action 1', # action_btn1
'Action 2', # action_btn2
'Action 3', # action_btn3
'', # custom_action_txt
'Your Own Story', # title_txt
"", # export_html
)