[SD] Add sendTo feature in stable diffusion (#1131)

Signed-off-by: Gaurav Shukla <gaurav@nod-labs.com>
This commit is contained in:
Gaurav Shukla
2023-03-02 22:12:38 +05:30
committed by GitHub
parent de59a66ae4
commit 911dff16f1
10 changed files with 158 additions and 32 deletions

View File

@@ -220,7 +220,7 @@ def img2img_inf(
text_output += img2img_obj.log
text_output += f"\nTotal image generation time: {total_time:.4f}sec"
return generated_imgs, text_output
return generated_imgs, generated_imgs[0], text_output
if __name__ == "__main__":

View File

@@ -175,7 +175,7 @@ def inpaint_inf(
text_output += inpaint_obj.log
text_output += f"\nTotal image generation time: {total_time:.4f}sec"
return generated_imgs, text_output
return generated_imgs, generated_imgs[0], text_output
if __name__ == "__main__":

View File

@@ -190,7 +190,7 @@ def outpaint_inf(
text_output += outpaint_obj.log
text_output += f"\nTotal image generation time: {total_time:.4f}sec"
return generated_imgs, text_output
return generated_imgs, generated_imgs[0], text_output
if __name__ == "__main__":

View File

@@ -158,7 +158,7 @@ def txt2img_inf(
generated_imgs.extend(out_imgs)
seeds.append(img_seed)
txt2img_obj.log += "\n"
yield generated_imgs, txt2img_obj.log
yield generated_imgs, generated_imgs[0], txt2img_obj.log
total_time = time.time() - start_time
text_output = f"prompt={args.prompts}"
@@ -172,7 +172,7 @@ def txt2img_inf(
# text_output += txt2img_obj.log
text_output += f"\nTotal image generation time: {total_time:.4f}sec"
yield generated_imgs, text_output
yield generated_imgs, generated_imgs[0], text_output
if __name__ == "__main__":

View File

@@ -29,16 +29,83 @@ dark_theme = resource_path("ui/css/sd_dark_theme.css")
from apps.stable_diffusion.web.ui import (
txt2img_web,
txt2img_output,
txt2img_sendto_img2img,
txt2img_sendto_inpaint,
txt2img_sendto_outpaint,
img2img_web,
img2img_output,
img2img_init_image,
img2img_sendto_inpaint,
img2img_sendto_outpaint,
inpaint_web,
inpaint_output,
inpaint_init_image,
inpaint_sendto_img2img,
inpaint_sendto_outpaint,
outpaint_web,
outpaint_output,
outpaint_init_image,
outpaint_sendto_img2img,
outpaint_sendto_inpaint,
)
sd_web = gr.TabbedInterface(
[txt2img_web, img2img_web, inpaint_web, outpaint_web],
["Text-to-Image", "Image-to-Image", "Inpainting", "Outpainting"],
css=dark_theme,
)
def register_button_click(button, selectedid, inputs, outputs):
button.click(
lambda x: (
x,
gr.Tabs.update(selected=selectedid),
),
inputs,
outputs,
)
with gr.Blocks(
css=dark_theme, analytics_enabled=False, title="Stable Diffusion"
) as sd_web:
with gr.Tabs() as tabs:
with gr.TabItem(label="Text-to-Image", id=0):
txt2img_web.render()
with gr.TabItem(label="Image-to-Image", id=1):
img2img_web.render()
with gr.TabItem(label="Inpainting", id=2):
inpaint_web.render()
with gr.TabItem(label="Outpainting", id=3):
outpaint_web.render()
register_button_click(
txt2img_sendto_img2img,
1,
[txt2img_output],
[img2img_init_image, tabs],
)
register_button_click(
txt2img_sendto_inpaint,
2,
[txt2img_output],
[inpaint_init_image, tabs],
)
register_button_click(
txt2img_sendto_outpaint,
3,
[txt2img_output],
[outpaint_init_image, tabs],
)
register_button_click(
img2img_sendto_inpaint,
2,
[txt2img_output],
[inpaint_init_image, tabs],
)
register_button_click(
img2img_sendto_outpaint,
3,
[txt2img_output],
[outpaint_init_image, tabs],
)
sd_web.queue()
sd_web.launch(

View File

@@ -1,4 +1,28 @@
from apps.stable_diffusion.web.ui.txt2img_ui import txt2img_web
from apps.stable_diffusion.web.ui.img2img_ui import img2img_web
from apps.stable_diffusion.web.ui.inpaint_ui import inpaint_web
from apps.stable_diffusion.web.ui.outpaint_ui import outpaint_web
from apps.stable_diffusion.web.ui.txt2img_ui import (
txt2img_web,
txt2img_output,
txt2img_sendto_img2img,
txt2img_sendto_inpaint,
txt2img_sendto_outpaint,
)
from apps.stable_diffusion.web.ui.img2img_ui import (
img2img_web,
img2img_output,
img2img_init_image,
img2img_sendto_inpaint,
img2img_sendto_outpaint,
)
from apps.stable_diffusion.web.ui.inpaint_ui import (
inpaint_web,
inpaint_output,
inpaint_init_image,
inpaint_sendto_img2img,
inpaint_sendto_outpaint,
)
from apps.stable_diffusion.web.ui.outpaint_ui import (
outpaint_web,
outpaint_output,
outpaint_init_image,
outpaint_sendto_img2img,
outpaint_sendto_inpaint,
)

View File

@@ -75,9 +75,9 @@ with gr.Blocks(title="Image-to-Image") as img2img_web:
elem_id="negative_prompt_box",
)
init_image = gr.Image(label="Input Image", type="pil").style(
height=300
)
img2img_init_image = gr.Image(
label="Input Image", type="pil"
).style(height=300)
with gr.Accordion(label="Stencil Options", open=False):
with gr.Row():
@@ -191,11 +191,14 @@ with gr.Blocks(title="Image-to-Image") as img2img_web:
with gr.Column(scale=1, min_width=600):
with gr.Group():
gallery = gr.Gallery(
img2img_gallery = gr.Gallery(
label="Generated images",
show_label=False,
elem_id="gallery",
).style(grid=[2])
img2img_output = gr.Image(
visible=False,
)
std_output = gr.Textbox(
value="Nothing to show.",
lines=1,
@@ -208,12 +211,18 @@ with gr.Blocks(title="Image-to-Image") as img2img_web:
value=output_dir,
interactive=False,
)
with gr.Row():
img2img_sendto_inpaint = gr.Button(value="SendTo Inpaint")
img2img_sendto_outpaint = gr.Button(
value="SendTo Outpaint"
)
kwargs = dict(
fn=img2img_inf,
inputs=[
prompt,
negative_prompt,
init_image,
img2img_init_image,
height,
width,
steps,
@@ -232,7 +241,7 @@ with gr.Blocks(title="Image-to-Image") as img2img_web:
save_metadata_to_json,
save_metadata_to_png,
],
outputs=[gallery, std_output],
outputs=[img2img_gallery, img2img_output, std_output],
show_progress=args.progress_bar,
)

View File

@@ -71,7 +71,7 @@ with gr.Blocks(title="Inpainting") as inpaint_web:
elem_id="negative_prompt_box",
)
init_image = gr.Image(
inpaint_init_image = gr.Image(
label="Masked Image",
source="upload",
tool="sketch",
@@ -176,11 +176,14 @@ with gr.Blocks(title="Inpainting") as inpaint_web:
with gr.Column(scale=1, min_width=600):
with gr.Group():
gallery = gr.Gallery(
inpaint_gallery = gr.Gallery(
label="Generated images",
show_label=False,
elem_id="gallery",
).style(grid=[2])
inpaint_output = gr.Image(
visible=False,
)
std_output = gr.Textbox(
value="Nothing to show.",
lines=1,
@@ -193,12 +196,18 @@ with gr.Blocks(title="Inpainting") as inpaint_web:
value=output_dir,
interactive=False,
)
with gr.Row():
inpaint_sendto_img2img = gr.Button(value="SendTo Img2Img")
inpaint_sendto_outpaint = gr.Button(
value="SendTo Outpaint"
)
kwargs = dict(
fn=inpaint_inf,
inputs=[
prompt,
negative_prompt,
init_image,
inpaint_init_image,
height,
width,
steps,
@@ -215,7 +224,7 @@ with gr.Blocks(title="Inpainting") as inpaint_web:
save_metadata_to_json,
save_metadata_to_png,
],
outputs=[gallery, std_output],
outputs=[inpaint_gallery, inpaint_output, std_output],
show_progress=args.progress_bar,
)

View File

@@ -71,9 +71,9 @@ with gr.Blocks(title="Outpainting") as outpaint_web:
elem_id="negative_prompt_box",
)
init_image = gr.Image(label="Input Image", type="pil").style(
height=300
)
outpaint_init_image = gr.Image(
label="Input Image", type="pil"
).style(height=300)
with gr.Accordion(label="Advanced Options", open=False):
with gr.Row():
@@ -209,11 +209,14 @@ with gr.Blocks(title="Outpainting") as outpaint_web:
with gr.Column(scale=1, min_width=600):
with gr.Group():
gallery = gr.Gallery(
outpaint_gallery = gr.Gallery(
label="Generated images",
show_label=False,
elem_id="gallery",
).style(grid=[2])
outpaint_output = gr.Image(
visible=False,
)
std_output = gr.Textbox(
value="Nothing to show.",
lines=1,
@@ -226,12 +229,16 @@ with gr.Blocks(title="Outpainting") as outpaint_web:
value=output_dir,
interactive=False,
)
with gr.Row():
outpaint_sendto_img2img = gr.Button(value="SendTo Img2Img")
outpaint_sendto_inpaint = gr.Button(value="SendTo Inpaint")
kwargs = dict(
fn=outpaint_inf,
inputs=[
prompt,
negative_prompt,
init_image,
outpaint_init_image,
pixels,
mask_blur,
directions,
@@ -253,7 +260,7 @@ with gr.Blocks(title="Outpainting") as outpaint_web:
save_metadata_to_json,
save_metadata_to_png,
],
outputs=[gallery, std_output],
outputs=[outpaint_gallery, outpaint_output, std_output],
show_progress=args.progress_bar,
)

View File

@@ -182,11 +182,14 @@ with gr.Blocks(title="Text-to-Image") as txt2img_web:
with gr.Column(scale=1, min_width=600):
with gr.Group():
gallery = gr.Gallery(
txt2img_gallery = gr.Gallery(
label="Generated images",
show_label=False,
elem_id="gallery",
).style(grid=[2])
txt2img_output = gr.Image(
visible=False,
)
std_output = gr.Textbox(
value="Nothing to show.",
lines=1,
@@ -199,6 +202,13 @@ with gr.Blocks(title="Text-to-Image") as txt2img_web:
value=output_dir,
interactive=False,
)
with gr.Row():
txt2img_sendto_img2img = gr.Button(value="SendTo Img2Img")
txt2img_sendto_inpaint = gr.Button(value="SendTo Inpaint")
txt2img_sendto_outpaint = gr.Button(
value="SendTo Outpaint"
)
kwargs = dict(
fn=txt2img_inf,
inputs=[
@@ -220,7 +230,7 @@ with gr.Blocks(title="Text-to-Image") as txt2img_web:
save_metadata_to_json,
save_metadata_to_png,
],
outputs=[gallery, std_output],
outputs=[txt2img_gallery, txt2img_output, std_output],
show_progress=args.progress_bar,
)