Update controlnet_module.py
Browse files- controlnet_module.py +15 -16
controlnet_module.py
CHANGED
|
@@ -159,34 +159,33 @@ class ControlNetProcessor:
|
|
| 159 |
print(f"🔍 Original_sizes parameter (in inputs): {inputs.get('original_sizes', 'NOT FOUND')}")
|
| 160 |
print(f"🔍 Reshaped_input_sizes parameter (in inputs): {inputs.get('reshaped_input_sizes', 'NOT FOUND')}")
|
| 161 |
|
| 162 |
-
|
|
|
|
| 163 |
|
| 164 |
# Debug: Vollständige Dimensionsanalyse
|
| 165 |
print(f"🔍 outputs.pred_masks shape: {outputs.pred_masks.shape}")
|
| 166 |
print(f"🔍 outputs.pred_masks dimensions: {outputs.pred_masks.dim()}")
|
| 167 |
|
| 168 |
-
#
|
| 169 |
-
single_mask
|
| 170 |
-
print(f"🔍 single_mask shape: {single_mask.shape}")
|
| 171 |
-
print(f"🔍 single_mask dimensions: {single_mask.dim()}")
|
| 172 |
-
|
| 173 |
-
# Wichtig: Ist es wirklich [1, 1, 256, 256] oder [1, 256, 256]?
|
| 174 |
if single_mask.dim() == 3:
|
| 175 |
-
print("⚠️
|
| 176 |
-
single_mask = single_mask.unsqueeze(1) #
|
| 177 |
|
|
|
|
|
|
|
| 178 |
|
| 179 |
-
#
|
| 180 |
original_size = inputs['original_sizes'].cpu().numpy().tolist()[0] # [512, 512]
|
| 181 |
input_size = inputs['reshaped_input_sizes'].cpu().numpy().tolist()[0] # [512, 512]
|
| 182 |
|
| 183 |
-
#
|
| 184 |
mask = self.sam_processor.post_process_masks(
|
| 185 |
-
single_mask,
|
| 186 |
-
original_sizes=[original_size],
|
| 187 |
-
reshaped_input_sizes=[input_size]
|
| 188 |
-
)[0][0]
|
| 189 |
-
|
| 190 |
|
| 191 |
# Sigmoid für Wahrscheinlichkeiten, dann Schwellenwert
|
| 192 |
mask = mask.sigmoid().cpu().numpy()
|
|
|
|
| 159 |
print(f"🔍 Original_sizes parameter (in inputs): {inputs.get('original_sizes', 'NOT FOUND')}")
|
| 160 |
print(f"🔍 Reshaped_input_sizes parameter (in inputs): {inputs.get('reshaped_input_sizes', 'NOT FOUND')}")
|
| 161 |
|
| 162 |
+
# 1. Maske auswählen
|
| 163 |
+
single_mask = outputs.pred_masks[:, :, 0, :, :] # Shape: [1, 1, 256, 256]
|
| 164 |
|
| 165 |
# Debug: Vollständige Dimensionsanalyse
|
| 166 |
print(f"🔍 outputs.pred_masks shape: {outputs.pred_masks.shape}")
|
| 167 |
print(f"🔍 outputs.pred_masks dimensions: {outputs.pred_masks.dim()}")
|
| 168 |
|
| 169 |
+
# 2. KRITISCHE KORREKTUR: Stelle sicher, dass es 4D bleibt
|
| 170 |
+
# Wenn single_mask 3D ist ([1, 256, 256]), füge Channel-Dimension hinzu
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
if single_mask.dim() == 3:
|
| 172 |
+
print("⚠️ Maske ist 3D, füge Channel-Dimension hinzu")
|
| 173 |
+
single_mask = single_mask.unsqueeze(1) # Wird zu [1, 1, 256, 256]
|
| 174 |
|
| 175 |
+
print(f"🔍 Final mask shape before post_process: {single_mask.shape}")
|
| 176 |
+
print(f"🔍 Final mask dimensions: {single_mask.dim()}")
|
| 177 |
|
| 178 |
+
# 3. Größen-Parameter konvertieren
|
| 179 |
original_size = inputs['original_sizes'].cpu().numpy().tolist()[0] # [512, 512]
|
| 180 |
input_size = inputs['reshaped_input_sizes'].cpu().numpy().tolist()[0] # [512, 512]
|
| 181 |
|
| 182 |
+
# 4. Maske verarbeiten (WICHTIG: original_size muss Tuple/Liste sein)
|
| 183 |
mask = self.sam_processor.post_process_masks(
|
| 184 |
+
single_mask,
|
| 185 |
+
original_sizes=[original_size], # [512, 512] als Liste in einer Liste
|
| 186 |
+
reshaped_input_sizes=[input_size] # [512, 512] als Liste in einer Liste
|
| 187 |
+
)[0][0]
|
| 188 |
+
|
| 189 |
|
| 190 |
# Sigmoid für Wahrscheinlichkeiten, dann Schwellenwert
|
| 191 |
mask = mask.sigmoid().cpu().numpy()
|