Update sam_module.py
Browse files- sam_module.py +4 -4
sam_module.py
CHANGED
|
@@ -351,7 +351,7 @@ def create_sam_mask(self, image, bbox_coords, mode):
|
|
| 351 |
|
| 352 |
# Alle 3 Masken analysieren
|
| 353 |
for i in range(num_masks):
|
| 354 |
-
# Maske in Original-
|
| 355 |
|
| 356 |
mask_np_temp = all_masks[i]
|
| 357 |
|
|
@@ -409,7 +409,7 @@ def create_sam_mask(self, image, bbox_coords, mode):
|
|
| 409 |
|
| 410 |
print(f"✅ Beste Maske: Nr. {best_mask_idx+1} mit Score {best_score:.3f}")
|
| 411 |
|
| 412 |
-
# NUR DIE BESTE MASKE AUF 512x512
|
| 413 |
best_mask_256 = outputs.pred_masks[:, :, best_mask_idx, :, :]
|
| 414 |
resized_mask = F.interpolate(
|
| 415 |
best_mask_256,
|
|
@@ -418,7 +418,7 @@ def create_sam_mask(self, image, bbox_coords, mode):
|
|
| 418 |
align_corners=False
|
| 419 |
).squeeze()
|
| 420 |
|
| 421 |
-
mask_np = resized_mask.
|
| 422 |
print(f" 🔄 Beste Maske skaliert auf 512×512 für ControlNet")
|
| 423 |
|
| 424 |
# ============================================================
|
|
@@ -428,7 +428,7 @@ def create_sam_mask(self, image, bbox_coords, mode):
|
|
| 428 |
# wie "wahrscheinlich gehört dieser Pixel zur Person"), wird diese Maske binarisiert (0 oder 1), indem alle
|
| 429 |
# Pixel unter 0.05 auf 0 gesetzt werden, alle darüber auf 1.
|
| 430 |
# ============================================================
|
| 431 |
-
mask_max = mask_np.max()
|
| 432 |
if best_score < 0.7: # Schlechte Maskenqualität
|
| 433 |
dynamic_threshold = 0.05 # SEHR NIEDRIG für maximale Abdeckung
|
| 434 |
print(f" ⚠️ Masken-Score niedrig ({best_score:.3f}). "
|
|
|
|
| 351 |
|
| 352 |
# Alle 3 Masken analysieren
|
| 353 |
for i in range(num_masks):
|
| 354 |
+
# Maske in Original-Bildgröße -vorher interpolate- analysieren
|
| 355 |
|
| 356 |
mask_np_temp = all_masks[i]
|
| 357 |
|
|
|
|
| 409 |
|
| 410 |
print(f"✅ Beste Maske: Nr. {best_mask_idx+1} mit Score {best_score:.3f}")
|
| 411 |
|
| 412 |
+
# NUR DIE BESTE MASKE AUF 512x512 HERUNTERSKALIEREN -Für Inpaint
|
| 413 |
best_mask_256 = outputs.pred_masks[:, :, best_mask_idx, :, :]
|
| 414 |
resized_mask = F.interpolate(
|
| 415 |
best_mask_256,
|
|
|
|
| 418 |
align_corners=False
|
| 419 |
).squeeze()
|
| 420 |
|
| 421 |
+
mask_np = resized_mask.cpu().numpy()
|
| 422 |
print(f" 🔄 Beste Maske skaliert auf 512×512 für ControlNet")
|
| 423 |
|
| 424 |
# ============================================================
|
|
|
|
| 428 |
# wie "wahrscheinlich gehört dieser Pixel zur Person"), wird diese Maske binarisiert (0 oder 1), indem alle
|
| 429 |
# Pixel unter 0.05 auf 0 gesetzt werden, alle darüber auf 1.
|
| 430 |
# ============================================================
|
| 431 |
+
mask_max = mask_np.max() #höchster Wahrscheinlichkeitswert in SAM-Maske
|
| 432 |
if best_score < 0.7: # Schlechte Maskenqualität
|
| 433 |
dynamic_threshold = 0.05 # SEHR NIEDRIG für maximale Abdeckung
|
| 434 |
print(f" ⚠️ Masken-Score niedrig ({best_score:.3f}). "
|