Astridkraft commited on
Commit
b85b028
·
verified ·
1 Parent(s): 9dfacd3

Update controlnet_module.py

Browse files
Files changed (1) hide show
  1. controlnet_module.py +42 -26
controlnet_module.py CHANGED
@@ -1315,53 +1315,69 @@ class ControlNetProcessor:
1315
  # ============================================================
1316
  # ABSCHLIESSENDE STATISTIK
1317
  # ============================================================
1318
- print("📊 FINALE MASKEN-STATISTIK")
1319
 
1320
- # Nach den Dilate-Operationen:
1321
- #expanded_pixels = np.sum(mask_array > 128) - current_white
1322
- #print(f" 📈 Maske um {expanded_pixels:,} Pixel erweitert")
1323
- #print(f" 📏 Neue Kanten: ~{25//2}px von Original-Maske entfernt")
1324
-
1325
- # Weiße Pixel zählen
1326
  final_white = np.sum(mask_array > 128)
1327
- final_coverage = final_white / bbox_area if bbox_area > 0 else 0
1328
- final_array = np.array(mask_original) # ✅ Original-Größe
1329
  white_pixels = np.sum(final_array > 0)
1330
  total_pixels = final_array.size
1331
- white_ratio = white_pixels / total_pixels * 100 if total_pixels >0 else 0
1332
 
1333
- # Original-BBox Fläche (vor Crop)
1334
  original_bbox_width = original_bbox[2] - original_bbox[0]
1335
  original_bbox_height = original_bbox[3] - original_bbox[1]
1336
  original_face_area = original_bbox_width * original_bbox_height
1337
  coverage_ratio = white_pixels / original_face_area if original_face_area > 0 else 0
1338
-
1339
- print(f" 👤 GESICHTSABDECKUNG: {coverage_ratio:.1%} der ursprünglichen BBox")
1340
- print(f" Weiße Pixel (Veränderungsbereich): {white_pixels:,} ({white_ratio:.1f}%)")
1341
- print(f" Schwarze Pixel (Erhaltungsbereich): {total_pixels-white_pixels:,} ({100-white_ratio:.1f}%)")
1342
- print(f" Gesamtpixel: {total_pixels:,}")
1343
- print(f" • Weiße Pixel: {final_white:,}")
1344
- print(f" • BBox-Fläche: {bbox_area:,}")
1345
- print(f" • Abdeckung: {final_coverage:.1%}")
1346
- print(f" • Empfohlen: >90% für natürliches Gesicht")
1347
-
1348
- # Warnungen basierend auf Abdeckung
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1349
  if coverage_ratio < 0.7:
1350
  print(f" ⚠️ WARNUNG: Geringe Gesichtsabdeckung ({coverage_ratio:.1%})")
1351
  elif coverage_ratio > 1.3:
1352
  print(f" ⚠️ WARNUNG: Sehr hohe Gesichtsabdeckung ({coverage_ratio:.1%})")
1353
  elif 0.8 <= coverage_ratio <= 1.2:
1354
  print(f" ✅ OPTIMALE Gesichtsabdeckung ({coverage_ratio:.1%})")
1355
-
1356
  print("#" * 80)
1357
  print(f"✅ SAM 2 SEGMENTIERUNG ABGESCHLOSSEN")
1358
  print(f"📐 Finale Maskengröße: {mask_original.size}")
1359
  print(f"🎛️ Verwendeter Modus: {mode}")
1360
- print(f"👤 Crop={crop_size}×{crop_size}px, Heuristik-Score={best_score:.3f}")
 
 
 
 
 
1361
  print(f"👤 Kopfabdeckung: {coverage_ratio:.1%} der BBox")
1362
  print("#" * 80)
1363
-
1364
-
1365
  return mask_original, raw_mask_original, inpaint_binary_original
1366
 
1367
  #Maske, Raw_mask und Binärmaske in Originalgröße zurück!
 
1315
  # ============================================================
1316
  # ABSCHLIESSENDE STATISTIK
1317
  # ============================================================
1318
+ print("📊 FINALE MASKEN-STATISTIK FÜR FEHLERANALYSE")
1319
 
1320
+ # Berechnungen (bleiben gleich)
 
 
 
 
 
1321
  final_white = np.sum(mask_array > 128)
1322
+ final_coverage = final_white / bbox_area if bbox_area > 0 else 0
1323
+ final_array = np.array(mask_original)
1324
  white_pixels = np.sum(final_array > 0)
1325
  total_pixels = final_array.size
1326
+ white_ratio = white_pixels / total_pixels * 100 if total_pixels > 0 else 0
1327
 
 
1328
  original_bbox_width = original_bbox[2] - original_bbox[0]
1329
  original_bbox_height = original_bbox[3] - original_bbox[1]
1330
  original_face_area = original_bbox_width * original_bbox_height
1331
  coverage_ratio = white_pixels / original_face_area if original_face_area > 0 else 0
1332
+
1333
+ # Fehlende Variablen für den else-Fall definieren
1334
+ if not use_crop_strategy:
1335
+ crop_size = "N/A"
1336
+ crop_x1 = crop_y1 = crop_x2 = crop_y2 = "N/A"
1337
+
1338
+ # Strukturierte Ausgabe
1339
+ print(f" 🖼️ Bildgröße: {original_image.size[0]}×{original_image.size[1]} | "
1340
+ f"Crop-Strategie: {'JA' if use_crop_strategy else 'NEIN'}")
1341
+ print(f" 📦 Original-BBox: {original_bbox} | "
1342
+ f"Fläche: {original_face_area:,} px² ({original_bbox_width}×{original_bbox_height})")
1343
+ print(f" 🎯 SAM-Ergebnis: Beste Maske #{best_mask_idx+1} | Score: {best_score:.3f} | "
1344
+ f"Konfidenz: {max_val:.3f} | Verfügbare Masken: {num_masks}")
1345
+ print(f" 👤 Gesichtsabdeckung: {coverage_ratio:.1%} der BBox "
1346
+ f"({'OPTIMAL' if 0.8 <= coverage_ratio <= 1.2 else 'UNTER' if coverage_ratio < 0.7 else 'ÜBER'})")
1347
+ print(f" 📐 Maskenpixel: {white_pixels:,} weiß ({white_ratio:.1f}%) | "
1348
+ f"{total_pixels-white_pixels:,} schwarz ({100-white_ratio:.1f}%)")
1349
+ print(f" ⚙️ Postprocessing: {num_features} Komponenten → 1 behalten | "
1350
+ f"Operationen: MORPH_CLOSE, MORPH_OPEN, DILATE, GAUSSIAN_BLUR, GAMMA")
1351
+ if use_crop_strategy:
1352
+ print(f" 🔄 Crop-Größe: {crop_size}×{crop_size}px | "
1353
+ f"Position: [{crop_x1},{crop_y1},{crop_x2},{crop_y2}]")
1354
+ print(f" 📏 Crop-interne Abdeckung: {final_coverage:.1%} (technisch)")
1355
+ else:
1356
+ print(f" 🔄 Direktverarbeitung auf Originalgröße")
1357
+ print(f" 🎛️ Modus: {mode} | Threshold: {dynamic_threshold:.3f}")
1358
+
1359
+ # Warnungen
1360
  if coverage_ratio < 0.7:
1361
  print(f" ⚠️ WARNUNG: Geringe Gesichtsabdeckung ({coverage_ratio:.1%})")
1362
  elif coverage_ratio > 1.3:
1363
  print(f" ⚠️ WARNUNG: Sehr hohe Gesichtsabdeckung ({coverage_ratio:.1%})")
1364
  elif 0.8 <= coverage_ratio <= 1.2:
1365
  print(f" ✅ OPTIMALE Gesichtsabdeckung ({coverage_ratio:.1%})")
1366
+
1367
  print("#" * 80)
1368
  print(f"✅ SAM 2 SEGMENTIERUNG ABGESCHLOSSEN")
1369
  print(f"📐 Finale Maskengröße: {mask_original.size}")
1370
  print(f"🎛️ Verwendeter Modus: {mode}")
1371
+
1372
+ if use_crop_strategy:
1373
+ print(f"👤 Crop={crop_size}×{crop_size}px, Heuristik-Score={best_score:.3f}")
1374
+ else:
1375
+ print(f"👤 Direktverarbeitung, Heuristik-Score={best_score:.3f}")
1376
+
1377
  print(f"👤 Kopfabdeckung: {coverage_ratio:.1%} der BBox")
1378
  print("#" * 80)
1379
+
1380
+
1381
  return mask_original, raw_mask_original, inpaint_binary_original
1382
 
1383
  #Maske, Raw_mask und Binärmaske in Originalgröße zurück!