Update app.py
Browse files
app.py
CHANGED
|
@@ -926,9 +926,9 @@ def text_to_image(prompt, model_id, steps, guidance_scale, progress=gr.Progress(
|
|
| 926 |
import traceback
|
| 927 |
traceback.print_exc()
|
| 928 |
return None, error_msg
|
|
|
|
| 929 |
|
| 930 |
|
| 931 |
-
# === KORRIGIERTE HAUPTFUNKTION MIT RICHTIGEM COMPOSITING ===
|
| 932 |
def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
| 933 |
mode, bbox_x1, bbox_y1, bbox_x2, bbox_y2,
|
| 934 |
progress=gr.Progress()):
|
|
@@ -980,31 +980,42 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
|
| 980 |
print(f"ℹ️ Kein manueller Negativ-Prompt, verwende nur automatischen: {combined_negative_prompt}")
|
| 981 |
|
| 982 |
print(f"✅ Finaler kombinierter Negativ-Prompt: {combined_negative_prompt}")
|
| 983 |
-
|
| 984 |
|
| 985 |
-
# =====
|
| 986 |
if mode == "face_only_change":
|
| 987 |
face_boosters = "(perfect face:1.2), (symmetrical face:1.1), realistic shaded perfect face, "
|
| 988 |
|
| 989 |
if not any(keyword in prompt.lower() for keyword in
|
| 990 |
-
|
| 991 |
enhanced_prompt = face_boosters + prompt
|
| 992 |
print(f"👤 Gesichts-Booster hinzugefügt: {face_boosters}")
|
| 993 |
else:
|
| 994 |
enhanced_prompt = prompt
|
| 995 |
print(f"👤 Benutzer hat bereits Gesichts-Booster im Prompt")
|
| 996 |
-
|
| 997 |
-
|
|
|
|
| 998 |
|
| 999 |
-
|
| 1000 |
-
|
| 1001 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1002 |
background_boosters = "complete scene, full background, entire environment, "
|
| 1003 |
|
| 1004 |
-
if not any(keyword in
|
| 1005 |
-
|
| 1006 |
-
enhanced_prompt = background_boosters +
|
| 1007 |
print(f"🌳 Hintergrund-Booster hinzugefügt: {background_boosters}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1008 |
|
| 1009 |
print(f"🎯 Finaler Prompt für {mode}: {enhanced_prompt}")
|
| 1010 |
|
|
@@ -1073,7 +1084,6 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
|
| 1073 |
|
| 1074 |
# ===== CONTROLNET-INPAINTING PIPELINE =====
|
| 1075 |
pipe = load_img2img(keep_environment=keep_environment)
|
| 1076 |
-
#pipe = load_img2img() # MUSS StableDiffusionControlNetInpaintPipeline sein!
|
| 1077 |
|
| 1078 |
# ===== SEED UND GENERATOR =====
|
| 1079 |
adj_guidance = min(guidance_scale, 12.0)
|
|
@@ -1086,8 +1096,8 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
|
| 1086 |
|
| 1087 |
# ===== CONTROLNET-GESTEUERTES INPAINTING DURCHFÜHREN =====
|
| 1088 |
print(f"🔄 Führe ControlNet-gesteuertes Inpainting durch...")
|
| 1089 |
-
|
| 1090 |
-
|
| 1091 |
if keep_environment: # Depth + Canny
|
| 1092 |
conditioning_scale = [
|
| 1093 |
controlnet_strength * 0.6, # Depth: 60%
|
|
@@ -1114,7 +1124,6 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
|
| 1114 |
callback_on_step_end_tensor_inputs=[],
|
| 1115 |
)
|
| 1116 |
|
| 1117 |
-
|
| 1118 |
print("✅ ControlNet-Inpainting abgeschlossen")
|
| 1119 |
|
| 1120 |
# ===== KORREKTES COMPOSITING =====
|
|
@@ -1127,8 +1136,8 @@ def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
|
| 1127 |
inpaint_result=generated_image,
|
| 1128 |
original_mask=original_mask,
|
| 1129 |
padding_info=padding_info,
|
| 1130 |
-
bbox_coords=(bbox_x1, bbox_y1, bbox_x2, bbox_y2),
|
| 1131 |
-
mode=mode
|
| 1132 |
)
|
| 1133 |
print(f"✅ Korrektes Compositing durchgeführt")
|
| 1134 |
else:
|
|
|
|
| 926 |
import traceback
|
| 927 |
traceback.print_exc()
|
| 928 |
return None, error_msg
|
| 929 |
+
|
| 930 |
|
| 931 |
|
|
|
|
| 932 |
def img_to_image(image, prompt, neg_prompt, strength, steps, guidance_scale,
|
| 933 |
mode, bbox_x1, bbox_y1, bbox_x2, bbox_y2,
|
| 934 |
progress=gr.Progress()):
|
|
|
|
| 980 |
print(f"ℹ️ Kein manueller Negativ-Prompt, verwende nur automatischen: {combined_negative_prompt}")
|
| 981 |
|
| 982 |
print(f"✅ Finaler kombinierter Negativ-Prompt: {combined_negative_prompt}")
|
|
|
|
| 983 |
|
| 984 |
+
# ===== PROMPT-BOOSTER FÜR DREI MODI =====
|
| 985 |
if mode == "face_only_change":
|
| 986 |
face_boosters = "(perfect face:1.2), (symmetrical face:1.1), realistic shaded perfect face, "
|
| 987 |
|
| 988 |
if not any(keyword in prompt.lower() for keyword in
|
| 989 |
+
["perfect face", "symmetrical", "realistic face", "shaded face"]):
|
| 990 |
enhanced_prompt = face_boosters + prompt
|
| 991 |
print(f"👤 Gesichts-Booster hinzugefügt: {face_boosters}")
|
| 992 |
else:
|
| 993 |
enhanced_prompt = prompt
|
| 994 |
print(f"👤 Benutzer hat bereits Gesichts-Booster im Prompt")
|
| 995 |
+
|
| 996 |
+
elif mode == "focus_change":
|
| 997 |
+
focus_boosters = "(sharp focus:1.2), (detailed subject:1.1), (clear foreground:1.1), "
|
| 998 |
|
| 999 |
+
if not any(keyword in prompt.lower() for keyword in
|
| 1000 |
+
["sharp focus", "detailed subject", "clear foreground", "well-defined"]):
|
| 1001 |
+
enhanced_prompt = focus_boosters + prompt
|
| 1002 |
+
print(f"🎯 Focus-Booster hinzugefügt: {focus_boosters}")
|
| 1003 |
+
else:
|
| 1004 |
+
enhanced_prompt = prompt
|
| 1005 |
+
print(f"🎯 Benutzer hat bereits Focus-Booster im Prompt")
|
| 1006 |
+
|
| 1007 |
+
elif mode == "environment_change":
|
| 1008 |
background_boosters = "complete scene, full background, entire environment, "
|
| 1009 |
|
| 1010 |
+
if not any(keyword in prompt.lower() for keyword in
|
| 1011 |
+
["complete scene", "full background", "entire environment", "whole setting"]):
|
| 1012 |
+
enhanced_prompt = background_boosters + prompt
|
| 1013 |
print(f"🌳 Hintergrund-Booster hinzugefügt: {background_boosters}")
|
| 1014 |
+
else:
|
| 1015 |
+
enhanced_prompt = prompt
|
| 1016 |
+
print(f"🌳 Benutzer hat bereits Hintergrund-Booster im Prompt")
|
| 1017 |
+
else:
|
| 1018 |
+
enhanced_prompt = prompt
|
| 1019 |
|
| 1020 |
print(f"🎯 Finaler Prompt für {mode}: {enhanced_prompt}")
|
| 1021 |
|
|
|
|
| 1084 |
|
| 1085 |
# ===== CONTROLNET-INPAINTING PIPELINE =====
|
| 1086 |
pipe = load_img2img(keep_environment=keep_environment)
|
|
|
|
| 1087 |
|
| 1088 |
# ===== SEED UND GENERATOR =====
|
| 1089 |
adj_guidance = min(guidance_scale, 12.0)
|
|
|
|
| 1096 |
|
| 1097 |
# ===== CONTROLNET-GESTEUERTES INPAINTING DURCHFÜHREN =====
|
| 1098 |
print(f"🔄 Führe ControlNet-gesteuertes Inpainting durch...")
|
| 1099 |
+
|
| 1100 |
+
# Berechne die Gewichtung basierend auf dem Modus
|
| 1101 |
if keep_environment: # Depth + Canny
|
| 1102 |
conditioning_scale = [
|
| 1103 |
controlnet_strength * 0.6, # Depth: 60%
|
|
|
|
| 1124 |
callback_on_step_end_tensor_inputs=[],
|
| 1125 |
)
|
| 1126 |
|
|
|
|
| 1127 |
print("✅ ControlNet-Inpainting abgeschlossen")
|
| 1128 |
|
| 1129 |
# ===== KORREKTES COMPOSITING =====
|
|
|
|
| 1136 |
inpaint_result=generated_image,
|
| 1137 |
original_mask=original_mask,
|
| 1138 |
padding_info=padding_info,
|
| 1139 |
+
bbox_coords=(bbox_x1, bbox_y1, bbox_x2, bbox_y2),
|
| 1140 |
+
mode=mode
|
| 1141 |
)
|
| 1142 |
print(f"✅ Korrektes Compositing durchgeführt")
|
| 1143 |
else:
|