[PYTHON] Notizblock über TecoGAN

Hallo

Ich habe vor kurzem angefangen, maschinelles Lernen zu studieren, also werde ich es für mich selbst schreiben. Da ich zum ersten Mal schreibe, wäre ich Ihnen dankbar, wenn Sie auf Fehler im Schreibstil hinweisen könnten.

Dieses Mal habe ich mich für TecoGAN entschieden, das eine Superauflösung von Videos ermöglicht. Quelle: https://github.com/thunil/TecoGAN Papier: https://arxiv.org/pdf/1811.09393.pdf

Ich verstehe es nicht gut. Wenn Sie Fragen haben, lassen Sie es mich bitte wissen ... Es kann auch in Zukunft behoben werden. Außerdem verwendet das Betriebssystem Ubuntu. TecoGAN verwendet wget für etwas, daher ist es für Windows ärgerlich.

PC-Spezifikationen

OS : Ubuntu 18.04 CPU: i5 4670k GPU: Geforce 2060SP Speicher: 16 GB Sprache: Python 3.6

Einführung von TecoGAN

Befolgen Sie grundsätzlich das Git-Verfahren. Holen Sie sich zuerst den Quellcode von git.

cmd


git clone https://github.com/thunil/TecoGAN.git

Installieren Sie dann die erforderlichen Pakete.

cmd


pip3 install tensorflow-gpu==1.14.0 
 # tensorflow-Installieren Sie die GPU. Wenn Sie keine GPU verwenden, ist dies nur Tensorflow.
pip3 install -r requirements.txt
 #Installation anderer erforderlicher Pakete

Es unterscheidet sich von git dadurch, dass es tensorflow-gpu installiert, da die git-Prozedur bewirkt, dass die Version von tensorflow-gpu 2.x ist, was aufgrund des Versionsunterschieds zu Programmfehlern führt.

Es kann auch sicher sein, eine virtuelle Umgebung zu erstellen und dort Pakete zu installieren. Ich habe es nicht gebaut, weil ich zuerst TecoGAN gestartet habe.

Umweltvereinbarung

Ich habe die GPU verwendet, um TecoGAN zu berechnen, also habe ich CUDA und cudnn eingeschlossen. [CUDA cudnn kompatible Version Kurzreferenztabelle] https://www.tensorflow.org/install/source?hl=ja#gpu_support_2 Die obige Site ist eine Kurzreferenz der Versionen von Tensorflow, CUDA und Cudnn, die ordnungsgemäß funktionieren. Wenn Sie dies nicht beachten, wird die GPU möglicherweise nicht erkannt.

Wenn ich tensorflow-gpu == 1.14.0 überprüfe, scheinen CUDA10.0 und cudnn7.4 normal zu funktionieren.

Installieren Sie CUDA

cmd


$ wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
$ pkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
$ apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub
$ apt-get install cuda-toolkit-10-0

Das ist es.

cmd


nvcc -V

Wenn Sie den obigen Befehl eingeben, wird die CUDA-Version angezeigt.

Installieren Sie cudnn

Es ist ein bisschen nervig. Weil Sie sich als Mitglied registrieren müssen. https://developer.nvidia.com/cudnn Wählen Sie unter dem obigen Link [cuDNN herunterladen] aus und registrieren Sie sich dann bei [Jetzt beitreten].

Aktivieren Sie anschließend nach dem Anmelden [Ich stimme zu ~~] und wählen Sie die gewünschte Version von cudnn aus. In diesem Fall handelt es sich um cudnn v7.4.2.

Wählen Sie cudnn Library for Linux und warten Sie, bis der Download abgeschlossen ist. Gehen Sie danach unter den heruntergeladenen Ordner, entpacken Sie ihn und installieren Sie ihn in der Umgebung.

cmd


$ tar -xvzf cudnn-10.0-linux-x64-v7.4.2.24.tgz
$ cp -a cuda/lib64/* /usr/local/cuda/lib64/
$ cp -a cuda/include/* /usr/local/cuda/include/
$ cp -a cuda/include/* /usr/include/

Das ist es. Bei cudnn verursacht die Verwendung von wget einen Fehler. Vielleicht, weil ich mich nicht anmelde.

Installation des GPU-Treibers

Über den Fahrer als Memo

cmd


ubuntu-drivers devices

Es werden mehrere empfohlene Treiber angezeigt Installieren Sie den Treiber mit der Bezeichnung [empfohlen].

cmd


sudo apt install nvidia-driver-xxx

Nach dem Neustart ist der Befehl nvidia-smi verfügbar. Sie können die Nutzungsrate von GPU und die Ausrüstung von GPU sehen.

GPU-Funktionsprüfung

Sie können dies mit den folgenden zwei Codezeilen überprüfen.

python


from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Die GPU erkennt, ob die folgenden Wörter unten geschrieben sind.

Created TensorFlow device (/device:GPU:0 with 6654 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2060 SUPER, pci bus id: 0000:01:00.0, compute capability: 7.5)

TecoGAN-Betrieb

TecoGAN verfügt über ein geschultes Modell, um das das Programm herum betrieben wird. Installieren Sie also das trainierte Modell, das Video mit niedriger Auflösung und das Video mit hoher Auflösung. Es kann ungefähr 10 Minuten gedauert haben.

cmd


python runGan.py 0

Führen Sie die Installation nach Abschluss mit dem folgenden Code aus.

cmd


python runGan.py 1

Ein hochauflösendes Kalenderbild wird generiert. Die Ergebnisse befinden sich im Ergebnisordner unter dem TecoGAN-Ordner.

Immerhin wird es als Bild ausgegeben. Zum Codieren sind andere Tools erforderlich, und TecoGAN empfiehlt ffmpeg.

sudo apt-get install ffmpeg

Bitte installieren Sie es und vergleichen Sie es mit einem Video. Es scheint ziemlich sauber zu sein.

Apropos

python runGan.py 2

Sie können auch numerisch mit auswerten. Der Index ist PSNR SSIM LRIPS tLP100 tOF Das stimmt, aber ich verstehe es immer noch nicht. Besonders die unteren drei Lass es mich wissen, bitte.

TecoGAN-Betrieb ~ ~ mit Ihrem Lieblingsvideo ~ ~

Es ist langweilig, das Testbild zu verschieben. Stellen Sie zunächst Ihr Lieblingsvideo mit niedriger Auflösung ein.

ffmpeg -Ich Video-Pfad.mp4 -vf scale=270:-1 Videoausgangspfad mit niedriger Auflösung.mp4

Wenn Sie im Maßstab die Anzahl der Pixel auf einer Seite angeben, wird automatisch das gleiche Seitenverhältnis wie beim Originalvideo angepasst. Ich habe das Originalvideo 1920 * 1080, daher beträgt das Video mit reduzierter Auflösung 480 * 270.

Da die Vergrößerung von TecoGAN auf das Vierfache festgelegt ist, wird diese Auflösung verwendet, um das hochauflösende Video mit dem Originalvideo zu vergleichen.

Verwenden Sie als Nächstes ffmpeg usw., um für jedes Bild ein Videobild mit niedriger Auflösung zu erstellen.

ffmpeg -Ich Video-Pfad.mp4 -vcodec png Ordner zur Ausgabe von Bildern/%04d.png

Versuchen Sie, sich zu bewegen, wenn Sie bereit sind

Wenn Sie nun Ihr Lieblingsvideo zu einer Frame-Gruppe machen, ist die Auflösung hoch. Erstellen Sie einen Ordner in TecoGAN / LR mit einem Namen Ihrer Wahl. Dieses Mal habe ich "hogehoge" gewählt. Fügen Sie Ihre eigene Rahmengruppe in TecoGAN / LR / hogehoge ein.

Überprüfen Sie als nächstes das Programm von runGan.py.

runGan.py


elif( runcase == 1 ): # inference a trained model
    
    dirstr = './results/' # the place to save the results
#    testpre = ['calendar'] # the test cases
    testpre = ['hogehoge'] # the test cases #hinzufügen
    if (not os.path.exists(dirstr)): os.mkdir(dirstr)

Fügen Sie ein einzeiliges Programm hinzu. Jetzt können Sie loslegen.

python runGan.py 1

Wenn Sie es verschieben, sollte eine hochauflösende Rahmengruppe generiert werden. Überprüfen Sie results / hogehoge.

Wahrscheinlich denke ich, dass das Ergebnis nicht so gut ist. Sie müssen das Modell trainieren. Als nächstes möchte ich eine Notiz über das zukünftige Erlernen des Modells machen. Ich hatte es satt, zum ersten Mal viel zu schreiben. Ich würde es begrüßen, wenn Sie auf Punkte hinweisen könnten, die schwer zu erkennen sind.

Bonus

Eine Superauflösung auf Full HD ist nicht möglich, wenn die GPU schlampig ist. Ihnen wird der Speicher ausgehen. "Google Colaboratory" ist also sehr nützlich. Ich habe gerade erst angefangen, es zu berühren, aber anscheinend ist es einfacher, mit Google Drive zu arbeiten.

Also werde ich es ein wenig anfassen, damit es funktioniert. Es ist nur ein Memo, es tut mir leid, wenn es schwer zu sehen ist.

Zunächst einmal können Sie mit Google Colaboratory High-Spec-GPUs kostenlos verwenden. Wählen Sie einfach "Laufzeit" -> "Laufzeittyp ändern" -> "Keine" -> "GPU". Sehr leicht.

Google Cola Boratory enthält verschiedene Pakete, die von Anfang an für maschinelles Lernen erforderlich sind. Natürlich wurde auch die neueste Version von Tensorflow eingeführt.

In TecoGAN funktioniert Tensorflow jedoch nur, wenn es sich um Version 1.x handelt. (Es funktioniert, aber es wirft viele Fehler)

Verringern Sie also zuerst die Version.

!pip uninstall -y tensorflow
!pip install tensorflow-gpu==1.14.0

In Google Colaboratoty fügen Befehle im Grunde genommen "!" Am Satzanfang hinzu. Wie ich bereits sagte, habe ich die Version von Tensorflow gesenkt, was Probleme mit den Versionen von Cuda und Cudnn verursacht und die GPU nicht wiedererkennbar macht.

Bitte installieren Sie CUDA und cudnn neu.

!apt-get --purge remove cuda*
!apt autoremove

Der obige Befehl entfernt alle Cuda. So wie immer. Es scheint, dass cudnn nicht gelöscht werden muss. Nach der Installation von cudnn möchten Sie jedoch möglicherweise das folgende Programm ausführen.

import os 
os.environ["CUDA_HOME"]="/usr/local/cuda"
os.environ["LIBRARY_PATH"]="/usr/local/cuda/lib64"

Es tut mir leid, wenn es ein Problem gibt.

Starten Sie für alle Fälle die Laufzeit neu und überprüfen Sie die Version von Tensorflow.

!pip freeze | grep -i -e tensorflow
--
tensorflow-addons==0.8.3
tensorflow-datasets==2.1.0
tensorflow-estimator==1.14.0
tensorflow-gcs-config==2.3.0
tensorflow-gpu==1.14.0
tensorflow-hub==0.8.0
tensorflow-metadata==0.22.2
tensorflow-privacy==0.2.2
tensorflow-probability==0.11.0

Sieht gut aus. Überprüfen Sie die GPU.

from tensorflow.python.client import device_lib
device_lib.list_local_devices()
---
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 7140650767936614436, name: "/device:XLA_GPU:0"
 device_type: "XLA_GPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 10124152797065672754
 physical_device_desc: "device: XLA_GPU device", name: "/device:XLA_CPU:0"
 device_type: "XLA_CPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 8094731668087896846
 physical_device_desc: "device: XLA_CPU device", name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 15956161332
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 845827148846290348
 physical_device_desc: "device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:00:04.0, compute capability: 6.0"]

Es wird erkannt. Danach spielen Sie bitte auf die gleiche Weise mit TecoGAN.

Ich habe jedoch das Gefühl, dass ich das zum Erlernen des Modells erforderliche Video (vimeo) nicht löschen konnte.

!python3 dataPrepare.py --start_id 2000 --duration 120 --REMOVE --disk_path TrainingDataPath #Ich habe das Gefühl, ich könnte es nicht tun ...?

Es kann etwas schwierig sein, da Sie das Video selbst ablegen und in Frames unterteilen müssen. Wenn Sie Ihr Lieblingsvideo wunderschön auflösen möchten, muss dieser Weg möglicherweise eingeschlagen werden, sodass dies möglicherweise kein Problem darstellt.

Schließlich

Bitte weisen Sie auf Dinge wie Unbeweglichkeit und Tippfehler hin.

Außerdem habe ich derzeit Probleme, die Superauflösung von TecoGAN zu verdoppeln, zu verdreifachen oder um das 6-fache zu erhöhen, aber es funktioniert nicht. Dies liegt daran, dass unser FRVSR in erster Linie ein 4x-Modell ist. Ich würde mich über jeden Rat freuen.

Vielen Dank.

Recommended Posts

Notizblock über TecoGAN
Über LangID
Über CAGR
Über Tugenden
Über Python-Apt
Über die Erlaubnis
Über sklearn.preprocessing.Imputer
Über Gunicorn
Informationen zu den Anforderungen.txt
Über das Gebietsschema
Über Achse = 0, Achse = 1
Über den Import
Über Numpy
Über pip
Über Linux
Über numpy.newaxis
Über Endian
Über Linux
Über den Import
Über Linux
Über Linux
Über cv2.imread
Über _ und __
Über wxPython