Astridkraft commited on
Commit
edf1b1a
·
verified ·
1 Parent(s): 064ce19

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -15
app.py CHANGED
@@ -197,6 +197,7 @@ def text_to_image(prompt, steps, guidance_scale, progress=gr.Progress()):
197
  traceback.print_exc()
198
  return None
199
 
 
200
  def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, face_preserve, bbox_x1, bbox_y1, bbox_x2, bbox_y2, progress=gr.Progress()):
201
  try:
202
  if image is None:
@@ -208,15 +209,14 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
208
  print(f"Gesicht beibehalten: {face_preserve}")
209
  start_time = time.time()
210
 
211
- # Statusmeldung anzeigen zur Zeitüberbrückung - Callback wird erst nach ersten Step aufgerufen!
212
  progress(0, desc="Generierung läuft - CPU benötigt bis zu 20 Minuten!")
213
 
214
  # --- Progress-Balken zur Überbrückung für 0te Step von CONTROLNET---
215
  progress(0.05, desc="ControlNet: Pose-Erkennung...")
216
 
217
- # Parameter-Tuning für ControlNet (wie in deinem Code)
218
  adj_strength = min(0.85, strength * 1.3)
219
- #adj_strength = min(0.85, strength)
220
  actual_steps_from_strength = int(steps * adj_strength)
221
  controlnet_steps = min(25, actual_steps_from_strength)
222
 
@@ -224,12 +224,10 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
224
 
225
  # CONTROLNET-STRENGTH BERECHNEN: 50% der Inpaint-Strength
226
  controlnet_strength = adj_strength * 0.5
227
- print(f"🎯 ControlNet Step-Kalkulation: UI={steps}, Adj-Strength={adj_strength:.3f}, Echte Steps={actual_steps_from_strength}, ControlNet-Steps={controlnet_steps}")
228
  print(f"🎯 ControlNet Strength: {controlnet_strength:.3f} (50% von Inpaint-Strength {adj_strength:.3f})")
229
 
230
-
231
- # ControlNet Modul aufrufen mit Übergabe der Parameter
232
- controlnet_image = controlnet_processor.generate_with_controlnet(
233
  image=image,
234
  prompt=prompt,
235
  negative_prompt=neg_prompt,
@@ -237,16 +235,20 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
237
  guidance_scale=guidance_scale,
238
  controlnet_strength=controlnet_strength,
239
  progress=progress,
240
- keep_environment=face_preserve #Checkbox aktiviert ja/nein
241
  )
242
 
 
 
 
243
  #Progress-Balken zur Überbrückung für 0ten Step von Inpaint
244
  progress(0.3, desc="ControlNet fertig, starte Inpaint...")
245
 
246
- # --- AB HIER DEIN ORIGINAL-CODE MIT CONTROLNET-BILD ---
247
  pipe = load_img2img()
248
- # ControlNet-Bild verwenden statt Original!
249
- img_resized = controlnet_image.convert("RGB").resize((IMG_SIZE, IMG_SIZE))
 
250
 
251
  # --- PARAMETER-TUNING ---
252
  adj_guidance = min(guidance_scale, 12.0)
@@ -279,8 +281,6 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
279
  if bbox_coords:
280
  mask = create_face_mask(img_resized, bbox_coords, face_preserve)
281
  if mask:
282
- #mask.show() # Zeigt die Maske zum Überprüfen
283
- #print(f"Maske Größe: {mask.size}, Bereich: {bbox_coords}")
284
  print("Maske erfolgreich erstellt")
285
  else:
286
  print("Keine gültigen Koordinaten - keine Maske angewendet")
@@ -297,11 +297,11 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
297
  # NEUE Callback-Implementierung
298
  callback = ImageToImageProgressCallback(progress, int(steps), adj_strength)
299
 
300
- # --- PIPELINE-AUFRUF MIT NEUER API ---
301
  result = pipe(
302
  prompt=prompt,
303
  negative_prompt=neg_prompt,
304
- image=img_resized, # Jetzt: ControlNet-Bild!
305
  mask_image=mask,
306
  strength=adj_strength,
307
  num_inference_steps=int(steps),
@@ -338,6 +338,7 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, fac
338
  return None
339
 
340
 
 
341
  def update_bbox_from_image(image):
342
  """Aktualisiert die Bounding-Box-Koordinaten wenn ein Bild hochgeladen wird"""
343
  if image is None:
 
197
  traceback.print_exc()
198
  return None
199
 
200
+
201
  def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale, face_preserve, bbox_x1, bbox_y1, bbox_x2, bbox_y2, progress=gr.Progress()):
202
  try:
203
  if image is None:
 
209
  print(f"Gesicht beibehalten: {face_preserve}")
210
  start_time = time.time()
211
 
212
+ # Statusmeldung anzeigen zur Zeitüberbrückung
213
  progress(0, desc="Generierung läuft - CPU benötigt bis zu 20 Minuten!")
214
 
215
  # --- Progress-Balken zur Überbrückung für 0te Step von CONTROLNET---
216
  progress(0.05, desc="ControlNet: Pose-Erkennung...")
217
 
218
+ # Parameter-Tuning für ControlNet
219
  adj_strength = min(0.85, strength * 1.3)
 
220
  actual_steps_from_strength = int(steps * adj_strength)
221
  controlnet_steps = min(25, actual_steps_from_strength)
222
 
 
224
 
225
  # CONTROLNET-STRENGTH BERECHNEN: 50% der Inpaint-Strength
226
  controlnet_strength = adj_strength * 0.5
 
227
  print(f"🎯 ControlNet Strength: {controlnet_strength:.3f} (50% von Inpaint-Strength {adj_strength:.3f})")
228
 
229
+ # ControlNet Modul aufrufen - MIT ZWEI RÜCKGABEWERTEN
230
+ controlnet_output, inpaint_input = controlnet_processor.generate_with_controlnet(
 
231
  image=image,
232
  prompt=prompt,
233
  negative_prompt=neg_prompt,
 
235
  guidance_scale=guidance_scale,
236
  controlnet_strength=controlnet_strength,
237
  progress=progress,
238
+ keep_environment=face_preserve
239
  )
240
 
241
+ print(f"✅ ControlNet Output erhalten: {type(controlnet_output)}")
242
+ print(f"✅ Inpaint Input erhalten: {type(inpaint_input)}")
243
+
244
  #Progress-Balken zur Überbrückung für 0ten Step von Inpaint
245
  progress(0.3, desc="ControlNet fertig, starte Inpaint...")
246
 
247
+ # --- INPAINT PIPELINE ---
248
  pipe = load_img2img()
249
+
250
+ # JETZT: inpaint_input verwenden (Conditioning Image für Inpaint)
251
+ img_resized = inpaint_input.convert("RGB").resize((IMG_SIZE, IMG_SIZE))
252
 
253
  # --- PARAMETER-TUNING ---
254
  adj_guidance = min(guidance_scale, 12.0)
 
281
  if bbox_coords:
282
  mask = create_face_mask(img_resized, bbox_coords, face_preserve)
283
  if mask:
 
 
284
  print("Maske erfolgreich erstellt")
285
  else:
286
  print("Keine gültigen Koordinaten - keine Maske angewendet")
 
297
  # NEUE Callback-Implementierung
298
  callback = ImageToImageProgressCallback(progress, int(steps), adj_strength)
299
 
300
+ # --- PIPELINE-AUFRUF MIT KORREKTEM INPUT ---
301
  result = pipe(
302
  prompt=prompt,
303
  negative_prompt=neg_prompt,
304
+ image=img_resized, # JETZT: inpaint_input (Conditioning Image)
305
  mask_image=mask,
306
  strength=adj_strength,
307
  num_inference_steps=int(steps),
 
338
  return None
339
 
340
 
341
+
342
  def update_bbox_from_image(image):
343
  """Aktualisiert die Bounding-Box-Koordinaten wenn ein Bild hochgeladen wird"""
344
  if image is None: