Normalerweise ist das vom ** trainierten GAN-Modell generierte Bild ** eine Mischung aus ** Lieblingsbildern, unbeliebten Bildern und fehlerhaften Bildern ** und kann nicht so angezeigt werden, wie es ist. ** Daher werde ich dieses Mal vorstellen, wie Sie das generierte Bild von GAN ** einfach in ein qualitativ hochwertiges Bild nach Ihren Wünschen ändern können **.
Das diesmal verwendete trainierte GAN-Modell ist ** TF-Hub Progressive GAN **. Der Code wurde mit ** Goole colab ** erstellt und auf ** Github ** veröffentlicht (** Link hier **). )) Also, wenn Sie möchten, spielen Sie bitte damit, während Sie etwas trinken.
Das trainierte GAN-Modell kann nicht geändert werden, da ** der Eingabevektor und das Ausgabebild bereits eins zu eins bestimmt sind **. Was sollen wir dann tun? Ändern Sie den Eingabevektor.
Wenn ein zufälliger Vektor in das GAN-Modell eingegeben und ein Bild erzeugt wird, wenn ein ** gebrochenes Bild oder ein Bild vorliegt, das Sie nicht mögen **, wird der entsprechende Vektor im ** Minusvektor ** und ** Ihrer Präferenz akkumuliert. Wenn ein Bild ** von vorhanden ist, wird der entsprechende Vektor in ** plus Vektor ** gespeichert.
Dann ist der nächste Vektor, der in das GAN-Modell eingegeben wird, ** Zufallsvektor + Mittelwert plus Plusvektor-Mittelwert minus Minusvektor **. Wenn Sie dies auf mysteriöse Weise wiederholen, wird das erzeugte Bild von GAN ** in ein qualitativ hochwertiges Bild nach Ihren Wünschen umgewandelt **.
Installieren und importieren Sie zunächst die Bibliothek, definieren Sie Funktionen und laden Sie das Modell herunter. Siehe Google Colab für Details.
Initialisieren Sie es zuerst.
#Initialisierung des Lernens
tf.random.set_seed(80)
vectors = tf.zeros([5,512])
plus_vector = tf.zeros([1,512])
minus_vector = tf.zeros([1,512])
Da die ** Formularfunktion ** von Google Colab verwendet wird, kann der Code im Ausgangszustand nicht angezeigt werden. Sie können den Code jedoch anzeigen, indem Sie auf die Benutzeroberfläche klicken. Der Ausgangszustand ist einfacher zu bedienen.
#@title please, you change the selected action if you need.
vec_0 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_1 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_2 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_3 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_4 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec = [vec_0, vec_1, vec_2, vec_3, vec_4]
for i in range(len(vectors)):
if vec[i] == 'plus':
plus_vector = tf.concat([plus_vector, tf.reshape(vectors[i],[1,512])],axis=0)
if vec[i] == 'minus':
minus_vector = tf.concat([minus_vector, tf.reshape(vectors[i],[1,512])], axis=0)
print('number of plus_vector = ', len(plus_vector)-1)
print('number of minus_vector = ', len(minus_vector)-1)
plus_vector_mean = tf.reduce_mean(plus_vector, axis=0) # plus_Nehmen Sie den Durchschnitt des Vektors
minus_vector_mean = tf.reduce_mean(minus_vector, axis=0) # minus_Nehmen Sie den Durchschnitt des Vektors
vectors = tf.random.normal([5, 512]) #Zufällige Vektorerfassung
vectors = vectors + plus_vector_mean - minus_vector_mean #Vektorkorrektur
display_images(vectors)
Aufgrund der ** Formularfunktion ** enthalten die Variablen ** vec_0 bis vec_4 ** die in der Benutzeroberfläche ausgewählte Zeichenfolge ** ('plus', 'nichts', 'minus'). Wenn die Zeichenfolge ** 'plus' ** ist, wird der entsprechende Vektor in ** plus_vector ** gespeichert, und wenn es ** 'minus' ** ist, wird der entsprechende Vektor in ** minus_vector ** gespeichert. Jetzt müssen Sie nur noch den Durchschnitt mit tf.reduce_mean ()
nehmen und den Zufallsvektor addieren oder subtrahieren.
** Wenn Sie den Code zum ersten Mal ausführen, ohne Einstellungen zu ändern **. ** Schauen Sie sich ab dem zweiten Mal ** die generierten 5 Bilder an und entscheiden Sie nach eigenem Ermessen **, ob Sie sie in den Minusvektor ** (Minus), ** ob Sie sie in den Plusvektor setzen ** (Plus), ** was Entscheide, ob es ** (nichts) gibt, ** ändere die Einstellungen ** und führe dann ** den Code aus **. Wiederholen Sie dies viele Male.
Was angezeigt wird, ist das Ergebnis von etwa einem Dutzend Versuchen. Die Benutzeroberfläche wird im Ausgangszustand ausgeführt. Dies ist das Ergebnis der Auswahl von 5 Plusvektoren (weiblich Ihrer Wahl) und 8 Minusvektoren (gebrochenes Bild). Natürlich gibt es nur Frauen, die es mögen (lacht).