
Wir sprachen über die Abschlussprojekte von Absolventen von Semesterkursen zur mobilen Entwicklung im Technopark (Bauman Moscow State Technical University) (frühere Veröffentlichungen: " Anwendungsentwicklung für iOS ", " Entwicklung von Anwendungen für Android "). Heute teilen wir interessante Projekte von Studenten des zweiten Semesters der Technosphäre - ein gemeinsames Bildungsprojekt mit der Moskauer Staatlichen Universität mit einem jährlichen Schulungsprogramm auf dem Gebiet der Analyse und der Arbeit mit großen Datenmengen. Die Studierenden belegen Kurse in maschinellem Lernen, Informationssuche, neuronalen Netzen und anderen Disziplinen. Die Projektmethode wird im Unterricht verwendet, daher fassen wir die Ergebnisse des Semesters zur Verteidigung studentischer Projekte zusammen.
Experimente spielen eine wichtige Rolle im Bildungsprozess. Studentenprojekte können nicht ohne sie auskommen: Die Jungs probieren verschiedene Ansätze, Methoden, Architekturen und Werkzeuge aus. Oft geben die Schüler nach dem Experiment die Wahl der Technologie und des Algorithmus zugunsten eines neuen Ansatzes auf. Dies ist ein großer Teil der Erfahrung und des Lernens. Im Folgenden werden wir über solche Phasen in der Entwicklung von zwei Studentenprojekten sprechen.
- Filmplakate GAN / Projekt einbetten.
- Cyrclegan-Projekt zur Zeichentrickserie.
CycleGAN auf Zeichentrickserie
Die Autoren dieses Projekts entschieden sich für die CycleGAN-Technik, um Bilder von einem Animationsfilm auf einen anderen zu übertragen. GAN (Generative Adversarial Network) ist eine Methode zum Trainieren von Bild-zu-Bild-Modellen. Es werden zwei neuronale Netze trainiert: der Diskriminator und der Generator, die in kontroversen Beziehungen stehen. Der Generator versucht, den Klassifizierungsfehler zu erhöhen, der Diskriminator versucht, ihn zu verringern. Und CycleGAN ist eine Methode zum Übertragen von Bild-zu-Bild-Lernen im unbeaufsichtigten Modus.
Angenommen, es gibt zwei Bilddomänen - A und B. Es werden zwei Generatoren und zwei Diskriminatoren erstellt: gen_A2B, gen_B2A, disc_A, disc_B. Der Generator gen_A2B muss aus dem Bild von A dasselbe Bild erstellen, jedoch in der Domäne B. Geben Sie dazu den Zykluskonsistenzverlust ein:
l1loss(gen_b2a(gen_a2b(a)), a)
In diesem Fall erzeugt der Generator Bilder, die den Diskriminator täuschen, aber gleichzeitig den ursprünglichen Inhalt beibehalten.
Lösungsarchitektur:
Generator:

Mit Resnet-Blöcken können Sie sich das Originalbild merken. Wir haben auch die Instanznormalisierung anstelle der Batch-Normalisierung verwendet, da letztere das Rauschen anderer Bilder hinzufügt.
Diskriminator:

Da es keine vorgefertigten Bilder gab, wählten wir Bilder aus Keyframes von Anime-Filmen in voller Länge: Für A verwendeten wir "Spirited Away" von Hayao Miyazaki und für B "Your Name" von Makoto Shinkai. Da CycleGAN für drastische Änderungen (z. B. Form) nicht sehr geeignet ist, haben die Autoren beide Domänen aus dem Anime übernommen.
Zuerst wurde LSGAN als Verlustfunktion und dann WGAN GP verwendet, da LSGAN während des Trainings seltsame Artefakte erzeugte und Farben verlor.
Für das Training verwendeten wir ein Modell, das auf Horse2zebra vorab trainiert wurde (Gewichte wurden nur für Generatoren gefunden). Sie hat bereits das Verständnis, dass sie den Inhalt des Bildes speichern muss, so dass die Autoren am Anfang einen guten Autoencoder bekamen, der nur lernen musste, wie man den Diskriminator täuscht.
Zu Beginn des Trainings haben wir einen hohen Wert für den Verlust der Identität bei Zyklusverlust und das Abschneiden von Gradienten festgelegt. Als jedoch genügend Epochen vergangen waren, haben wir beschlossen, diese Werte schrittweise zu verringern, damit der Generator versucht, den Diskriminator ein wenig mehr zu betrügen.
Wir haben auch versucht, große vorab trainierte Netzwerke (VGG, RESNET, Inception) als Diskriminator zu verwenden, aber sie sind sehr groß und das Training hat sich stark verlangsamt.
Infolgedessen gelang es der Arbeit, die Tatsache zu erreichen, dass der Stil nahe am Original übertragen wird, wobei das allgemeine Farbschema beibehalten wurde (Originale oben, generierte Bilder unten):




Projektcode: https://github.com/IlyasKharunov/Cyclegan_project
Projektteam: Ilyas Kharunov, Oleg Verbin.
Video mit Projektschutz .
Filmplakate GAN / einbetten
Das nächste Projekt ist aus der Sicht des Weges, den der Student eingeschlagen hat, interessant. Im Gegensatz zu anderen Studentenprojekten hat Dmitry die Arbeit selbst gemacht. Dieser Weg erwies sich als schwieriger als der anderer, aber die Ergebnisse und Schlussfolgerungen sind interessant.
Der Autor beschloss, ein Netzwerk zu schaffen, das Plakate für Filme in den jeweiligen Genres generiert. Zum Beispiel, um Plakate für Horrorfilme in dunklen Farben, für Komödien in hellen Farben und dergleichen zu haben.
Von der IMDB-Website nahm der Autor für den Zeitraum 1970-2020 41.000 Plakate für Filme in zwanzig Genres. Später stellte sich heraus, dass es für einige Genres zu wenige Bilder gab, sodass Dmitry das Set nach Genres ausbalancierte und 32.000 Poster übrig blieben.
Anschließend wandte der Student ein neuronales Netzwerk mit DCGAN-Architektur an, um genrlose Bilder zu erzeugen. Sie arbeitete mit Plakaten in der Größe 64x128.

Die Ergebnisse sind lächerlich:

Dann versuchte der Autor die CVAE + DCGAN-Architektur:

Und auch VAE ohne GAN und GAN mit Klassifikator. Kam zu dem Schluss, dass der zusammengestellte Satz von Postern für diese Methoden zu komplex ist. Dann wendete der Autor bedingtes GAN an: Dies ist dasselbe wie DCGAN, nur Genres wurden jetzt sowohl in den Generator als auch in den Diskriminator eingespeist. Der latente Vektor z wurde mit einer Länge von 100 aufgenommen, Genres im heißen Format mit einer Länge von 20, was zu einem Vektor mit einer Länge von 120 führte. Das Genre wurde zur Antwort hinzugefügt und ein zusätzlicher Lauf wurde über eine lineare Schicht durchgeführt.
Ich habe folgendes Ergebnis erzielt:

Wie Sie sehen, war der Student daran interessiert, verschiedene Ansätze auszuprobieren, und die Ergebnisse waren interessant. Auto erhielt viele neue Erfahrungen und kam zu dem Schluss, dass es zur Umsetzung einer solchen Idee notwendig ist, sofort ein komplexeres neuronales Netzwerk, beispielsweise StyleGAN, zu verwenden.
Netzwerk-Lernprozess:
Projektteam: Dmitry Piterkin.
Video mit Projektschutz .
In Kürze werden wir Ihnen die interessantesten Diplomprojekte in den Bereichen C ++ und Go-Entwicklung, Front-End-Entwicklung und Schnittstellenerstellung vorstellen. Weitere Informationen zu unseren Bildungsprojekten finden Sie unter diesem Link . Und öfter gehen Sie zum Technostream- Kanal , dort erscheinen regelmäßig neue Trainingsvideos über Programmierung, Entwicklung und andere Disziplinen.