Spaces:
Runtime error
Runtime error
File size: 10,873 Bytes
c0b6d7e 0f0f3e0 2a651a9 c0b6d7e d4778c5 c0b6d7e 6b0140b c0b6d7e bc2fb74 c0b6d7e bc2fb74 c0b6d7e 3fce290 202b8a5 3fce290 bc2fb74 c0b6d7e 82b8988 bc2fb74 82b8988 202b8a5 82b8988 bc2fb74 82b8988 202b8a5 82b8988 bc2fb74 82b8988 bc2fb74 82b8988 c0b6d7e 9cb7448 c0b6d7e 9cb7448 c0b6d7e bc2fb74 c0b6d7e 202b8a5 c0b6d7e 202b8a5 c0b6d7e bc2fb74 c0b6d7e bc2fb74 c0b6d7e bc2fb74 c0b6d7e a529f7a ebab327 a529f7a c0b6d7e a529f7a 1ef4f73 a529f7a 1ef4f73 c0b6d7e d4778c5 c0b6d7e d4778c5 c0b6d7e 168d548 64f5bc1 c0b6d7e 64f5bc1 c0b6d7e 168d548 c0b6d7e |
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 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
import gradio as gr
import os
import torch
import modules.wdtagger
from modules.model import get_model_and_vae_options
from modules.text2img import generate_image_wrapper
# Mendapatkan daftar model dan VAE untuk dropdown
all_models, all_vaes = get_model_and_vae_options()
# Daftar model dan ControlNet
models = ["Model A", "Model B", "Model C"]
vae = ["VAE A", "VAE B", "VAE C"]
controlnet_types = ["Canny", "Depth", "Normal", "Pose"]
schedulers = ["Euler", "LMS", "DDIM"]
# Fungsi placeholder
def load_model(selected_model):
return f"Model {selected_model} telah dimuat."
def generate_image(prompt, neg_prompt, width, height, scheduler, num_steps, num_images, cfg_scale, seed, model):
# Logika untuk menghasilkan gambar dari teks menggunakan model
return [f"Gambar {i+1} untuk prompt '{prompt}' dengan model '{model}'" for i in range(num_images)], {"prompt": prompt, "neg_prompt": neg_prompt}
def process_image(image, prompt, neg_prompt, model):
# Logika untuk memproses gambar menggunakan model
return f"Proses gambar dengan prompt '{prompt}' dan model '{model}'"
def controlnet_process(image, controlnet_type, model):
# Logika untuk memproses gambar menggunakan ControlNet
return f"Proses gambar dengan ControlNet '{controlnet_type}' dan model '{model}'"
def controlnet_process_func(image, controlnet_type, model):
# Update fungsi sesuai kebutuhan
return controlnet_process(image, controlnet_type, model)
def intpaint_func (image, controlnet_type, model):
# Update fungsi sesuai kebutuhan
return controlnet_process(image, controlnet_type, model)
def intpaint_func (image, controlnet_type, model):
# Update fungsi sesuai kebutuhan
return controlnet_process(image, controlnet_type, model)
with gr.Blocks(css="style.css") as app:
# Dropdown untuk memilih model di luar tab dengan lebar kecil
with gr.Row():
checkpoint_dropdown = gr.Dropdown(choices=all_models, label="Model", value=all_models[0])
vae_dropdown = gr.Dropdown(choices=all_vaes, label="VAE", value=all_vaes[0])
# Tab untuk Text-to-Image
with gr.Tab("Text-to-Image"):
with gr.Row():
with gr.Column(scale=1):
prompt_input = gr.Textbox(label="Prompt", placeholder="Enter Prompt", lines=2, elem_id="prompt-input")
neg_prompt_input = gr.Textbox(label="Negative prompt", placeholder="Enter Negative Prompt (optional)", lines=2, elem_id="neg-prompt-input")
generate_button = gr.Button("Generate", elem_id="generate-button", scale=0.13)
with gr.Row():
with gr.Column():
with gr.Row():
scheduler_input = gr.Dropdown(choices=schedulers, label="Sampling method", value=schedulers[0])
seed_input = gr.Number(label="Seed", value=-1)
with gr.Row():
width_input = gr.Slider(minimum=128, maximum=2048, step=128, label="Width", value=1024)
batch_size = gr.Slider(minimum=1, maximum=24, step=1, label="Batch size", value=1)
with gr.Row():
height_input = gr.Slider(minimum=128, maximum=2048, step=128, label="Height", value=1024)
batch_count = gr.Slider(minimum=1, maximum=24, step=1, label="Batch Count", value=1)
with gr.Row():
num_steps_input = gr.Slider(minimum=1, maximum=100, step=1, label="Sampling steps", value=20)
cfg_scale_input = gr.Slider(minimum=1, maximum=20, step=1, label="CFG Scale", value=7)
with gr.Accordion("Hires. fix", open=False):
use_hires = gr.Checkbox(label="Use Hires?", value=False, scale=0)
with gr.Row():
upscaler = gr.Dropdown(choices=schedulers, label="Upscaler", value=schedulers[0])
upscale_by = gr.Slider(minimum=1, maximum=8, step=1, label="Upscale by", value=2)
with gr.Row():
hires_steps = gr.Slider(minimum=1, maximum=50, step=1, label="Hires Steps", value=20)
denois_strength = gr.Slider(minimum=0, maximum=1, step=0.02, label="Denoising Strength", value=2)
with gr.Column():
# Gallery untuk output gambar
output_gallery = gr.Gallery(label="Image Results")
# Output teks JSON di bawah gallery
output_text = gr.Textbox(label="Metadata", placeholder="Results are in Json format", lines=2)
def update_images(prompt, neg_prompt, width, height, scheduler, num_steps, batch_size, batch_count, cfg_scale, seed, model, vae):
# Update fungsi sesuai kebutuhan
return generate_image_wrapper(prompt, neg_prompt, width, height, scheduler, num_steps, batch_size, batch_count, cfg_scale, seed, model, vae)
generate_button.click(
fn=update_images,
inputs=[prompt_input, neg_prompt_input, width_input, height_input, scheduler_input, num_steps_input, batch_size, batch_count, cfg_scale_input, seed_input, checkpoint_dropdown, vae_dropdown],
outputs=[output_gallery, output_text]
)
# Tab untuk Image-to-Image
with gr.Tab("Image-to-Image"):
with gr.Row():
with gr.Column(scale=1):
prompt_input_i2i = gr.Textbox(label="Prompt", placeholder="Masukkan prompt teks", lines=2, elem_id="prompt-input")
neg_prompt_input_i2i = gr.Textbox(label="Neg Prompt", placeholder="Masukkan negasi prompt", lines=2, elem_id="neg-prompt-input")
generate_button = gr.Button("Generate", elem_id="generate-button", scale=0.13)
with gr.Row():
with gr.Column():
image_input = gr.Image(label="Unggah Gambar")
generate_button_i2i = gr.Button("Generate")
with gr.Row():
scheduler_input = gr.Dropdown(choices=schedulers, label="Sampling method", value=schedulers[0])
seed_input = gr.Number(label="Seed", value=-1)
with gr.Row():
steps = gr.Slider(minimum=1, maximum=100, step=1, label="Steps", value=20)
cfg_scale = gr.Slider(minimum=1, maximum=24, step=1, label="CFG Scale", value=7)
with gr.Row():
strength = gr.Slider(minimum=0, maximum=1, step=0.1, label="Strength", value=0.6)
with gr.Column():
output_image_i2i = gr.Image(label="Hasil Gambar")
def process_image_func(image, prompt, neg_prompt, model):
# Update fungsi sesuai kebutuhan
return process_image(image, prompt, neg_prompt, model)
generate_button_i2i.click(fn=process_image_func, inputs=[image_input, prompt_input_i2i, neg_prompt_input_i2i, checkpoint_dropdown, vae_dropdown], outputs=output_image_i2i)
# Tab untuk ControlNet
with gr.Tab("ControlNet"):
with gr.Row():
with gr.Column():
controlnet_dropdown = gr.Dropdown(choices=controlnet_types, label="Pilih Tipe ControlNet")
controlnet_image_input = gr.Image(label="Unggah Gambar untuk ControlNet")
controlnet_button = gr.Button("Proses dengan ControlNet")
with gr.Column():
controlnet_output_image = gr.Image(label="Hasil ControlNet")
controlnet_button.click(fn=controlnet_process_func, inputs=[controlnet_image_input, controlnet_dropdown, checkpoint_dropdown, vae_dropdown], outputs=controlnet_output_image)
# Tab untuk Intpainting
with gr.Tab ("Inpainting"):
with gr.Row():
with gr.Column():
image = gr.ImageMask(sources=["upload"], layers=False, transforms=[], format="png", label="base image", show_label=True)
btn = gr.Button("Inpaint!", elem_id="run_button")
prompt = gr.Textbox(placeholder="Your prompt (what you want in place of what is erased)", show_label=False, elem_id="prompt")
negative_prompt = gr.Textbox(label="negative_prompt", placeholder="Your negative prompt", info="what you don't want to see in the image")
guidance_scale = gr.Number(value=7.5, minimum=1.0, maximum=20.0, step=0.1, label="guidance_scale")
steps = gr.Number(value=20, minimum=10, maximum=30, step=1, label="steps")
strength = gr.Number(value=0.99, minimum=0.01, maximum=1.0, step=0.01, label="strength")
scheduler = gr.Dropdown(label="Schedulers", choices=schedulers, value="EulerDiscreteScheduler")
with gr.Column():
image_out = gr.Image(label="Output", elem_id="output-img")
btn.click(fn=intpaint_func, inputs=[image, prompt, negative_prompt, guidance_scale, steps, strength, scheduler], outputs=[image_out])
# Tab untuk Describe
with gr.Tab("Describe"):
with gr.Row():
with gr.Column():
# Components
image = gr.Image(type="pil", image_mode="RGBA", label="Input")
submit_button = gr.Button(value="Submit", variant="primary", size="lg")
model_repo = gr.Dropdown(modules.wdtagger.dropdown_list, value=modules.wdtagger.dropdown_list[0], label="Model")
general_thresh = gr.Slider(0, 1, step=modules.wdtagger.args.score_slider_step, value=modules.wdtagger.args.score_general_threshold, label="General Tags Threshold", scale=3)
general_mcut_enabled = gr.Checkbox(value=False, label="Use MCut threshold", scale=1)
character_thresh = gr.Slider(0, 1, step=modules.wdtagger.args.score_slider_step, value=modules.wdtagger.args.score_character_threshold, label="Character Tags Threshold", scale=3)
character_mcut_enabled = gr.Checkbox(value=False, label="Use MCut threshold", scale=1)
clear_button = gr.ClearButton(components=[image, model_repo, general_thresh, general_mcut_enabled, character_thresh, character_mcut_enabled], variant="secondary", size="lg")
with gr.Column():
sorted_general_strings = gr.Textbox(label="Output (string)")
rating = gr.Label(label="Rating")
character_res = gr.Label(label="Output (characters)")
general_res = gr.Label(label="Output (tags)")
clear_button.add([sorted_general_strings, rating, character_res, general_res])
submit_button.click(modules.wdtagger.predictor.predict, inputs=[image, model_repo, general_thresh, general_mcut_enabled, character_thresh, character_mcut_enabled], outputs=[sorted_general_strings, rating, character_res, general_res])
# Jalankan antarmuka
app.launch() |