0Pricing
Learn AI with Python · Lekcja

Warunkowe GAN-y i transfer stylu

cGAN z warunkowaniem klasą, koncepcja CycleGAN, neuronalny transfer stylu za pomocą VGG.

Warunkowe GAN-y i transfer stylu to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Sterowanie generowanymi danymi GAN

Zwykły GAN generuje losowe próbki, więc nie można poprosić go o konkretną klasę. W tej lekcji omówiono generowanie warunkowe (cGAN), translację obrazów bez par (CycleGAN) oraz neuronowy transfer stylu.

Warunkowe GAN (cGAN)

cGAN dodaje warunek, na przykład etykietę klasy, zarówno do generatora, jak i do dyskryminatora. Teraz można poprosić o „wygenerowanie 7”, przekazując etykietę razem z szumem.

Warunkowanie generatora

Generator łączy etykietę (zakodowaną one-hot lub osadzoną) z wektorem szumu. Połączone wejście pozwala mu generować próbki należące do żądanej klasy.

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)

Warunkowanie dyskryminatora

Dyskryminator również otrzymuje etykietę, więc ocenia nie tylko „czy to jest prawdziwe?”, lecz także „czy to jest prawdziwy przykład tej klasy?”. Zmusza to generator do respektowania warunku.

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

Translacja obrazów bez par

Często brakuje dopasowanych par, na przykład tego samego konia przedstawionego jako zebra. CycleGAN tłumaczy obrazy między dwiema domenami, korzystając z obrazów niepołączonych w pary, i uczy się translacji z konia na zebrę oraz z powrotem bez wyrównanych przykładów.

Dwaj generatorzy, dwie domeny

CycleGAN używa dwóch generatorów: G: A to B i F: B to A, z których każdy ma własny dyskryminator. Razem wykonują translację w obu kierunkach między domenami.

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

Strata spójności cyklu

Kluczowa idea jest następująca: przetłumaczenie obrazu z A do B, a następnie z powrotem do A, powinno zwrócić oryginał. Strata spójności cyklu wymusza zależność F(G(a)) == a, ograniczając odwzorowanie bez danych sparowanych.

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

Neuronowy transfer stylu

Neuronowy transfer stylu łączy zawartość jednego obrazu ze stylem innego, na przykład przekształca zdjęcie tak, aby wyglądało jak obraz Van Gogha. Optymalizuje bezpośrednio obraz wynikowy, korzystając z cech wstępnie wytrenowanej sieci CNN.

Strata zawartości

Strata zawartości zachowuje strukturę wysokiego poziomu obrazu wynikowego, zbliżając ją do obrazu zawartości poprzez dopasowanie głębokich map cech CNN. Zachowuje to, co znajduje się na obrazie.

content_loss = mse(features_out, features_content)

Strata stylu i macierz Grama

Styl jest reprezentowany przez macierz Grama, czyli korelacje między kanałami cech. Dopasowanie macierzy Grama przenosi tekstury i kolory. Strata stylu porównuje macierze Grama obrazu wynikowego i obrazu stylu.

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))

Łączenie strat

Całkowita strata jest sumą ważoną: alpha * content_loss + beta * style_loss. Dostosowanie wag pozwala ustalić kompromis między zachowaniem zawartości a siłą, z jaką wynik przejmuje styl.

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

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat generowania warunkowego.

Podsumowanie: warunkowe GAN i transfer stylu

Poznano, że cGAN łączy etykietę klasy z wejściem generatora (i dyskryminatora), aby umożliwić sterowane generowanie, CycleGAN wykorzystuje stratę spójności cyklu do translacji obrazów bez par, a neuronowy transfer stylu łączy stratę zawartości ze stratą stylu opartą na macierzy Grama, aby przekształcać obrazy.

Często zadawane pytania

Czy lekcja „Warunkowe GAN-y i transfer stylu” jest bezpłatna?

Tak — pełny tekst „Warunkowe GAN-y i transfer stylu” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Warunkowe GAN-y i transfer stylu”?

cGAN z warunkowaniem klasą, koncepcja CycleGAN, neuronalny transfer stylu za pomocą VGG. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Warunkowe GAN-y i transfer stylu”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Autoenkodery do uczenia reprezentacji
  2. Wariacyjne autoenkodery (VAE)
  3. GAN-y: generator i dyskryminator
  4. Warunkowe GAN-y i transfer stylu
← Powrót do Learn AI with Python