Astridkraft commited on
Commit
2a56c1f
·
verified ·
1 Parent(s): c549bbf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +2 -83
app.py CHANGED
@@ -394,91 +394,10 @@ def main_ui():
394
  """
395
  ) as demo:
396
 
397
- # --- Info-Bereich (Startseite) ---
398
- gr.Markdown(
399
- """
400
- # Demo-Projekt: Stable Diffusion Text-to-Image / Image-to-Image
401
- <br>
402
-
403
- <div class="info-box">
404
- Dieses Projekt ist ein kleines <strong>Demo</strong> um meine Fähigkeiten als <strong>AI-Engineer</strong>
405
- in technischer Kompetenz und selbstständiger Projektstrukturierung zu zeigen.<br>
406
- Der Fokus liegt auf <strong>Struktur, Konzept und technischer Umsetzung</strong>
407
- im Bereich Text-to-Image / Image-to-Image mit dem Diffusionsmodell "Stable Diffusion" <br>
408
- <strong>nicht</strong> auf einer vollständigen Produktionsversion.
409
- </div>
410
- <br>
411
-
412
- <div class="info-box">
413
- Zudem führt der Link
414
- <a class="clickable-file" href="https://huggingface.co/spaces/Astridkraft/Dokumentation" target="_blank">Roadmap</a>
415
- zu einer <strong>durchdachten, skalierbaren, professionellen Code-Architektur</strong> für Text-to-Image- und Image-to-Image-Entwicklung <br>
416
- die die <strong>gesamte Komplexität einer professionellen Umsetzung</strong> verdeutlicht.<br><br>
417
- Die damit gezeigten Fähigkeiten meinerseits sind <strong>sicherlich auf andere Projekte übertragbar</strong>.
418
- </div>
419
- <br><br>
420
-
421
- <div class="info-box">
422
- <strong>Hinweis:</strong><br>
423
- Die Anwendung läuft derzeit auf <strong>CPU</strong> ist jedoch <strong>vollständig GPU-fähig </strong>.
424
- Deshalb muss bei jeder Generierung eine <strong>längere Wartezeit</strong> eingeplant werden.<br>
425
- Bei <strong>Verbindungsabbrüchen</strong> -insbesondere bei CPU-Nutzung- wird die aktuelle Generierung zunächst serverseitig vollständig abgeschlossen, <br>
426
- bevor neue Anfragen bearbeitet werden. Das generierte Bild wird in diesem Fall <strong>nicht angezeigt</strong>.
427
- Die Meldung <strong>Connection re-established</strong> signalisiert, dass <br>
428
- die Verbindung wiederhergestellt wurde, die laufende Verarbeitung jedoch priorisiert wird. In der Konsequenz werden neue <br>
429
- Generierungsanfragen in eine Warteschlange gestellt und erst nach vollständigem Abschluss der aktuellen serverseitigen Berechnung verarbeitet.
430
- </div>
431
- <br>
432
-
433
- <div class="info-box">
434
- <strong>Technischer Hintergrund:</strong> <br>
435
- Es handelt sich um einen bekannten <strong>Gradio-Bug</strong> - das Framework bietet keine Möglichkeit, generierte Bilder zwischenzuspeichern <br>
436
- um sie bei UI-Neuladung aus dem Zwischenspeicher zurückzugeben. Dies macht sich <strong>besonders bei CPU-Nutzung bemerkbar</strong>, <br>
437
- da die Transformationszeiten hier deutlich länger sind und es dadurch vermehrt zu Timeouts und daraus resultierenden UI-Abbrüchen kommen kann.<br>
438
- Aus diesem Grund kann das Ergebnis nicht an die neu geladene Benutzeroberfläche übermittelt werden obwohl die Bildgenerierung serverseitig <br>
439
- vollständig abgeschlossen wird.
440
- </div>
441
- <br>
442
-
443
- <div class="info-box">
444
- <strong>Anwendungsbereich:</strong><br>
445
- Die <strong>Bild-zu-Bild-Funktion</strong> ermöglicht eine gezielte Bearbeitung eines <strong>beliebigen Objektes oder Bereiches</strong> in einem Bild.<br>
446
- Sie unterstützt zwei Modi:<br>
447
- &nbsp;&nbsp;• <strong>Beibehaltung eines ausgewählten Bildbereiches innerhalb eines Rechtecks</strong> (z. B. Gesicht, Objekt, Tier, Gegenstand) bei Veränderung des Rests,<br>
448
- &nbsp;&nbsp;• oder <strong>Veränderung des rechteckigen Bildbereiches</strong> bei Erhaltung der Umgebung.<br>
449
- <br>
450
- <strong>Wichtig:</strong> Das Objekt das beibehalten oder verändert werden soll - je nach gewähltem Modus - muss <strong>im Prompt</strong> klar beschrieben werden.<br>
451
- Die Verwendung eines <strong>Negativ-Promptes</strong> ist sinnvoll, um unerwünschte Veränderungen zu vermeiden.
452
- </div>
453
- <br>
454
-
455
- <div class="info-box">
456
- <strong>Empfehlung:</strong><br>
457
- Für eine präzise Abstimmung der zentralen Parameter – Prompt, Negativ-Prompt, Veränderungsstärke (Strength), Inferenz-Schritte (Steps) <br>
458
- und Prompt-Stärke (Guidance) – liefern leistungsfähige Sprachmodelle wie GPT, Grok oder DeepSeek hochqualitative, kontextbezogene Vorschläge.<br>
459
- Prompt und Negativ-Prompt sollten auf <strong>Englisch</strong> eingegeben werden, da "Stable Diffusion" mit Bild-Text-Paaren auf Englisch trainiert <br>
460
- 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>
461
- Prompteingaben automatisch abgeschnitten werden. Deutsche Wörter werden zwar übersetzt, führen aber zu Verzerrungen.
462
- </div>
463
- """
464
- )
465
-
466
- # --- Button zentriert im unteren Drittel, Taupe-Farbe ---
467
- with gr.Row():
468
- with gr.Column(scale=1): # Linker Leerraum
469
- pass
470
- with gr.Column(scale=1, min_width=300): # Mittig, feste Mindestbreite
471
- start_btn = gr.Button(
472
- "Weiter zur Anwendung",
473
- variant="primary",
474
- size="lg",
475
- elem_id="start-button"
476
- )
477
- with gr.Column(scale=1): # Rechter Leerraum
478
- pass
479
 
480
  # --- Hauptanwendungsbereich (zunächst versteckt) ---
481
- with gr.Column(visible=False) as content_area:
482
  with gr.Tab("Text zu Bild"):
483
  gr.Markdown("**Beschreibe dein gewünschtes Bild (maximal 77 Token):**")
484
 
 
394
  """
395
  ) as demo:
396
 
397
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
 
399
  # --- Hauptanwendungsbereich (zunächst versteckt) ---
400
+ with gr.Column(visible=True) as content_area:
401
  with gr.Tab("Text zu Bild"):
402
  gr.Markdown("**Beschreibe dein gewünschtes Bild (maximal 77 Token):**")
403