Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -217,6 +217,62 @@ def fill_image(prompt, image, model_selection):
|
|
217 |
def clear_result():
|
218 |
return gr.update(value=None)
|
219 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
#--------------- ์ด๋ฏธ์ง ์ธํ์ธํ
๋ ----------------
|
221 |
|
222 |
class timer:
|
|
|
217 |
def clear_result():
|
218 |
return gr.update(value=None)
|
219 |
|
220 |
+
def process_inpainting(image, mask_input, prompt):
|
221 |
+
"""์ด๋ฏธ์ง ์ธํ์ธํ
์ฒ๋ฆฌ ํจ์"""
|
222 |
+
try:
|
223 |
+
if image is None or mask_input is None or not prompt:
|
224 |
+
raise gr.Error("Please provide image, mask, and prompt")
|
225 |
+
|
226 |
+
# ํ๋กฌํํธ ๋ฒ์ญ (ํ๊ธ์ธ ๊ฒฝ์ฐ)
|
227 |
+
translated_prompt = translate_if_korean(prompt)
|
228 |
+
|
229 |
+
# ๋ง์คํฌ ์ฒ๋ฆฌ
|
230 |
+
source = image
|
231 |
+
if isinstance(mask_input, dict):
|
232 |
+
mask = mask_input["layers"][0]
|
233 |
+
alpha_channel = mask.split()[3]
|
234 |
+
binary_mask = alpha_channel.point(lambda p: p > 0 and 255)
|
235 |
+
else:
|
236 |
+
raise gr.Error("Invalid mask input")
|
237 |
+
|
238 |
+
# ์ธํ์ธํ
์ ์ํ ์ด๋ฏธ์ง ์ค๋น
|
239 |
+
cnet_image = source.copy()
|
240 |
+
cnet_image.paste(0, (0, 0), binary_mask)
|
241 |
+
|
242 |
+
# ํ๋กฌํํธ ์๋ฒ ๋ฉ
|
243 |
+
(
|
244 |
+
prompt_embeds,
|
245 |
+
negative_prompt_embeds,
|
246 |
+
pooled_prompt_embeds,
|
247 |
+
negative_pooled_prompt_embeds,
|
248 |
+
) = pipe.encode_prompt(translated_prompt, "cuda", True)
|
249 |
+
|
250 |
+
# ์ธํ์ธํ
์คํ
|
251 |
+
result = None
|
252 |
+
for image in pipe(
|
253 |
+
prompt_embeds=prompt_embeds,
|
254 |
+
negative_prompt_embeds=negative_prompt_embeds,
|
255 |
+
pooled_prompt_embeds=pooled_prompt_embeds,
|
256 |
+
negative_pooled_prompt_embeds=negative_pooled_prompt_embeds,
|
257 |
+
image=cnet_image,
|
258 |
+
):
|
259 |
+
result = image
|
260 |
+
|
261 |
+
if result is None:
|
262 |
+
raise gr.Error("Inpainting failed")
|
263 |
+
|
264 |
+
# ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ์ฒ๋ฆฌ
|
265 |
+
result = result.convert("RGBA")
|
266 |
+
cnet_image.paste(result, (0, 0), binary_mask)
|
267 |
+
|
268 |
+
return cnet_image
|
269 |
+
|
270 |
+
except Exception as e:
|
271 |
+
print(f"Inpainting error: {str(e)}")
|
272 |
+
raise gr.Error(f"Inpainting failed: {str(e)}")
|
273 |
+
finally:
|
274 |
+
clear_memory()
|
275 |
+
|
276 |
#--------------- ์ด๋ฏธ์ง ์ธํ์ธํ
๋ ----------------
|
277 |
|
278 |
class timer:
|