Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -22,11 +22,11 @@ cancel_txt2img = False
|
|
| 22 |
cancel_img2img = False
|
| 23 |
|
| 24 |
def interrupt_callback(pipe, step, timestep, callback_kwargs):
|
| 25 |
-
"""Callback für Diffusers: Prüft Flag und
|
| 26 |
global cancel_txt2img, cancel_img2img
|
| 27 |
if (pipe == pipe_txt2img and cancel_txt2img) or (pipe == pipe_img2img and cancel_img2img):
|
| 28 |
-
pipe._interrupt = True # Stoppt die Pipeline
|
| 29 |
print(f"🛑 Interrupt ausgelöst für Pipeline (Step: {step})")
|
|
|
|
| 30 |
return callback_kwargs
|
| 31 |
|
| 32 |
# === GESICHTSMASKEN-FUNKTIONEN ===
|
|
@@ -130,7 +130,7 @@ def text_to_image(prompt, steps, guidance_scale):
|
|
| 130 |
if current_txt2img_task_id is not None:
|
| 131 |
print(f"🛑 Cancel vorheriger Text-to-Image Task (ID: {current_txt2img_task_id})")
|
| 132 |
cancel_txt2img = True
|
| 133 |
-
time.sleep(0
|
| 134 |
|
| 135 |
current_txt2img_task_id = task_id
|
| 136 |
cancel_txt2img = False
|
|
@@ -160,7 +160,7 @@ def text_to_image(prompt, steps, guidance_scale):
|
|
| 160 |
|
| 161 |
return image
|
| 162 |
|
| 163 |
-
except
|
| 164 |
if "interrupt" in str(e).lower():
|
| 165 |
print(f"🛑 Generierung unterbrochen (Task ID: {task_id})")
|
| 166 |
current_txt2img_task_id = None
|
|
@@ -170,6 +170,12 @@ def text_to_image(prompt, steps, guidance_scale):
|
|
| 170 |
traceback.print_exc()
|
| 171 |
current_txt2img_task_id = None
|
| 172 |
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
|
| 174 |
def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, face_preserve, bbox_x1, bbox_y1, bbox_x2, bbox_y2):
|
| 175 |
global current_img2img_task_id, cancel_img2img
|
|
@@ -182,7 +188,7 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
|
|
| 182 |
if current_img2img_task_id is not None:
|
| 183 |
print(f"🛑 Cancel vorheriger Image-to-Image Task (ID: {current_img2img_task_id})")
|
| 184 |
cancel_img2img = True
|
| 185 |
-
time.sleep(0
|
| 186 |
|
| 187 |
current_img2img_task_id = task_id
|
| 188 |
cancel_img2img = False
|
|
@@ -263,7 +269,7 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
|
|
| 263 |
|
| 264 |
return saved_image
|
| 265 |
|
| 266 |
-
except
|
| 267 |
if "interrupt" in str(e).lower():
|
| 268 |
print(f"🛑 Generierung unterbrochen (Task ID: {task_id})")
|
| 269 |
current_img2img_task_id = None
|
|
@@ -273,6 +279,12 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
|
|
| 273 |
traceback.print_exc()
|
| 274 |
current_img2img_task_id = None
|
| 275 |
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
|
| 277 |
def update_bbox_from_image(image):
|
| 278 |
"""Aktualisiert die Bounding-Box-Koordinaten wenn ein Bild hochgeladen wird"""
|
|
|
|
| 22 |
cancel_img2img = False
|
| 23 |
|
| 24 |
def interrupt_callback(pipe, step, timestep, callback_kwargs):
|
| 25 |
+
"""Callback für Diffusers: Prüft Flag und löst Exception für Interrupt aus"""
|
| 26 |
global cancel_txt2img, cancel_img2img
|
| 27 |
if (pipe == pipe_txt2img and cancel_txt2img) or (pipe == pipe_img2img and cancel_img2img):
|
|
|
|
| 28 |
print(f"🛑 Interrupt ausgelöst für Pipeline (Step: {step})")
|
| 29 |
+
raise RuntimeError("Task interrupted by user")
|
| 30 |
return callback_kwargs
|
| 31 |
|
| 32 |
# === GESICHTSMASKEN-FUNKTIONEN ===
|
|
|
|
| 130 |
if current_txt2img_task_id is not None:
|
| 131 |
print(f"🛑 Cancel vorheriger Text-to-Image Task (ID: {current_txt2img_task_id})")
|
| 132 |
cancel_txt2img = True
|
| 133 |
+
time.sleep(1.0) # Längere Pause für CPU
|
| 134 |
|
| 135 |
current_txt2img_task_id = task_id
|
| 136 |
cancel_txt2img = False
|
|
|
|
| 160 |
|
| 161 |
return image
|
| 162 |
|
| 163 |
+
except RuntimeError as e:
|
| 164 |
if "interrupt" in str(e).lower():
|
| 165 |
print(f"🛑 Generierung unterbrochen (Task ID: {task_id})")
|
| 166 |
current_txt2img_task_id = None
|
|
|
|
| 170 |
traceback.print_exc()
|
| 171 |
current_txt2img_task_id = None
|
| 172 |
return None
|
| 173 |
+
except Exception as e:
|
| 174 |
+
print(f"❌ Fehler: {e}")
|
| 175 |
+
import traceback
|
| 176 |
+
traceback.print_exc()
|
| 177 |
+
current_txt2img_task_id = None
|
| 178 |
+
return None
|
| 179 |
|
| 180 |
def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, face_preserve, bbox_x1, bbox_y1, bbox_x2, bbox_y2):
|
| 181 |
global current_img2img_task_id, cancel_img2img
|
|
|
|
| 188 |
if current_img2img_task_id is not None:
|
| 189 |
print(f"🛑 Cancel vorheriger Image-to-Image Task (ID: {current_img2img_task_id})")
|
| 190 |
cancel_img2img = True
|
| 191 |
+
time.sleep(1.0) # Längere Pause für CPU
|
| 192 |
|
| 193 |
current_img2img_task_id = task_id
|
| 194 |
cancel_img2img = False
|
|
|
|
| 269 |
|
| 270 |
return saved_image
|
| 271 |
|
| 272 |
+
except RuntimeError as e:
|
| 273 |
if "interrupt" in str(e).lower():
|
| 274 |
print(f"🛑 Generierung unterbrochen (Task ID: {task_id})")
|
| 275 |
current_img2img_task_id = None
|
|
|
|
| 279 |
traceback.print_exc()
|
| 280 |
current_img2img_task_id = None
|
| 281 |
return None
|
| 282 |
+
except Exception as e:
|
| 283 |
+
print(f"❌ Fehler: {e}")
|
| 284 |
+
import traceback
|
| 285 |
+
traceback.print_exc()
|
| 286 |
+
current_img2img_task_id = None
|
| 287 |
+
return None
|
| 288 |
|
| 289 |
def update_bbox_from_image(image):
|
| 290 |
"""Aktualisiert die Bounding-Box-Koordinaten wenn ein Bild hochgeladen wird"""
|