Astridkraft commited on
Commit
d13f594
·
verified ·
1 Parent(s): eb3a835

Update controlnet_module.py

Browse files
Files changed (1) hide show
  1. 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
- # Nach der Auswahl
169
- single_mask = outputs.pred_masks[:, :, 0, :, :]
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("⚠️ WARNUNG: Maske hat nur 3 Dimensionen! Korrigiere...")
176
- single_mask = single_mask.unsqueeze(1) # Fügt Channel-Dimension hinzu
177
 
 
 
178
 
179
- # 2. Konvertiere die Größen-Parameter zu CPU und als Python-Liste
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
- # 3. Korrekter Aufruf mit angepassten Parametern
184
  mask = self.sam_processor.post_process_masks(
185
- single_mask, # Nur eine Maske
186
- original_sizes=[original_size], # Als Python-Liste
187
- reshaped_input_sizes=[input_size] # Als Python-Liste
188
- )[0][0] # [batch][mask]
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()