Spaces:
Runtime error
Runtime error
VikramSingh178
commited on
Commit
β’
6b857b8
1
Parent(s):
da7cb1d
chore: Resize base image and mask in generate_outpainting function
Browse files- ui/__init__.py +0 -0
- ui/ui.py +23 -8
- ui/utils.py +0 -27
ui/__init__.py
ADDED
File without changes
|
ui/ui.py
CHANGED
@@ -64,19 +64,23 @@ def process_masked_image(img):
|
|
64 |
|
65 |
return base_image, mask
|
66 |
|
67 |
-
def generate_outpainting(prompt, negative_prompt, num_inference_steps, strength, guidance_scale, mode, num_images, masked_image):
|
68 |
base_image, mask = process_masked_image(masked_image)
|
69 |
|
70 |
if base_image is None or mask is None:
|
71 |
return None, None
|
72 |
|
73 |
-
#
|
|
|
|
|
|
|
|
|
74 |
img_byte_arr = BytesIO()
|
75 |
-
|
76 |
img_byte_arr = img_byte_arr.getvalue()
|
77 |
|
78 |
mask_byte_arr = BytesIO()
|
79 |
-
|
80 |
mask_byte_arr = mask_byte_arr.getvalue()
|
81 |
|
82 |
# Prepare the files for multipart/form-data
|
@@ -110,7 +114,7 @@ def generate_outpainting(prompt, negative_prompt, num_inference_steps, strength,
|
|
110 |
response_data = response.json()
|
111 |
url = response_data['url']
|
112 |
outpainted_image = load_image(url)
|
113 |
-
return
|
114 |
except requests.exceptions.RequestException as e:
|
115 |
print(f"Error in Kandinsky Inpainting API request: {e}")
|
116 |
return None, None
|
@@ -121,6 +125,13 @@ def generate_mask_preview(img):
|
|
121 |
return None
|
122 |
return mask
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
with gr.Blocks(theme='VikramSingh178/Webui-Theme') as demo:
|
125 |
with gr.Tab("SdxL-Lora"):
|
126 |
with gr.Row():
|
@@ -151,15 +162,19 @@ with gr.Blocks(theme='VikramSingh178/Webui-Theme') as demo:
|
|
151 |
guidance_scale = gr.Slider(minimum=1.0, maximum=10.0, step=0.1, value=7.5, label="Guidance Scale")
|
152 |
num_images= gr.Slider(minimum=1, maximum=10, step=1, value=1, label="Number of Images")
|
153 |
mode_kandinsky = gr.Dropdown(choices=["s3_json", "b64_json"], value="s3_json", label="Mode")
|
|
|
|
|
|
|
154 |
generate_button = gr.Button("Generate Inpainting", variant='primary')
|
155 |
-
generate_mask_button_painting = gr.Button("Generate Mask", variant='
|
156 |
|
157 |
with gr.Column(scale=1):
|
158 |
mask_preview= gr.Image(label="Mask Preview", show_download_button=True, container=True)
|
159 |
outpainted_image_preview = gr.Image(label="Outpainted Image (Kandinsky)", show_download_button=True, show_share_button=True, container=True)
|
|
|
160 |
generate_mask_button_painting.click(generate_mask_preview, inputs=masked_image, outputs=[mask_preview])
|
161 |
generate_button.click(generate_outpainting,
|
162 |
-
|
163 |
-
|
164 |
|
165 |
demo.launch()
|
|
|
64 |
|
65 |
return base_image, mask
|
66 |
|
67 |
+
def generate_outpainting(prompt, negative_prompt, num_inference_steps, strength, guidance_scale, mode, num_images, masked_image, width, height):
|
68 |
base_image, mask = process_masked_image(masked_image)
|
69 |
|
70 |
if base_image is None or mask is None:
|
71 |
return None, None
|
72 |
|
73 |
+
# Resize base image and mask
|
74 |
+
base_image_resized = base_image.resize((width, height))
|
75 |
+
mask_resized = mask.resize((width, height))
|
76 |
+
|
77 |
+
# Convert the resized images to bytes
|
78 |
img_byte_arr = BytesIO()
|
79 |
+
base_image_resized.save(img_byte_arr, format='PNG')
|
80 |
img_byte_arr = img_byte_arr.getvalue()
|
81 |
|
82 |
mask_byte_arr = BytesIO()
|
83 |
+
mask_resized.save(mask_byte_arr, format='PNG')
|
84 |
mask_byte_arr = mask_byte_arr.getvalue()
|
85 |
|
86 |
# Prepare the files for multipart/form-data
|
|
|
114 |
response_data = response.json()
|
115 |
url = response_data['url']
|
116 |
outpainted_image = load_image(url)
|
117 |
+
return mask_resized, outpainted_image
|
118 |
except requests.exceptions.RequestException as e:
|
119 |
print(f"Error in Kandinsky Inpainting API request: {e}")
|
120 |
return None, None
|
|
|
125 |
return None
|
126 |
return mask
|
127 |
|
128 |
+
def resize_image(img, width, height):
|
129 |
+
if img is None:
|
130 |
+
return None
|
131 |
+
resized_img = img.resize((width, height))
|
132 |
+
return resized_img
|
133 |
+
|
134 |
+
# Gradio interface setup
|
135 |
with gr.Blocks(theme='VikramSingh178/Webui-Theme') as demo:
|
136 |
with gr.Tab("SdxL-Lora"):
|
137 |
with gr.Row():
|
|
|
162 |
guidance_scale = gr.Slider(minimum=1.0, maximum=10.0, step=0.1, value=7.5, label="Guidance Scale")
|
163 |
num_images= gr.Slider(minimum=1, maximum=10, step=1, value=1, label="Number of Images")
|
164 |
mode_kandinsky = gr.Dropdown(choices=["s3_json", "b64_json"], value="s3_json", label="Mode")
|
165 |
+
width_slider = gr.Slider(minimum=512, maximum=1024, step=1, value=800, label="Image Width")
|
166 |
+
height_slider = gr.Slider(minimum=512, maximum=1024, step=1, value=800, label="Image Height")
|
167 |
+
resize_button = gr.Button("Resize Image", variant='secondary')
|
168 |
generate_button = gr.Button("Generate Inpainting", variant='primary')
|
169 |
+
generate_mask_button_painting = gr.Button("Generate Mask", variant='primary')
|
170 |
|
171 |
with gr.Column(scale=1):
|
172 |
mask_preview= gr.Image(label="Mask Preview", show_download_button=True, container=True)
|
173 |
outpainted_image_preview = gr.Image(label="Outpainted Image (Kandinsky)", show_download_button=True, show_share_button=True, container=True)
|
174 |
+
resize_button.click(resize_image, inputs=[masked_image, width_slider, height_slider], outputs=[masked_image])
|
175 |
generate_mask_button_painting.click(generate_mask_preview, inputs=masked_image, outputs=[mask_preview])
|
176 |
generate_button.click(generate_outpainting,
|
177 |
+
inputs=[prompt, negative_prompt, num_inference_steps, strength, guidance_scale, mode_kandinsky, num_images, masked_image, width_slider, height_slider],
|
178 |
+
outputs=[mask_preview, outpainted_image_preview])
|
179 |
|
180 |
demo.launch()
|
ui/utils.py
DELETED
@@ -1,27 +0,0 @@
|
|
1 |
-
from scripts.api_utils import ImageAugmentation
|
2 |
-
from PIL import Image
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
def augment_image(image_path, target_width, target_height, roi_scale, segmentation_model_name, detection_model_name):
|
8 |
-
"""
|
9 |
-
Augment an image by extending its dimensions and generating masks.
|
10 |
-
|
11 |
-
Args:
|
12 |
-
image_path (str): Path to the image file.
|
13 |
-
target_width (int): Target width for augmentation.
|
14 |
-
target_height (int): Target height for augmentation.
|
15 |
-
roi_scale (float): Scale factor for region of interest.
|
16 |
-
segmentation_model_name (str): Name of the segmentation model.
|
17 |
-
detection_model_name (str): Name of the detection model.
|
18 |
-
|
19 |
-
Returns:
|
20 |
-
Tuple[Image.Image, Image.Image]: Augmented image and inverted mask.
|
21 |
-
"""
|
22 |
-
image = Image.open(image_path)
|
23 |
-
image_augmentation = ImageAugmentation(target_width, target_height, roi_scale)
|
24 |
-
image = image_augmentation.extend_image(image)
|
25 |
-
mask = image_augmentation.generate_mask_from_bbox(image, segmentation_model_name, detection_model_name)
|
26 |
-
inverted_mask = image_augmentation.invert_mask(mask)
|
27 |
-
return image, inverted_mask
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|