Astridkraft commited on
Commit
2b65f18
·
verified ·
1 Parent(s): a2b99e3

Update controlnet_module.py

Browse files
Files changed (1) hide show
  1. controlnet_module.py +50 -14
controlnet_module.py CHANGED
@@ -830,13 +830,23 @@ class ControlNetProcessor:
830
  needs_transform_back = True
831
  transform_offset = (crop_x1, crop_y1)
832
 
833
- else: #use_crop_strategy=False (Bild <=512)
834
-
835
-
 
 
 
 
 
 
 
 
 
836
 
837
  # ============================================================
838
- # SAM-AUSFÜHRUNG
839
  # ============================================================
 
840
  print("-" * 60)
841
  print(f"📦 BOUNDING BOX DETAILS FÜR SAM:")
842
  print(f" Bild-Größe für SAM: {image.size}")
@@ -931,20 +941,36 @@ class ControlNetProcessor:
931
  # ============================================================
932
  # HEURISTIK (zur Bestimmung der besten Maske)
933
  # ============================================================
934
- print("🤔 HEURISTIK AUF CROP-GRÖSSE BERECHNEN")
935
 
 
 
 
 
 
 
 
 
 
936
 
937
- # BBox-Information für Heuristik (IN CROP-KOORDINATEN!)
938
- bbox_center = ((x1 + x2) // 2, (y1 + y2) // 2)
939
- bbox_area = (x2 - x1) * (y2 - y1)
 
 
 
 
940
 
941
- print(f" CROP-BBox: [{x1}, {y1}, {x2}, {y2}]")
942
- print(f" CROP-BBox-Größe: {x2-x1}×{y2-y1}px = {bbox_area:,}px²")
943
- print(f" CROP-BBox-Zentrum: {bbox_center}")
944
- print(f" Crop-Bildgröße: {image.width}×{image.height}")
 
945
 
 
 
946
 
947
- best_mask_idx = 0
948
  best_score = -1
949
 
950
  for i, mask_np in enumerate(all_masks_crop):
@@ -1023,7 +1049,13 @@ class ControlNetProcessor:
1023
  # 3. BBOX-ÜBERLAPPUNG (20%)
1024
  bbox_mask = np.zeros((image.height, image.width), dtype=np.uint8)
1025
 
1026
- bbox_mask[y1:y2, x1:x2] = 1
 
 
 
 
 
 
1027
 
1028
  overlap = np.sum(mask_binary & bbox_mask)
1029
 
@@ -1073,6 +1105,10 @@ class ControlNetProcessor:
1073
  max_val = mask_np.max()
1074
  print(f"🔍 Maximaler SAM-Konfidenzwert der besten Maske: {max_val:.3f}")
1075
 
 
 
 
 
1076
  # ============================================================
1077
  # THRESHOLD-BESTIMMUNG Wahrscheinlichkeiten -> Binär (0,1)
1078
  # ============================================================
 
830
  needs_transform_back = True
831
  transform_offset = (crop_x1, crop_y1)
832
 
833
+ else: #use_crop_strategy=False (Bild <=512)
834
+ print("🎯 SCHRITT 2: VERWENDE ORIGINALBILD UND ORIGINAL-BBOX FÜR SAM")
835
+ print(f" Originalbild-Größe: {original_image.size}")
836
+ print(f" Original-BBox: [{x1}, {y1}, {x2}, {y2}]")
837
+
838
+ # Keine Bildverbesserung für 512x512 - Original verwenden
839
+ image = original_image
840
+
841
+ # Für SAM verwenden wir die Original-BBox (keine Transformation)
842
+ sam_bbox = (x1, y1, x2, y2)
843
+ print(f" ✅ SAM verwendet Original-BBox-Koordinaten")
844
+
845
 
846
  # ============================================================
847
+ # SAM-AUSFÜHRUNG mit relativen Koordinaten für Bild<=512 und Bild>512
848
  # ============================================================
849
+
850
  print("-" * 60)
851
  print(f"📦 BOUNDING BOX DETAILS FÜR SAM:")
852
  print(f" Bild-Größe für SAM: {image.size}")
 
941
  # ============================================================
942
  # HEURISTIK (zur Bestimmung der besten Maske)
943
  # ============================================================
944
+ print("🤔 HEURISTIK AUF Original- GRÖSSE BERECHNEN")
945
 
946
+ if use_crop_strategy:
947
+ # BBox-Information für Heuristik (IN CROP-KOORDINATEN!)
948
+ bbox_center = ((x1 + x2) // 2, (y1 + y2) // 2)
949
+ bbox_area = (x2 - x1) * (y2 - y1)
950
+
951
+ print(f" CROP-BBox: [{x1}, {y1}, {x2}, {y2}]")
952
+ print(f" CROP-BBox-Größe: {x2-x1}×{y2-y1}px = {bbox_area:,}px²")
953
+ print(f" CROP-BBox-Zentrum: {bbox_center}")
954
+ print(f" Crop-Bildgröße: {image.width}×{image.height}")
955
 
956
+ else: #Heuristik für Original-Fall, Original-BBox
957
+ print(" ✅ Original-Fall: Heuristik mit Original-BBox")
958
+
959
+ # Original-BBox-Koordinaten verwenden (nicht transformiert)
960
+ bbox_center = ((original_bbox[0] + original_bbox[2]) // 2,
961
+ (original_bbox[1] + original_bbox[3]) // 2)
962
+ bbox_area = (original_bbox[2] - original_bbox[0]) * (original_bbox[3] - original_bbox[1])
963
 
964
+ print(f" ORIGINAL-BBox: {original_bbox}")
965
+ print(f" ORIGINAL-BBox-Größe: {original_bbox[2]-original_bbox[0]}×{original_bbox[3]-original_bbox[1]}px = {bbox_area:,}px²")
966
+ print(f" ORIGINAL-BBox-Zentrum: {bbox_center}")
967
+ print(f" Original-Bildgröße: {image.width}×{image.height}")
968
+
969
 
970
+ # Heuristik-BBox für alle weiteren Berechnungen verwenden
971
+ # (bbox_center und bbox_area sind jetzt korrekt für beide Fälle)
972
 
973
+ best_mask_idx = 0
974
  best_score = -1
975
 
976
  for i, mask_np in enumerate(all_masks_crop):
 
1049
  # 3. BBOX-ÜBERLAPPUNG (20%)
1050
  bbox_mask = np.zeros((image.height, image.width), dtype=np.uint8)
1051
 
1052
+ if use_crop_strategy:
1053
+ bbox_mask[y1:y2, x1:x2] = 1
1054
+ else:
1055
+ # Original-Fall: Müssen BBox auf aktuelle Bildgröße transformieren
1056
+ # Da Bild = Original, können wir original_bbox direkt verwenden
1057
+ bbox_mask[original_bbox[1]:original_bbox[3], original_bbox[0]:original_bbox[2]] = 1
1058
+
1059
 
1060
  overlap = np.sum(mask_binary & bbox_mask)
1061
 
 
1105
  max_val = mask_np.max()
1106
  print(f"🔍 Maximaler SAM-Konfidenzwert der besten Maske: {max_val:.3f}")
1107
 
1108
+
1109
+
1110
+
1111
+
1112
  # ============================================================
1113
  # THRESHOLD-BESTIMMUNG Wahrscheinlichkeiten -> Binär (0,1)
1114
  # ============================================================