Astridkraft commited on
Commit
88706fc
·
verified ·
1 Parent(s): 1c81a46

Update controlnet_module.py

Browse files
Files changed (1) hide show
  1. controlnet_module.py +20 -1
controlnet_module.py CHANGED
@@ -998,8 +998,26 @@ class ControlNetProcessor:
998
  print(f" 🔍 Analysiere Maske {i+1} auf Crop-Größe")
999
 
1000
  # 1. FLÄCHENBASIERTE BEWERTUNG (40%)
1001
- area_ratio = mask_area_pixels / bbox_area
1002
  print(f" 📐 Flächen-Ratio: {area_ratio:.3f} ({mask_area_pixels:,} / {bbox_area:,} Pixel)")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1003
 
1004
  # Optimale Kopfgröße: 80-120% der BBox
1005
  if area_ratio < 0.6:
@@ -1014,6 +1032,7 @@ class ControlNetProcessor:
1014
  else:
1015
  # Sanfte Abweichung
1016
  area_score = 1.0 - abs(area_ratio - 1.0) * 0.5
 
1017
 
1018
  # 2. KOMPAKTHEIT/SOLIDITÄT (30%)
1019
  labeled_mask = measure.label(mask_binary)
 
998
  print(f" 🔍 Analysiere Maske {i+1} auf Crop-Größe")
999
 
1000
  # 1. FLÄCHENBASIERTE BEWERTUNG (40%)
1001
+ area_ratio = mask_area_pixels / bbox_area if bbox_area > 0 else 0
1002
  print(f" 📐 Flächen-Ratio: {area_ratio:.3f} ({mask_area_pixels:,} / {bbox_area:,} Pixel)")
1003
+
1004
+
1005
+ optimal_min, optimal_max = 0.8, 1.2
1006
+ if optimal_min <= area_ratio <= optimal_max:
1007
+ area_score = 1.0
1008
+ elif area_ratio < optimal_min:
1009
+ area_score = area_ratio / optimal_min
1010
+ else:
1011
+ area_score = optimal_max / area_ratio # Starke Bestrafung für zu groß
1012
+
1013
+
1014
+ # 2. BBOX-ÜBERLAPPUNG (KORRIGIERT!)
1015
+ bbox_mask = np.zeros((image.height, image.width), dtype=np.uint8)
1016
+ bbox_mask[bbox_y1:bbox_y2, bbox_x1:bbox_x2] = 1
1017
+ overlap = np.sum(mask_binary & bbox_mask)
1018
+ bbox_overlap_ratio = overlap / bbox_area if bbox_area > 0 else 0 # WICHTIG: durch bbox_area!
1019
+
1020
+
1021
 
1022
  # Optimale Kopfgröße: 80-120% der BBox
1023
  if area_ratio < 0.6:
 
1032
  else:
1033
  # Sanfte Abweichung
1034
  area_score = 1.0 - abs(area_ratio - 1.0) * 0.5
1035
+
1036
 
1037
  # 2. KOMPAKTHEIT/SOLIDITÄT (30%)
1038
  labeled_mask = measure.label(mask_binary)