Astridkraft commited on
Commit
8644a82
·
verified ·
1 Parent(s): 8d979c1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -0
app.py CHANGED
@@ -880,6 +880,49 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
880
  controlnet_steps = min(25, int(steps * 0.8))
881
  print(f"⚙️ ControlNet Settings: Strength={controlnet_strength:.3f}, Steps={controlnet_steps}")
882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
883
  progress(0.03, desc="ControlNet läuft...")
884
 
885
  # ===== WICHTIG: VARIABLEN FÜR KOMPLETTEN WORKFLOW =====
 
880
  controlnet_steps = min(25, int(steps * 0.8))
881
  print(f"⚙️ ControlNet Settings: Strength={controlnet_strength:.3f}, Steps={controlnet_steps}")
882
 
883
+
884
+
885
+
886
+ # ===== PUNKT 1: VAE-ENCODING & VERRAUSCHUNG =====
887
+ print("🔧 Punkt 1: Bereite verrauschtes Latent vor...")
888
+
889
+ # 1. Bild für Latent-Encoding vorbereiten (bereits skaliertes Bild verwenden)
890
+ if scaled_image is not None:
891
+ # img_for_latent ist das bereits herunterskalierte 512x512 Bild (mit Padding)
892
+ img_for_latent = scaled_image
893
+ else:
894
+ # Fallback, falls keine Skalierung stattfand
895
+ img_for_latent = image.convert("RGB").resize((IMG_SIZE, IMG_SIZE), Image.Resampling.LANCZOS)
896
+
897
+ # 2. In den Latent Space encoden (VAE)
898
+ with torch.no_grad():
899
+ # Bild zu Tensor konvertieren
900
+ img_tensor = pipe.feature_extractor(img_for_latent, return_tensors="pt").pixel_values.to(device)
901
+ # Encoden
902
+ init_latent_dist = pipe.vae.encode(img_tensor).latent_dist
903
+ init_latents = init_latent_dist.sample() # Latent mit zufälliger Variation aus der Verteilung
904
+ init_latents = init_latents * pipe.vae.config.scaling_factor # Skalierung anpassen
905
+ print(f"✅ VAE-Encoding abgeschlossen. Latent Shape: {init_latents.shape}")
906
+
907
+ # 3. Verrauschung basierend auf Strength (Scheduler)
908
+ # Strength=0.8 bedeutet: Starte bei 80% des Rauschprozesses (stark verrauscht)
909
+ strength = min(0.85, strength * 1.25) # Ihre existierende Stärke-Anpassung
910
+ latent_timestep = int(strength * pipe.scheduler.config.num_train_timesteps)
911
+
912
+ # Rauschen generieren
913
+ noise = torch.randn_like(init_latents)
914
+
915
+ # Verrauschte Latents erzeugen
916
+ noised_latents = pipe.scheduler.add_noise(init_latents, noise, torch.tensor([latent_timestep]))
917
+ print(f"✅ Verrauschung abgeschlossen (Strength: {strength}, Timestep: {latent_timestep})")
918
+ print(f" Noised Latents Shape: {noised_latents.shape}")
919
+
920
+ # Diese Variablen für später speichern:
921
+ # - noised_latents: Das verrauschte Start-Latent für die Denoising-Schleife
922
+ # - latent_timestep: Der Start-Timestep für die Denoising-Schleife
923
+ # - init_latents: Das unverrauschte Latent (für spätere Referenz)
924
+
925
+
926
  progress(0.03, desc="ControlNet läuft...")
927
 
928
  # ===== WICHTIG: VARIABLEN FÜR KOMPLETTEN WORKFLOW =====