[PYTHON] Probieren Sie StyleGAN mit Google Colaboratory aus

Überblick

Als ich StyleGAN mit Google Colaboratory ausprobierte, hatte ich einige Stolpersteine, daher werde ich es als Memorandum zusammenfassen.

Die Referenzwebseiten lauten wie folgt. Sobald StyleGAN ordnungsgemäß funktioniert, können Sie auf diese gut erläuterten Seiten verweisen.

Die Punkte, über die ich gestolpert bin, sind folgende.

1. Vorbereitung

Wählen Sie GPU für die Laufzeit von Google Colaboratory aus

Starten Sie Google Colaboratory, klicken Sie in der Symbolleiste oben auf dem Bildschirm auf "Laufzeit"> "Laufzeittyp ändern", geben Sie im Hardwarebeschleuniger "GPU" an und klicken Sie auf "Speichern". Dadurch wird der Laufzeittyp von CPU auf GPU umgeschaltet.

TensorFlow-Version

StyleGAN funktioniert mit einer etwas älteren Version von Tensorflow und muss von der neuesten Version von Tenforflow herabgestuft werden. Ab dem 5. November 2020 ist die neueste Version von Tensorflow, die in Google Colaboratory installiert ist, 2.3.0. Die Bestätigungsmethode ist wie folgt.

import tensorflow as tf
print(tf.__version__)

output


2.3.0

Laut dieser Seite

Also generally (NVlabs) Stylegan and Stylegan2 require TensorFlow 1.14 or 1.15 with GPU support.

Daher ist es notwendig, den Tensorfluss 1.14 oder 1.15 vorzubereiten. Der folgende Code installiert Tensorflow 1.15.

!pip install tensorflow==1.15

GPU-Unterstützung für TensorFlow

In Versionen vor 1.15 sind die TensorFlow-CPU- und GPU-Pakete getrennt. (-> "GPU-Unterstützung | TensorFlow") Daher muss ein Tensorflow vorbereitet werden, der die GPU verwenden kann. Dies kann durch Angabe von "tensorflow-gpu" gelöst werden.

!pip install tensorflow-gpu==1.15

Starten Sie zu diesem Zeitpunkt die Laufzeit einmal neu. Führen Sie danach nach Abschluss der erneuten Verbindung den folgenden Code aus. Wenn Sie dieselbe Ausgabe erhalten, sollten die GPU-Spezifikation sowie die TensorFlow-Version und das Paket korrekt vorbereitet sein.

import tensorflow as tf
print(tf.__version__)
print(tf.test.gpu_device_name())

output


1.15.0
/device:GPU:0

Zusammenarbeit mit Google Drive

Verwenden wir Google Drive als Speicherort für verwandte Dateien.

from google.colab import drive
drive.mount('/content/drive')

Erstellen Sie im Voraus ein Verzeichnis, in dem Sie StyeGAN-bezogene Dateien ablegen und dorthin verschieben können.

%cd /content/drive/My Drive
!mkdir stylegans
%cd stylegans
!mkdir stylegans_dir

Laden Sie StyleGAN-bezogene Dateien herunter

!git clone https://github.com/NVlabs/stylegan.git
!git clone https://github.com/NVlabs/stylegan2.git

Das verteilte trainierte Modell kann durch Angabe der URL abgerufen werden, es scheint jedoch ein Problem zu geben, dass die Laufzeit endet. Um dies zu vermeiden, laden Sie nur das erforderliche trainierte Modell separat herunter.

Da das Modell "karras2019stylegan-ffhq-1024x1024.pkl" auf dieser Seite platziert ist, nachdem Sie es auf Ihren eigenen PC, Google Drive, heruntergeladen haben Speichern Sie es direkt im stylegans-Verzeichnis von.

2. Laden Sie den trainierten Generator

%cd /content/drive/My Drive/stylegans/stylegan
 
import os
import pickle
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import dnnlib
import dnnlib.tflib as tflib
import config
 
# Initialize TensorFlow.
tflib.init_tf()
 
# Load pre-trained network.
*_, Gs = pickle.load(open('../karras2019stylegan-ffhq-1024x1024.pkl','rb'))

3. Definition latenter Variablen

# Pick latent vector.
rnd = np.random.RandomState(210)
latents = rnd.randn(1, Gs.input_shape[1])

Wenn Sie 210 in "RandomState (210)" in eine andere Zahl ändern, werden verschiedene Bildtypen angezeigt.

4. Generieren Sie ein Bild und zeigen Sie es an

# Generate image.
fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
images = Gs.run(latents, None, truncation_psi=0.7, randomize_noise=True, output_transform=fmt)
plt.imshow(images[0])
plt.tick_params(labelbottom="off",bottom="off")
plt.tick_params(labelleft="off",left="off")

Wenn Sie den obigen Code ausführen, sollte ein Bild wie das folgende angezeigt werden.

image.png

5. Ändern Sie die Parameter und spielen Sie

Latente Variable

Die Bilder, die durch Ändern des durch "RandomState ()" angegebenen numerischen Werts erzeugt werden, werden nebeneinander angezeigt.

plt.figure(figsize=(15,10))

for i in range(20):
  rnd = np.random.RandomState(i*20+10)
  latents = rnd.randn(1, Gs.input_shape[1])
  
  plt.subplot(4,5,i+1)
  fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
  images = Gs.run(latents, None, truncation_psi=0.7, randomize_noise=True, output_transform=fmt)
  plt.title("RandomState(" + str(i*20+10) + ")")
  plt.imshow(images[0])
  plt.tick_params(labelbottom="off",bottom="off")
  plt.tick_params(labelleft="off",left="off")
  plt.axis('off')

image.png

Durch Ändern der latenten Variablen kann bestätigt werden, dass völlig unterschiedliche Bildtypen (Männer und Frauen, Erwachsene und Kinder usw.) ausgegeben werden.

Ich habe versucht, mehr Bilder zu generieren. Sie sehen, dass es erhebliche Unterschiede gibt.

stylegan_100outputs.png

truncation_psi

Ich habe truncation_psi geändert, was als Argument von Gs.run () angegeben wird.

plt.figure(figsize=(30,10))

for i in range(11):
  rnd = np.random.RandomState(210)
  latents = rnd.randn(1, Gs.input_shape[1])
  
  plt.subplot(1,11,i+1)
  fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
  temp = -1 + 0.2*i
  images = Gs.run(latents, None, truncation_psi=temp, randomize_noise=True, output_transform=fmt)
  plt.title(str(round(-1 + 0.2*i,1)))
  plt.imshow(images[0])
  plt.tick_params(labelbottom="off",bottom="off")
  plt.tick_params(labelleft="off",left="off")
  plt.axis('off')

image.png

image.png

Ich habe zwei Bilder eingefügt, aber wenn Sie genau hinschauen, unterscheiden sich die Details wie Haare und Hintergrundmuster geringfügig. Dies liegt wahrscheinlich daran, dass randomize_noise = True dazu beiträgt.

Für RandomState (290) image.png

abschließend

Diese Seite fasst die Schritte zusammen, mit denen StyleGAN in Google Colaboratory funktioniert. Weitere Informationen zu StyleGAN und anderen Verwendungsmöglichkeiten finden Sie bereits in vielen Artikeln und Webseiten. Lesen Sie daher diese.

Recommended Posts

Probieren Sie StyleGAN mit Google Colaboratory aus
Verwenden Sie music21 in Google Colaboratory
Probieren Sie OpenCV mit Google Colaboratory aus
Pandas 100 klopft an Google Colaboratory
Google-Labor
Führen Sie Keras auf Google Colaboratory TPU aus
Versuchen Sie, Distributed TensorFlow auf der Google Cloud Platform auszuführen
Zusammenfassung der Einrichtung von Google Colaboratory
Probieren Sie FEniCS unter Windows aus!
Versuchen Sie Poerty unter Windows
Versuchen Sie Deepdream auf dem Mac
ls -R auf Google Drive
Versuchen Sie Google Mock mit C.
Lernen Sie Python mit Google Colaboratory
Versuchen Sie es mit OpenCV unter Windows
Versuchen Sie "100 Schläge auf Data Science" ①
Tool-Organisation: Google Colaboratory (aktualisiert 2020.2.24)
Versuchen Sie, eine lineare Regression mit Pytorch mit Google Colaboratory zu implementieren
So verwenden Sie Google Colaboratory
Selbststudien-Memo "Deep Learning from Grund" (Nr. 13) Verwenden Sie Google Colaboratory
Versuchen Sie, Tensorflow auf Docker + Anaconda auszuführen
Versuchen Sie es mit Pillow auf iPython (Teil 1)
Zeigen Sie mehrere Markierungen auf Google Map an
Versuchen Sie, OpenAM unter Amazon Linux zu installieren
Zeigen Sie Gras auf Google Nest Hub
Versuchen Sie es mit Pillow auf iPython (Teil 2)
Versuchen Sie, k-NN selbst zu implementieren
Versuchen Sie es mit ArUco mit Raspberry Pi
■ [Google Colaboratory] Morphologische Analyse verwenden (janome)
Probieren Sie Ajax auf der Django-Seite aus
■ [Google Colaboratory] Verwenden Sie die morphologische Analyse (MeCab)
In Google Colaboratory registrierte Snippets (Scraping)
Versuchen Sie es mit Pillow auf iPython (Teil 3).
Installieren Sie Fabric unter Ubuntu und versuchen Sie es
OpenCV-Funktionserkennung mit Google Colaboratory
100 Sprachverarbeitung klopfen 2020 "für Google Colaboratory"
Verwenden Sie ndb.tasklet mit Google App Engine
Versuchen Sie, Jupyter Notebook auf einem Mac auszuführen
Versuchen Sie, OpenCV 3.0 auf dem AMI zu installieren
Spielen Sie mit Turtle auf Google Colab