HerrKI mit seinem RoboterHerrKI KI verstehen · nachbauen · anwenden ⭐ 0 XP

Aus Rauschen wird Bild (Diffusion)

Zerstöre ein Bild in 20 Rausch-Schritten — und sieh dann, wie ein Entrausch-Schritt, 20-mal angewendet, aus purem Grieß wieder ein Motiv formt. Plus: was der Prompt dabei wirklich tut.

👋 HerrKI hier — heute malen wir rückwärts

Midjourney, Stable Diffusion, DALL-E: Alle großen Bild-KIs arbeiten nach demselben, fast frech simplen Prinzip — Diffusion. Es besteht aus einer leichten und einer schweren Hälfte. Die leichte kannst du gleich selbst erledigen: ein Bild kaputt machen.

Vorwärts: Bild → Rauschen (kinderleicht)

Nimm ein Bild und mische in 20 Schritten immer mehr Zufallszahlen hinein, bis nur noch Grieß übrig ist. Das kann jeder Taschenrechner — dafür braucht niemand eine KI:

🎚️ Schiebe das Bild ins Rauschen — und wieder zurück

0 / 20
💡 Merkst du den Unterschied der Richtungen? Vorwärts (Regler nach rechts) ist stumpfes Zufalls-Mischen. Rückwärts (Entrauschen-Knopf) muss aus dem Grieß erraten, wo Kanten und Flächen waren — die ersten Schritte bringen viel Struktur zurück, der letzte Feinschliff ist am schwersten. Genau DIESE Richtung ist das, was eine Bild-KI lernt.

Der Trick: Ein Modell lernt EINEN Schritt — und wird 20-mal angewendet

Beim Training bekommt das Netz millionenfach Paare gezeigt: „Hier ein verrauschtes Bild — sag mir, welches Rauschen drinsteckt.“ Es lernt also nur eine einzige Fähigkeit: einen Schritt Rauschen abziehen. Bei der Bild-Erzeugung startet man dann mit purem Zufalls-Rauschen und wendet diesen einen gelernten Schritt 20-, 30-, 50-mal hintereinander an. Aus Nichts entsteht ein Bild.

🧭 Und was macht der Prompt? Er lenkt jeden Schritt

Zwei identische Rausch-Felder, dieselben Entrausch-Schritte — aber links flüstert der Prompt „❤️ Herz“ in jeden Schritt hinein, rechts läuft es ohne Lenkung:

⚠️ Ehrlichkeits-Hinweis: Diese Demo ist eine stark vereinfachte Veranschaulichung des Prinzips (unser „Modell“ ist ein kleiner Filter + Lenkung). Echte Diffusionsmodelle sagen das Rauschen mit einem trainierten neuronalen Netz voraus — der Ablauf Rauschen → gelenktes schrittweises Entrauschen → Bild ist aber exakt derselbe.

🔬 Runter zum Tensor

Du kennst alle Bausteine schon — also rechnen wir einen Schritt mit der Hand nach. Wir nehmen dafür nur vier Pixel aus dem Motiv (zum Mitrechnen verkleinert — ein 512×512-Farbbild sind in echt 786.432 Zahlen). Jede Zahl ist eine Helligkeit von 0 = schwarz bis 1 = weiß:

// VORWAERTS — genau das macht dein Regler bei Schritt 4 von 20, also t = 0.20 Motiv-Pixel [4]: 0.620 0.300 0.850 0.440 ← vier Graustufen aus dem Bild Rausch-Pixel [4]: 0.910 0.140 0.070 0.680 ← ein Wuerfelwurf pro Pixel // verrauscht = bild · (1 − t) + rauschen · t Pixel 1: 0.620·0.80 + 0.910·0.20 = 0.496 + 0.182 = 0.678 Pixel 2: 0.300·0.80 + 0.140·0.20 = 0.240 + 0.028 = 0.268 Pixel 3: 0.850·0.80 + 0.070·0.20 = 0.680 + 0.014 = 0.694 Verrauscht [4]: 0.678 0.268 0.694 0.488 ← genau das zeigt dir das Canvas oben

Das war die leichte Hälfte: vier Multiplikationen, vier Additionen. Jetzt die schwere Richtung. Das Netz bekommt nur die verrauschte Zeile zu sehen und soll sagen, welches Rauschen darin steckt. Es rät gut — aber nie perfekt:

// RUECKWAERTS — ein einziger Entrausch-Schritt Netz schaetzt: 0.890 0.160 0.110 0.660 ← geschaetzt = modell.predict(verrauscht) Wirklich war es: 0.910 0.140 0.070 0.680 ← dicht dran, aber daneben // abziehen und wieder auf volle Staerke bringen: (verrauscht − t·geschaetzt) / (1 − t) Pixel 1: (0.678 − 0.20·0.890) / 0.80 = 0.500 / 0.80 = 0.625 Pixel 2: (0.268 − 0.20·0.160) / 0.80 = 0.236 / 0.80 = 0.295 Wieder da [4]: 0.625 0.295 0.840 0.445 Original war [4]: 0.620 0.300 0.850 0.440 ← fast zurueck, nur nicht ganz

Dieses „nur nicht ganz“ ist kein Makel, sondern der Grund für die vielen Schritte: Jeder Durchlauf holt ein Stück Struktur zurück, der nächste bügelt nebenbei den Schätzfehler des vorigen aus. Zwanzigmal hintereinander — und aus Grieß wird ein Bild.

Und so heißt genau diese Rechnung im Code. Statt vier Pixeln steht dort der ganze Bild-Tensor, Form [512, 512, 3] — die Arithmetik pro Zahl ist aber Zeile für Zeile dieselbe wie oben:

// Ein Bild ist ein Tensor (Kapitel 020). Rauschen ist ein Zufalls-Tensor gleicher Form. verrauscht = bild.mul(1 - t).add( rauschen.mul(t) ) // vorwaerts: dein Regler // rueckwaerts lernt das Netz: sage das Rauschen voraus … geschaetzt = modell.predict(verrauscht) // … und zieh es ein Stueck ab. 20x wiederholen -> Bild.

Und jetzt der Bogen zu „Latent Space“: Moderne Bild-KIs entrauschen nicht die Pixel selbst, sondern die komprimierte Latent-Version des Bildes — bei Stable Diffusion z. B. 64×64×4 = 16.384 Zahlen statt 786.432 Pixel-Werte (rund 48-mal weniger). Deshalb schafft dein Grafikchip das in Sekunden.

Zurück zur Anwendung

Wenn du das nächste Mal einer Bild-KI beim „Malen“ zusiehst — dieses Schärferwerden von grobem Matsch zu feinen Details — dann siehst du in Echtzeit genau deine Entrausch-Schleife von oben: Rauschen rein, Prompt lenkt, Schritt für Schritt Richtung Motiv. Keine Magie. Ein gelernter Schritt, oft wiederholt.

🧠 Kurzer Check — hast du es?

1. Was lernt ein Diffusionsmodell im Training?
2. Welche Rolle spielt der Text-Prompt beim Bild-Erzeugen?
3. Warum arbeiten moderne Bild-KIs im Latent Space statt direkt auf Pixeln?