Skip to content

Commit 83a9da8

Browse files
committed
Added SDXL image variations support
1 parent eccf1fd commit 83a9da8

6 files changed

Lines changed: 154 additions & 3 deletions

File tree

Readme.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ DiffusionMagic focused on the following areas:
1111
We can run StableDiffusion XL 1.0 on Google Colab
1212
[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1eEZ_O-Fw87hoEsfSxUnGZhdqvMFEO5iV?usp=sharing)
1313

14-
![ DiffusionMagic](https://raw.githubusercontent.com/rupeshs/diffusionmagic/main/docs/images/diffusion_magic.PNG)
1514
## Features
15+
- Supports Stable diffusion XL
1616
- Supports various Stable Diffusion workflows
17-
- Stable diffusion XL
1817
- Text to Image
1918
- Image to Image
2019
- Image variations
@@ -101,7 +100,7 @@ Follow the steps to install and run the Diffusion magic on Mac (Apple Silicon M1
101100
To get dark theme :
102101

103102
`http://localhost:7860/?__theme=dark`
104-
103+
105104
## How to switch models
106105
Diffusion magic will change UI based on the model selected.
107106
Follow the steps to switch the models() inpainting,depth to image or instruct pix to pix or any other hugging face stable diffusion model)
589 KB
Loading
1.3 MB
Loading

src/backend/generate.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,3 +441,41 @@ def diffusion_image_to_image_xl(
441441
"ImageToImage",
442442
)
443443
return images
444+
445+
def diffusion_image_variations_xl(
446+
self,
447+
image,
448+
strength,
449+
image_height,
450+
image_width,
451+
inference_steps,
452+
scheduler,
453+
guidance_scale,
454+
num_images,
455+
attention_slicing,
456+
seed,
457+
) -> Any:
458+
stable_diffusion_image_settings = StableDiffusionImageToImageSetting(
459+
image=image,
460+
strength=strength,
461+
prompt="",
462+
negative_prompt="bad, deformed, ugly, bad anatomy",
463+
image_height=image_height,
464+
image_width=image_width,
465+
inference_steps=inference_steps,
466+
guidance_scale=guidance_scale,
467+
number_of_images=num_images,
468+
scheduler=scheduler,
469+
seed=seed,
470+
attention_slicing=attention_slicing,
471+
)
472+
self._init_stable_diffusion_xl()
473+
images = self.stable_diffusion_xl.image_to_image(
474+
stable_diffusion_image_settings
475+
)
476+
477+
self._save_images(
478+
images,
479+
"ImageVariations",
480+
)
481+
return images
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
from typing import Any
2+
3+
import gradio as gr
4+
5+
from backend.stablediffusion.models.scheduler_types import (
6+
SchedulerType,
7+
get_sampler_names,
8+
)
9+
10+
random_enabled = True
11+
12+
13+
def get_image_variations_xl_ui(generate_callback_fn: Any) -> None:
14+
with gr.Blocks():
15+
with gr.Row():
16+
with gr.Column():
17+
18+
def random_seed():
19+
global random_enabled
20+
random_enabled = not random_enabled
21+
seed_val = -1
22+
if not random_enabled:
23+
seed_val = 42
24+
25+
return gr.Number.update(
26+
interactive=not random_enabled, value=seed_val
27+
)
28+
29+
input_image = gr.Image(label="Input image", type="pil")
30+
strength = gr.Slider(
31+
0.0,
32+
1.0,
33+
value=0.8,
34+
step=0.05,
35+
label="Variation Strength",
36+
)
37+
with gr.Accordion("Advanced options", open=False):
38+
image_height = gr.Slider(
39+
768, 2048, value=1024, step=64, label="Image Height"
40+
)
41+
image_width = gr.Slider(
42+
768, 2048, value=1024, step=64, label="Image Width"
43+
)
44+
num_inference_steps = gr.Slider(
45+
1, 100, value=20, step=1, label="Inference Steps"
46+
)
47+
scheduler = gr.Dropdown(
48+
get_sampler_names(),
49+
value=SchedulerType.UniPCMultistepScheduler.value,
50+
label="Sampler",
51+
)
52+
guidance_scale = gr.Slider(
53+
1.0,
54+
30.0,
55+
value=7.5,
56+
step=0.5,
57+
label="Guidance Scale",
58+
)
59+
num_images = gr.Slider(
60+
1,
61+
50,
62+
value=2,
63+
step=1,
64+
label="Number of images to generate",
65+
)
66+
attn_slicing = gr.Checkbox(
67+
label="Attention slicing (Enable if low VRAM)",
68+
value=True,
69+
)
70+
seed = gr.Number(
71+
label="Seed",
72+
value=-1,
73+
precision=0,
74+
interactive=False,
75+
)
76+
seed_checkbox = gr.Checkbox(
77+
label="Use random seed",
78+
value=True,
79+
interactive=True,
80+
)
81+
82+
input_params = [
83+
input_image,
84+
strength,
85+
image_height,
86+
image_width,
87+
num_inference_steps,
88+
scheduler,
89+
guidance_scale,
90+
num_images,
91+
attn_slicing,
92+
seed,
93+
]
94+
95+
with gr.Column():
96+
generate_btn = gr.Button("Generate", elem_id="generate_button")
97+
output = gr.Gallery(
98+
label="Generated images",
99+
show_label=True,
100+
elem_id="gallery",
101+
).style(
102+
columns=2,
103+
)
104+
generate_btn.click(
105+
fn=generate_callback_fn,
106+
inputs=input_params,
107+
outputs=output,
108+
)
109+
seed_checkbox.change(fn=random_seed, outputs=seed)

src/frontend/web/ui.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from frontend.web.text_to_image_ui import get_text_to_image_ui
1515
from frontend.web.text_to_image_xl_ui import get_text_to_image_xl_ui
1616
from frontend.web.image_to_image_xl_ui import get_image_to_image_xl_ui
17+
from frontend.web.image_variations_xl_ui import get_image_variations_xl_ui
1718
from frontend.web.controlnet.controlnet_image_ui import get_controlnet_to_image_ui
1819
from settings import AppSettings
1920
from utils import DiffusionMagicPaths
@@ -83,6 +84,10 @@ def diffusionmagic_web_ui(generate: Generate) -> gr.Blocks:
8384
get_text_to_image_xl_ui(generate.diffusion_text_to_image_xl)
8485
with gr.TabItem("Image to Image SDXL"):
8586
get_image_to_image_xl_ui(generate.diffusion_image_to_image_xl)
87+
with gr.TabItem("Image Variations SDXL"):
88+
get_image_variations_xl_ui(generate.diffusion_image_variations_xl)
89+
elif stable_diffusion_type == StableDiffusionType.inpainting:
90+
get_image_variations_xl_ui
8691
with gr.TabItem("Settings"):
8792
get_settings_ui()
8893

0 commit comments

Comments
 (0)