Update controlnet_module.py
Browse files- controlnet_module.py +6 -0
controlnet_module.py
CHANGED
|
@@ -550,6 +550,7 @@ class ControlNetProcessor:
|
|
| 550 |
# Alte Standardlogik (kann beibehalten werden)
|
| 551 |
if max_val < 0.6:
|
| 552 |
dynamic_threshold = 0.3
|
|
|
|
| 553 |
else:
|
| 554 |
dynamic_threshold = max_val * 0.8
|
| 555 |
print(f" ✅ SAM ist sicher (max_val={max_val:.3f} >= 0.6)")
|
|
@@ -562,17 +563,22 @@ class ControlNetProcessor:
|
|
| 562 |
print(f" 🚨 URSPSRUNGS-DEBUG 1: mask_np Min/Max: {mask_np.min():.3f}/{mask_np.max():.3f}")
|
| 563 |
print(f" 🚨 URSPSRUNGS-DEBUG 2: mask_array Min/Max: {mask_array.min()}/{mask_array.max()}, Sum: {mask_array.sum()}")
|
| 564 |
print(f" 🚨 URSPSRUNGS-DEBUG 3: Sind mask_np und mask_array gleich? {np.array_equal(mask_np > dynamic_threshold, mask_array > 0)}")
|
|
|
|
|
|
|
| 565 |
print(f" 🐛 DEBUG BINÄRMASKE: Min/Max: {mask_array.min()}/{mask_array.max()}, Weiße Pixel: {np.sum(mask_array > 0)}")
|
| 566 |
#mask_array = (mask_np > dynamic_threshold).astype(np.uint8) * 255
|
| 567 |
|
| 568 |
# 2. Wenn die Maske immer noch leer ist, ERZwinge eine einfache Maske für den Test:
|
| 569 |
if mask_array.max() == 0:
|
| 570 |
print(" ⚠️ KRITISCH: Binärmaske ist leer! Erzwinge Testmaske (BBox).")
|
|
|
|
| 571 |
# Erstelle eine einfache weiße Box innerhalb der BBox als Fallback
|
| 572 |
test_mask = np.zeros((image.height, image.width), dtype=np.uint8)
|
| 573 |
cv2.rectangle(test_mask, (x1, y1), (x2, y2), 255, -1) # -1 = ausgefüllt
|
|
|
|
| 574 |
mask_array = test_mask
|
| 575 |
print(f" 🐛 DEBUG ERZWUNGENE MASKE: Min/Max: {mask_array.min()}/{mask_array.max()}")
|
|
|
|
| 576 |
|
| 577 |
mask_np = mask_array.astype(np.float32) / 255.0
|
| 578 |
print(" ✅ Fallback-Maske wurde gesetzt und mask_np aktualisiert.")
|
|
|
|
| 550 |
# Alte Standardlogik (kann beibehalten werden)
|
| 551 |
if max_val < 0.6:
|
| 552 |
dynamic_threshold = 0.3
|
| 553 |
+
print(f" ⚠️ SAM ist unsicher (max_val={max_val:.3f} < 0.6)")
|
| 554 |
else:
|
| 555 |
dynamic_threshold = max_val * 0.8
|
| 556 |
print(f" ✅ SAM ist sicher (max_val={max_val:.3f} >= 0.6)")
|
|
|
|
| 563 |
print(f" 🚨 URSPSRUNGS-DEBUG 1: mask_np Min/Max: {mask_np.min():.3f}/{mask_np.max():.3f}")
|
| 564 |
print(f" 🚨 URSPSRUNGS-DEBUG 2: mask_array Min/Max: {mask_array.min()}/{mask_array.max()}, Sum: {mask_array.sum()}")
|
| 565 |
print(f" 🚨 URSPSRUNGS-DEBUG 3: Sind mask_np und mask_array gleich? {np.array_equal(mask_np > dynamic_threshold, mask_array > 0)}")
|
| 566 |
+
print(f" 🚨 URSPSRUNGS-DEBUG 4: Weiße Pixel in mask_array: {np.sum(mask_array > 0)}")
|
| 567 |
+
print(f" 🚨 URSPSRUNGS-DEBUG 5: Anteil weiße Pixel: {np.sum(mask_array > 0) / mask_array.size:.1%}")
|
| 568 |
print(f" 🐛 DEBUG BINÄRMASKE: Min/Max: {mask_array.min()}/{mask_array.max()}, Weiße Pixel: {np.sum(mask_array > 0)}")
|
| 569 |
#mask_array = (mask_np > dynamic_threshold).astype(np.uint8) * 255
|
| 570 |
|
| 571 |
# 2. Wenn die Maske immer noch leer ist, ERZwinge eine einfache Maske für den Test:
|
| 572 |
if mask_array.max() == 0:
|
| 573 |
print(" ⚠️ KRITISCH: Binärmaske ist leer! Erzwinge Testmaske (BBox).")
|
| 574 |
+
print(f" 🚨 BBox für Fallback: x1={x1}, y1={y1}, x2={x2}, y2={y2}")
|
| 575 |
# Erstelle eine einfache weiße Box innerhalb der BBox als Fallback
|
| 576 |
test_mask = np.zeros((image.height, image.width), dtype=np.uint8)
|
| 577 |
cv2.rectangle(test_mask, (x1, y1), (x2, y2), 255, -1) # -1 = ausgefüllt
|
| 578 |
+
|
| 579 |
mask_array = test_mask
|
| 580 |
print(f" 🐛 DEBUG ERZWUNGENE MASKE: Min/Max: {mask_array.min()}/{mask_array.max()}")
|
| 581 |
+
print(f" 🐛 DEBUG ERZWUNGENE MASKE Weiße Pixel: {np.sum(mask_array > 0)}")
|
| 582 |
|
| 583 |
mask_np = mask_array.astype(np.float32) / 255.0
|
| 584 |
print(" ✅ Fallback-Maske wurde gesetzt und mask_np aktualisiert.")
|