Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -357,6 +357,96 @@ def main_ui():
|
|
| 357 |
"""
|
| 358 |
) as demo:
|
| 359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 360 |
# --- Info-Bereich (Startseite) ---
|
| 361 |
gr.Markdown(
|
| 362 |
"""
|
|
|
|
| 357 |
"""
|
| 358 |
) as demo:
|
| 359 |
|
| 360 |
+
# --- Info-Bereich (Startseite) ---
|
| 361 |
+
gr.Markdown(
|
| 362 |
+
"""
|
| 363 |
+
# Demo-Projekt: Stable Diffusion Text-to-Image / Image-to-Image
|
| 364 |
+
<br>
|
| 365 |
+
|
| 366 |
+
<div class="info-box" style="border-left: 4px solid #4F46E5; background: linear-gradient(135deg, #f8faff 0%, #ffffff 100%);">
|
| 367 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #4F46E5; margin-bottom: 15px;">🎯 Projekt & Kompetenzen</div>
|
| 368 |
+
Dieses 4-Wochen-Projekt ist ein kleines <strong>Demo</strong> um meine zentralen Kompetenzen als <strong>AI-Engineer</strong> – sowohl in der technischen Umsetzung <br>
|
| 369 |
+
als auch in der strukturierten Entwicklung komplexer Workflows zu präsentieren. Es bildet <strong>grundlegende Stable-Diffusion-Prozesse</strong> ab, während ich in anderen <br>
|
| 370 |
+
GPU-basierten Umgebungen <strong>erweiterte Text-to-Image und Image-to-Image-Pipelines mit präzisem Inpainting über ControlNet</strong> realisiere. Durch den Einsatz von <br>
|
| 371 |
+
<strong>multi-modalen Modellen mit höherer Parameteranzahl</strong> wird eine deutlich detailliertere und kontrolliertere Bildgenerierung ermöglicht.
|
| 372 |
+
</div>
|
| 373 |
+
<br>
|
| 374 |
+
|
| 375 |
+
<div class="info-box" style="border-left: 4px solid #10B981; background: linear-gradient(135deg, #f0fdf4 0%, #ffffff 100%);">
|
| 376 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #10B981; margin-bottom: 15px;">📊 Code-Architektur & Roadmap</div>
|
| 377 |
+
Zudem führt der Link
|
| 378 |
+
<a class="clickable-file" href="https://huggingface.co/spaces/Astridkraft/Dokumentation" target="_blank">Roadmap</a>
|
| 379 |
+
zu einer <strong>durchdachten, skalierbaren, professionellen Code-Architektur</strong> für Text-to-Image- und Image-to-Image-Entwicklung <br>
|
| 380 |
+
die die <strong>gesamte Komplexität einer professionellen Umsetzung</strong> verdeutlicht.<br><br>
|
| 381 |
+
Die hiermit gezeigten Fähigkeiten meinerseits sind <strong>sicherlich auf andere Projekte übertragbar</strong>.
|
| 382 |
+
</div>
|
| 383 |
+
<br>
|
| 384 |
+
|
| 385 |
+
<div class="info-box" style="border-left: 4px solid #F59E0B; background: linear-gradient(135deg, #fffbeb 0%, #ffffff 100%);">
|
| 386 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #F59E0B; margin-bottom: 15px;">⚠️ Wichtiger Hinweis</div>
|
| 387 |
+
<strong>Hinweis:</strong><br>
|
| 388 |
+
Die Anwendung läuft derzeit auf <strong>CPU</strong> ist jedoch <strong>vollständig GPU-fähig </strong>.
|
| 389 |
+
Deshalb muss bei jeder Generierung eine <strong>längere Wartezeit</strong> eingeplant werden.<br>
|
| 390 |
+
Bei <strong>Verbindungsabbrüchen</strong> -insbesondere bei CPU-Nutzung- wird die aktuelle Generierung zunächst serverseitig vollständig abgeschlossen, <br>
|
| 391 |
+
bevor neue Anfragen bearbeitet werden. Das generierte Bild wird in diesem Fall <strong>nicht angezeigt</strong>.
|
| 392 |
+
Die Meldung <strong>Connection re-established</strong> signalisiert, dass <br>
|
| 393 |
+
die Verbindung wiederhergestellt wurde, die laufende Verarbeitung jedoch priorisiert wird. In der Konsequenz werden neue <br>
|
| 394 |
+
Generierungsanfragen in eine Warteschlange gestellt und erst nach vollständigem Abschluss der aktuellen serverseitigen Berechnung verarbeitet.
|
| 395 |
+
</div>
|
| 396 |
+
<br>
|
| 397 |
+
|
| 398 |
+
<div class="info-box" style="border-left: 4px solid #EF4444; background: linear-gradient(135deg, #fef2f2 0%, #ffffff 100%);">
|
| 399 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #EF4444; margin-bottom: 15px;">🔧 Technischer Hintergrund</div>
|
| 400 |
+
<strong>Technischer Hintergrund zu Verbindungsabbrüchen:</strong><br>
|
| 401 |
+
Die Anwendung nutzt <strong>Gradio auf Hugging Face Spaces</strong> - eine Technologie, die <strong>keine temporäre Speicherung</strong>
|
| 402 |
+
generierter Bilder vorsieht. Jede Verbindung <br> wird als <strong>unabhängige Sitzung</strong> behandelt.
|
| 403 |
+
Dies wird <strong>besonders bei CPU-Nutzung relevant</strong>, da längere Transformationszeiten die Wahrscheinlichkeit
|
| 404 |
+
für <br> Timeouts und Seiten-Neuladungen erhöhen. Obwohl die Bildgenerierung serverseitig vollständig abgeschlossen wird,
|
| 405 |
+
kann das Ergebnis bei <br> Verbindungsunterbrechungen <strong>nicht an die neu geladene Seite übermittelt</strong> werden.<br><br>
|
| 406 |
+
</div>
|
| 407 |
+
<br>
|
| 408 |
+
|
| 409 |
+
<div class="info-box" style="border-left: 4px solid #8B5CF6; background: linear-gradient(135deg, #faf5ff 0%, #ffffff 100%);">
|
| 410 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #8B5CF6; margin-bottom: 15px;">🔄 Anwendungsbereich & Workflow</div>
|
| 411 |
+
<strong>Anwendungsbereich</strong><br>
|
| 412 |
+
Die Bild-zu-Bild-Transformation ermöglicht die <strong>gezielte Modifikation bestehender Bildelemente</strong> -
|
| 413 |
+
beispielsweise die Umwandlung einer Laterne <br> in eine Fackel, einer Katze in einen Hund, oder die Versetzung einer Person
|
| 414 |
+
vom Büro an einen tropischen Strand bei Beibehaltung des Gesichts.<br>
|
| 415 |
+
Es können <strong>keine neuen Objekte generiert</strong>, sondern ausschließlich <strong>vorhandene Elemente transformiert</strong> werden.<br><br>
|
| 416 |
+
|
| 417 |
+
Die Funktion unterstützt zwei operative Modi:<br>
|
| 418 |
+
• <strong>Kontexttransformation:</strong> Veränderung der Umgebung bei Beibehaltung eines markierten Bildbereichs (z.B. Gesicht)<br>
|
| 419 |
+
• <strong>Fokustransformation:</strong> Veränderung eines markierten Bereichs (z.B. Objekt) bei Beibehaltung der Umgebung<br><br>
|
| 420 |
+
|
| 421 |
+
<strong>Optimale Workflow-Empfehlung:</strong><br>
|
| 422 |
+
Zur Gewährleistung optimaler Ergebnisse werden Bilder im Format <strong>512×512 Pixel</strong> verarbeitet.
|
| 423 |
+
Ein effizienter Workflow umfasst:<br>
|
| 424 |
+
1. Generierung von Basis-Bildern über <strong>Text-zu-Bild</strong><br>
|
| 425 |
+
2. Gezielte Transformation über <strong>Bild-zu-Bild</strong><br>
|
| 426 |
+
3. Optionale Textintegration auf generierten oder originalen Basis-Bildern<br><br>
|
| 427 |
+
|
| 428 |
+
<strong>Textintegration:</strong> Beide Arbeitsbereiche bieten die Möglichkeit zur <strong>flexiblen Textintegration</strong> auf generierten sowie originalen Bildvorlagen.
|
| 429 |
+
</div>
|
| 430 |
+
<br>
|
| 431 |
+
|
| 432 |
+
<div class="info-box" style="border-left: 4px solid #EC4899; background: linear-gradient(135deg, #fdf2f8 0%, #ffffff 100%);">
|
| 433 |
+
<div style="font-size: 1.2em; font-weight: bold; color: #EC4899; margin-bottom: 15px;">💡 Empfehlungen & Best Practices</div>
|
| 434 |
+
<strong>Empfehlung:</strong><br>
|
| 435 |
+
Für eine präzise Abstimmung der zentralen Parameter – Prompt, Negativ-Prompt, Veränderungsstärke (Strength), Inferenz-Schritte (Steps) <br>
|
| 436 |
+
und Prompt-Stärke (Guidance) – liefern leistungsfähige Sprachmodelle wie GPT, Grok oder DeepSeek hochqualitative, kontextbezogene Vorschläge.<br>
|
| 437 |
+
Prompt und Negativ-Prompt sollten auf <strong>Englisch</strong> eingegeben werden, da "Stable Diffusion" mit Bild-Text-Paaren auf Englisch trainiert <br>
|
| 438 |
+
wurde und CLIP einen Tokenizer für ein englisches Vokabular nutzt. Der CLIP-Tokenizer hat außerdem ein <strong>Limit von 77 Token</strong>, wodurch längere <br>
|
| 439 |
+
Prompteingaben automatisch abgeschnitten werden. Deutsche Wörter werden zwar übersetzt, führen aber zu Verzerrungen.
|
| 440 |
+
</div>
|
| 441 |
+
<br>
|
| 442 |
+
|
| 443 |
+
<div style="text-align: center; margin-top: 30px; padding: 25px; background: linear-gradient(135deg, #4F46E5 0%, #7C3AED 100%); color: white; border-radius: 12px;">
|
| 444 |
+
<div style="font-size: 1.4em; font-weight: bold; margin-bottom: 10px;">🚀 Bereit für die AI-Bildgenerierung?</div>
|
| 445 |
+
Starten Sie jetzt mit der Erkundung der Text-zu-Bild und Bild-zu-Bild Funktionen!
|
| 446 |
+
</div>
|
| 447 |
+
"""
|
| 448 |
+
)
|
| 449 |
+
|
| 450 |
# --- Info-Bereich (Startseite) ---
|
| 451 |
gr.Markdown(
|
| 452 |
"""
|