Kürzlich haben wir eine Kolumne über Habr darüber geschrieben, wie wir unser eigenes Online-Spielzeug herausgebracht haben. Einer der Tricks, über die wir ernsthaft verwirrt waren, war die KI-Generation von Avataren für Ihren Charakter "on the fly" von einem Foto (während Sie im Prototyp arbeiten und nicht Teil des Spiels sind). Gleichzeitig ist die Technologie selbst interessant und kann nicht nur bei uns weit angewendet werden. Wie versprochen, sprechen wir ausführlicher darüber und lassen uns den Prototyp live spüren!
Unter dem Schnitt finden Sie auch: Warum sie sich für ein atypisches KI-Trainingssystem entschieden haben - ohne Datenaufschlag - und warum wir dies als wissenschaftliche Innovation betrachten; unsere Fakapy bei der Erstellung von KI-Avataren, die nicht wiederholt werden müssen; Wie und wo wird die Domänenanpassung heute verwendet?

Wenn es keine Zeit gibt, den Beitrag zu lesen
Wir folgen dem Link, um uns die Arbeit der KI im Moment anzusehen.
Beachten Sie:
1. Der Konverter funktioniert nicht schnell. Seien Sie also geduldig, es wird keine Produktionskapazität verwendet.
2. Das System wurde nur im männlichen Bereich trainiert, so dass weibliche Fotos Sie Männer hinterlassen, wahrscheinlich weiblich. Porträtähnlichkeit ist nicht zu erwarten, da Die Anzahl der verwendeten Elemente ist bewusst begrenzt. Wir werden weiter unten darauf eingehen.
Woher kam die Idee, KI-Avatare zu erstellen?
Sie erschien nicht aus heiterem Himmel. Die Arbeit am maschinellen Lernen bei der uKit Group wird seit mehreren Jahren fortgesetzt. Das Projekt WebScore AI , das vor etwa einem Jahr die visuelle Attraktivität der Website in Echtzeit bewertet, stand allen Beteiligten offen und wurde erfolgreich für interne Unternehmenszwecke eingesetzt.
Die Verwendung neuronaler Netze in der Spieleentwicklung ist ein Thema, das in regelmäßigen Abständen einen erheblichen Hype hervorruft. Erinnern Sie sich an No Man's Sky oder RimWorld, die aufgrund des vollständig generierten Universums, das laut den Autoren selbst nahezu unendlich variabel ist, einen Teil der Aufmerksamkeit des Spiels und nicht nur der Community erhalten haben. In Wirklichkeit war die Erzeugung von Welten prozedural und hat daher nichts mit neuronalen Netzen zu tun. Der Trend hier ist jedoch offensichtlich - der Markt ist bereit dafür und wartet und reibt sich die Hände!
Wir dachten, dass die Möglichkeit, Ihr Foto in das Spiel hochzuladen und sofort einen persönlichen Avatar zu erhalten, der Ihnen am ähnlichsten sieht, den sonst niemand hat, Spaß macht und zu einem interessanten verlockenden Chip werden kann. Darüber hinaus kann die Technologie ihre Anwendung eindeutig außerhalb des Spiels finden.
Es ist erwähnenswert, dass die Ähnlichkeit des Charakters mit einer realen Person in Web Tycoon relativ sein wird. Dies ist ein bewusster Schritt, da wir Avatare aus den von unseren Designern gezeichneten Elementen sammeln. Dafür gibt es mehrere Gründe. Erstens wollen wir am Ausgang Spielavatare im Stil des Spiels erhalten und gleichzeitig den flachen Favoriten vieler bewahren. Zweitens gehen wir auf Nummer sicher, da Sie so immer ein Porträtbild erhalten, unabhängig davon, was der Benutzer hochgeladen hat.

Schließlich möchte nicht jeder eine realistische Gurke unter den Rivalen sehen.
Modelltraining ohne markierte Daten
Dieser Ansatz für maschinelles Lernen kann als innovativ bezeichnet werden, da AI tatsächlich ohne anfänglich markierte Daten lernt. Aufgrund dessen, was passiert das? Der Schlüssel zum Erfolg ist die Verfügbarkeit von Tools zur Generierung synthetischer Daten. Vor möglichen Fragen: Wir können unsere eigenen nicht geben.
Warum hast du dich entschieden, unsere KI auf diese Weise zu trainieren? Datenmarkup ist eine monotone und sehr umfangreiche Arbeit von Assessoren. Und wenn Designer plötzlich beschließen, beispielsweise einen dritten Brillentyp hinzuzufügen (zum Zeitpunkt des Schreibens des Systems gab es zwei davon), müssen Sie alles neu markieren, da jedes zuvor markierte Beispiel jetzt möglicherweise nicht optimal ist.
In unserem Fall hat es sich außerdem gelohnt, einen solchen Moment als Subjektivität zu betrachten: Wenn Sie 10 Personen geben, um einen Avatar für ein Foto zu sammeln, erhalten Sie 10 verschiedene Avatare am Ausgang. Wir haben nachgesehen.
Originalfoto:

Und die Ergebnisse von zwei verschiedenen Designern unseres Unternehmens:

Mensch gegen Maschine
Das Training war nicht einfach. Erstens kapitulierte unsere KI in jeder Hinsicht:

Wenn jemand plötzlich nicht mehr verstanden hat, ist das Originalfoto hier dasselbe. AI verwandelt Taschen unter den Augen in Sonnenbrillen. Husarenantennen als Geschenk. Echte Workaholics können dies als eine Funktion betrachten, nicht als einen Fehler.
Nachfolgend einige weitere indikative Ergebnisse.


Er fügt einfach keine Punkte mehr hinzu und kann sich sogar verkleiden! Es gibt bestimmte Probleme bei der Farbwiedergabe.
Direkt über den Entwicklungsprozess
Als Ausgangspunkt haben wir mehrere vorgefertigte Style Transfer-Lösungen gewählt, die wir jedoch schnell aufgeben mussten, da sie in ihrer reinen Form nicht zu uns passten. Wir haben auch versucht, generative Modelle selbst zu verwenden, sind jedoch schnell zu dem Schluss gekommen, dass die meisten Lösungen, auf die wir gestoßen sind, entweder keine Implementierungsbeispiele hatten oder kein Ergebnis lieferten.
Infolgedessen war CycleGAN das erste erfolgreiche generative Modell, das wir als Grundlage genommen haben und das wir gemäß unseren Anforderungen vervollständigten. Perceptual Loss wurde aufgerufen, um dem Standard-CycleGAN zu helfen. Dies fügte den resultierenden Bildern sehr deutlich Schönheit hinzu.
Unten sehen Sie CycleGAN in Aktion:

Oder ein anderes Beispiel, das jedem klar und vertraut ist, der die Prisma-Anwendung mindestens einmal verwendet hat:

Die Hauptschwierigkeit besteht traditionell darin, das generative Modell dazu zu bringen, normal zu lernen. Die ganze Familie solcher Modelle hat viele ziemlich charakteristische Wunden, die in den letzten Jahren versucht haben, alles zu lösen: lange Trainingszeit, Moduskollaps, Empfindlichkeit gegenüber Initialisierung.
Es gab auch rein technische Probleme, mit denen theoretisch viele konfrontiert sein sollten, aber aus irgendeinem Grund schreiben nur wenige darüber. Zum Beispiel mussten wir ein schnelles paralleles Laden von Daten mit Augmentation durchführen, und der in keras / tf / pytorch dargestellte Standardsatz von Augmentationen reichte uns nicht aus. Außerdem wollte ich zunächst die CPU erweitern. Die Erweiterung der CPU hat unbestreitbare Vorteile, von denen unserer Meinung nach die Möglichkeit darin besteht, die Grafikkarte "auszulagern" und dadurch die Verantwortlichkeiten zwischen den beiden Computern zu teilen.
Wie man Probleme löst
Bei der Schulung von GANs haben wir hauptsächlich mit Verlustfunktionen (Verlustfunktionen) gearbeitet. Also haben wir mehr Identitätsverlust und Farbverlust hinzugefügt. Gleichzeitig spielten wir mit der Architektur des Generators in CycleGAN und kamen zu einem 12-Block-Reznet (das ursprüngliche war für uns etwas kurz).
Im Falle der Wiederholung von Code haben wir übergeordnete Wrapper über Modelle geschrieben, sodass wir den in mehreren Modellen gleichzeitig verwendeten Code wiederverwenden können. Aus den gleichen Gründen wird auch der Code für Datumsgeneratoren auf ähnliche Weise verallgemeinert.
Um das dritte Problem zu lösen (Laden mit Erweiterungen auf der CPU), musste ich mir einen eigenen Chip einfallen lassen, aber darüber irgendwann beim nächsten Mal. Wir werden nur sagen, dass es daran liegt, dass die Technologie erfolgreich für andere Projekte eingesetzt werden kann, die in keiner Weise mit Avataren verbunden sind.
Fakapy beim Erstellen von AI-Interfaces
Der Hauptfehler ist eine falsche Einschätzung der Komplexität der Aufgabe. Auf den ersten Blick scheint es oft eine große Anzahl von vorgefertigten Lösungen zu geben, die zu 99% für Sie geeignet sind. Sie müssen nur genommen und sicher in Ihren Fall übertragen werden. So ist es nicht. Unabhängig davon lohnt es sich zu zeigen, wie es sich anfühlt zu beobachten, wie in GAN, das seit mehreren Tagen erfolgreich studiert wird, plötzlich etwas buchstäblich explodiert und warum es beginnt, ein vollständiges Spiel zu generieren.
So etwas wie das:

Ein weiterer schwerwiegender Faktor war, dass wir in der Anfangsphase vergessen haben, zufällige Seeds zu reparieren, und wir erinnern uns, dass GANs äußerst empfindlich auf Initialisierung reagieren. Ein sehr beschämender Misserfolg unsererseits, wie die Offenheit.
Wo Domain-Anpassung heute verwendet wird
Die Domänenanpassung dringt langsam aber sicher in KI-Aufgaben ein. Dieser stetige Trend ist darauf zurückzuführen, dass das Markup trotz des rasanten Wachstums der verfügbaren Informationen in der modernen Welt immer noch eine lange und teure Aufgabe bleibt. Die Entwicklung des Transfer-Lernens und seine Verallgemeinerung angesichts der Domänenanpassung löst dieses Problem.
Ein Beispiel für die praktische Anwendung der Domänenanpassung ist Apples Arbeit, den Datensatz von Fotografien menschlicher Augen durch Anpassung synthetisch erzeugter Bilder zu erweitern. In ihrer Studie zeigten sie, dass ein effizienter Ansatz darin besteht, anfänglich markierte künstliche Daten mit anschließender Annäherung an reale Daten unter Verwendung von Domänenanpassungsmethoden zu generieren.

Oder hier ist ein weiteres interessantes Beispiel. Im Jahr 2017 entwickelte eine Gruppe von Wissenschaftlern einen ungewöhnlichen Ansatz zur Erfassung von Daten über Straßen, Wege, Fußgänger und andere Umgebungen, in denen sich selbstfahrende Autos für ihr Training befinden sollten.
Sie schlugen vor, diese Informationen von GTA V zu übernehmen.

Zu diesem Zweck wurden in der virtuellen Umgebung von Grand Theft Auto V mehr als 480.000 markierte virtuelle Bilder des normalen Autobahnfahrens generiert. Anhand dieser Bilder wurde das System darauf trainiert, alle für das autonome Grundfahren erforderlichen Grundvariablen zu lesen: den Abstand zu Autos und anderen vorausfahrenden Objekten, die Markierung des Streifens und den Fahrwinkel (Winkelverlauf relativ zur Mittellinie des Streifens) zu bestimmen. Der tödliche Tesla-Unfall in Florida wurde ebenfalls analysiert.
Die Zukunft ist NST und GAN
Kann man mit Zuversicht darüber sprechen? Vielleicht ja. Neural Style Transfer verwendet Prisma. In Analogie dazu werden neue Anwendungen erstellt, nicht nur zu Unterhaltungszwecken. GANs können auch als Werkzeug zur Lösung einer Vielzahl von Problemen verwendet werden: Bildfärbung, Bilderzeugung aus Rauschen, sogar Bilderzeugung aus Text.
Zurück zum Thema Gamedev. Hier sind die Möglichkeiten der Domänenanpassung potenziell unbegrenzt: Wenn im Fall des Trainings unbemannter Fahrzeuge die Texturen der GTA V-Spielwelt übernommen wurden, aus denen etwas sehr Ähnliches wie Fotos aus der realen Welt hervorgegangen ist, hindert Sie absolut nichts daran, das Gegenteil zu tun: Spieltexturen aus Panoramabildern realer Städte zu generieren .
Der Vorteil des Autos ist, dass es nicht müde wird. Ein Computer kann jetzt in Sekundenbruchteilen eine Vielzahl unterschiedlicher Ansichten generieren. Unsere Aufgabe ist es zu lernen, wie man es effizient und effizient macht, und dann bleibt es nur, das Getreide von der Spreu zu trennen und zu genießen.
Haben Sie noch Fragen? Wir werden sie gerne in den Kommentaren beantworten.