0Pricing
Learn AI with Python · Lektion

Bedingte GANs und Style Transfer

cGAN mit Klassenkonditionierung, CycleGAN-Konzept, neuronaler Style Transfer mit VGG.

Bedingte GANs und Style Transfer ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Kontrollieren, was GANs generieren

Ein einfaches GAN erzeugt zufällige Beispiele; Sie können keine bestimmte Klasse anfordern. In dieser Lektion geht es um konditionierte Generierung (cGANs), ungepaarte Übersetzung (CycleGAN) und neuronale Stilübertragung.

Konditionierte GANs (cGAN)

Ein cGAN fügt sowohl dem Generator als auch dem Diskriminator eine Bedingung hinzu, beispielsweise ein Klassenlabel. Nun können Sie „eine 7 generieren“ anfordern, indem Sie das Label zusammen mit dem Rauschen eingeben.

Den Generator konditionieren

Der Generator konkateniert das Label (one-hot-kodiert oder eingebettet) mit dem Rauschvektor. Durch die kombinierte Eingabe kann er Beispiele der angeforderten Klasse erzeugen.

label_emb = embedding(label)        # e.g. dim 10
z = torch.randn(batch, 100)
gen_input = torch.cat([z, label_emb], dim=1)
fake = generator(gen_input)

Den Diskriminator konditionieren

Auch der Diskriminator erhält das Label. Er beurteilt daher nicht nur „Ist das echt?“, sondern „Ist das ein echtes Beispiel dieser Klasse?“. Dadurch wird der Generator gezwungen, die Bedingung zu beachten.

d_input = torch.cat([image, label_emb], dim=1)
score = discriminator(d_input)

Ungepaarte Bildübersetzung

Oft fehlen passende Paare, zum Beispiel dasselbe Pferd als Zebra. CycleGAN übersetzt zwischen zwei Domänen mithilfe ungepaarter Bilder und lernt die Übersetzung von Pferd zu Zebra und zurück, ohne ausgerichtete Beispiele.

Zwei Generatoren, zwei Domänen

CycleGAN verwendet zwei Generatoren: G: A to B und F: B to A, jeweils mit einem eigenen Diskriminator. Zusammen übersetzen sie in beide Richtungen zwischen den Domänen.

# G: photo -> painting
# F: painting -> photo

Verlust der Zykluskonsistenz

Die zentrale Idee lautet: Eine Übersetzung von A nach B und zurück nach A sollte das Original ergeben. Der Verlust der Zykluskonsistenz erzwingt F(G(a)) == a und schränkt dadurch die Abbildung auch ohne gepaarte Daten ein.

cycle_loss = (
    l1(F(G(a)), a) +
    l1(G(F(b)), b)
)

Neuronale Stilübertragung

Neuronale Stilübertragung verbindet den Inhalt eines Bildes mit dem Stil eines anderen, beispielsweise ein Foto, das wie ein Gemälde von Van Gogh aussieht. Das Ausgabebild wird direkt optimiert, wobei Merkmale eines vortrainierten CNN verwendet werden.

Inhaltsverlust

Der Inhaltsverlust hält die übergeordnete Struktur der Ausgabe nahe am Inhaltsbild, indem tiefe CNN-Feature-Maps abgeglichen werden. Er bewahrt, was im Bild zu sehen ist.

content_loss = mse(features_out, features_content)

Stilverlust und Gram-Matrix

Der Stil wird durch die Gram-Matrix erfasst, also durch die Korrelationen zwischen Feature-Kanälen. Durch das Abgleichen der Gram-Matrizen werden Texturen und Farben übertragen. Der Stilverlust vergleicht die Gram-Matrizen der Ausgabe und des Stilbilds.

def gram(f):
    b, c, h, w = f.size()
    f = f.view(c, h * w)
    return f @ f.t()

style_loss = mse(gram(features_out), gram(features_style))

Die Verluste kombinieren

Der Gesamtverlust ist eine gewichtete Summe: alpha * content_loss + beta * style_loss. Durch die Anpassung der Gewichte legen Sie fest, wie stark das Ergebnis den Inhalt bewahrt und wie stark es den Stil übernimmt.

total = alpha * content_loss + beta * style_loss
total.backward()  # gradients update the output IMAGE

Kurzer Test

Testen Sie Ihr Verständnis der konditionierten Generierung.

Zusammenfassung: Konditionierte GANs und Stilübertragung

Sie haben gelernt, dass cGANs ein Klassenlabel an die Eingabe des Generators (und Diskriminators) konkatenieren, um die Generierung zu steuern, dass CycleGAN für ungepaarte Übersetzungen den Verlust der Zykluskonsistenz verwendet und dass die neuronale Stilübertragung den Inhaltsverlust mit einem Gram-Matrix-Stilverlust kombiniert, um Bilder neu zu gestalten.

Häufig gestellte Fragen

Ist die Lektion „Bedingte GANs und Style Transfer“ kostenlos?

Ja — der vollständige Text von „Bedingte GANs und Style Transfer“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bedingte GANs und Style Transfer“?

cGAN mit Klassenkonditionierung, CycleGAN-Konzept, neuronaler Style Transfer mit VGG. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Bedingte GANs und Style Transfer“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Autoencoder für Repräsentationslernen
  2. Variational Autoencoder (VAE)
  3. GANs: Generator und Diskriminator
  4. Bedingte GANs und Style Transfer
← Zurück zu Learn AI with Python