[PYTHON] Bloc-notes sur TecoGAN

Bonjour

J'ai récemment commencé à étudier l'apprentissage automatique, alors je vais l'écrire pour moi-même. Puisque c'est la première fois que j'écris, je vous serais reconnaissant de bien vouloir signaler toute erreur dans le style d'écriture.

Cette fois, j'ai essayé de déplacer TecoGAN, qui peut effectuer une super-résolution de vidéos. Source: https://github.com/thunil/TecoGAN Papier: https://arxiv.org/pdf/1811.09393.pdf

Je ne comprends pas bien, donc si vous avez des questions, faites-le moi savoir ... En outre, il peut être corrigé à l'avenir. De plus, le système d'exploitation utilise ubuntu. TecoGAN utilise wget pour quelque chose, donc c'est ennuyeux pour Windows.

Spécifications PC

OS : Ubuntu 18.04 CPU: i5 4670k GPU: Geforce 2060SP Mémoire: 16 Go Langage: python 3.6

Introduction de TecoGAN

Suivez essentiellement la procédure git. Tout d'abord, récupérez le code source de git.

cmd


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

Ensuite, installez les packages requis.

cmd


pip3 install tensorflow-gpu==1.14.0 
 # tensorflow-Installez gpu. Si vous n'utilisez pas gpu, il ne s'agit que de tensorflow.
pip3 install -r requirements.txt
 #Installation d'autres packages requis

Il diffère de git en ce qu'il installe tensorflow-gpu, car la procédure git fait que la version de tensorflow-gpu est 2.x, provoquant un dysfonctionnement du programme en raison de la différence de version.

Il peut également être sûr de créer un environnement virtuel et d'y installer des packages. Je ne l'ai pas construit parce que j'ai commencé TecoGAN en premier.

Arrangement environnemental

J'ai utilisé le GPU pour calculer TecoGAN, j'ai donc inclus CUDA et cudnn. [Tableau de référence rapide des versions compatibles CUDA cudnn] https://www.tensorflow.org/install/source?hl=ja#gpu_support_2 Le site ci-dessus est une référence rapide des versions de tensorflow, CUDA et cudnn qui fonctionnent correctement. Si vous ne respectez pas cela, le GPU peut ne pas être reconnu.

Quand je vérifie tensorflow-gpu == 1.14.0, CUDA10.0 et cudnn7.4 semblent fonctionner normalement.

Installez 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

C'est tout.

cmd


nvcc -V

Lorsque vous tapez la commande ci-dessus, la version CUDA s'affiche.

Installez cudnn

C'est un peu ennuyeux. Parce que vous devez vous inscrire en tant que membre. https://developer.nvidia.com/cudnn Sélectionnez [Télécharger cuDNN] à partir du lien ci-dessus, puis enregistrez-vous avec [Rejoindre maintenant].

Après cela, après vous être connecté, cochez [J'accepte ~~] et sélectionnez la version de cudnn que vous voulez. Dans ce cas, c'est cudnn v7.4.2.

Sélectionnez la bibliothèque cudnn pour Linux et attendez la fin du téléchargement. Après cela, allez dans le dossier téléchargé, décompressez-le et installez-le dans l'environnement.

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/

C'est tout. Pour cudnn, l'utilisation de wget provoque une erreur. Peut-être parce que je ne me connecte pas.

Installation du pilote GPU

À propos du conducteur comme mémo

cmd


ubuntu-drivers devices

Plusieurs pilotes recommandés apparaissent Installez le pilote étiqueté [recommandé]

cmd


sudo apt install nvidia-driver-xxx

Après le redémarrage, la commande nvidia-smi sera disponible. Vous pouvez voir le taux d'utilisation de gpu et l'équipement de gpu.

Vérification du fonctionnement du GPU

Vous pouvez le vérifier avec les deux lignes de code suivantes.

python


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

Le GPU reconnaît si les mots suivants sont écrits en bas.

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)

Fonctionnement TecoGAN

TecoGAN a un modèle formé, et le programme est exploité autour de lui. Installez donc le modèle entraîné, la vidéo basse résolution et la vidéo haute résolution. Cela peut avoir pris environ 10 minutes.

cmd


python runGan.py 0

Une fois l'installation terminée, exécutez-la avec le code suivant.

cmd


python runGan.py 1

Une image de calendrier super-résolution est générée. Les résultats se trouvent dans le dossier des résultats sous le dossier TecoGAN.

Après tout, il est affiché sous forme d'image. D'autres outils sont nécessaires pour encoder, et TecoGAN recommande ffmpeg.

sudo apt-get install ffmpeg

Veuillez l'installer et le comparer avec une vidéo. Cela semble assez propre.

Au fait

python runGan.py 2

Vous pouvez également évaluer numériquement avec. L'index est PSNR SSIM LRIPS tLP100 tOF C'est vrai, mais je ne comprends toujours pas. Surtout les trois derniers S'il vous plaît, faites-moi savoir.

Fonctionnement TecoGAN ~ ~ avec votre vidéo préférée ~ ~

C'est ennuyeux de déplacer l'image de test. Tout d'abord, créez votre vidéo préférée en basse résolution.

ffmpeg -i chemin vidéo.mp4 -vf scale=270:-1 Chemin de sortie vidéo basse résolution.mp4

À l'échelle, si vous spécifiez le nombre de pixels d'un côté, il s'ajustera automatiquement au même rapport hauteur / largeur que la vidéo originale. J'ai la vidéo originale 1920 * 1080, donc la vidéo à résolution réduite est de 480 * 270.

Le grossissement de TecoGAN étant fixé à 4x, cette résolution est utilisée pour comparer la vidéo super-résolution avec la vidéo d'origine.

Ensuite, utilisez ffmpeg etc. pour créer une image vidéo basse résolution pour chaque image.

ffmpeg -i chemin vidéo.mp4 -vcodec png Dossier pour la sortie des images/%04d.png

Essayez de bouger lorsque vous êtes prêt

Maintenant, si vous transformez votre vidéo préférée dans un groupe d'images, ce sera une super-résolution. Créez un dossier dans TecoGAN / LR avec un nom de votre choix. Cette fois, j'ai choisi «hogehoge» comme approprié. Mettez votre propre groupe de cadres dans TecoGAN / LR / hogehoge.

Ensuite, vérifiez le programme de 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 #ajouter à
    if (not os.path.exists(dirstr)): os.mkdir(dirstr)

Ajoutez un programme sur une ligne. Maintenant, vous êtes prêt à partir.

python runGan.py 1

Si vous le déplacez, un groupe d'images de super-résolution doit être généré. Vérifiez results / hogehoge.

Probablement, je pense que le résultat n'est pas si bon. Vous devez former le modèle. Ensuite, je voudrais faire une note sur l'apprentissage du modèle à l'avenir. J'étais fatigué d'écrire beaucoup pour la première fois. Je vous serais reconnaissant si vous pouviez souligner les points difficiles à voir.

prime

La super-résolution en Full HD n'est pas possible si le GPU est bâclé. Vous allez manquer de mémoire. Donc, "Google colaboratory" est très utile. Je viens de commencer à y toucher récemment, mais apparemment, il est plus facile de travailler avec Google Drive.

Alors je vais y toucher un peu pour que ça marche. C'est juste un mémo, donc je suis désolé si c'est difficile à voir.

Tout d'abord, google colaboratory vous permet d'utiliser gratuitement des GPU haut de gamme. Plus précisément, sélectionnez simplement "Runtime" -> "Change Runtime Type" -> "None" -> "GPU". Très facile.

google cola boratory comprend divers packages nécessaires à l'apprentissage automatique depuis le début. Bien entendu, la dernière version de tensorflow a également été introduite.

Cependant, dans TecoGAN, tensorflow ne fonctionne que s'il s'agit de la version 1.x. (Cela fonctionne, mais cela génère beaucoup d'erreurs)

Alors, abaissez d'abord la version.

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

Dans google colaboratoty, les commandes ajoutent essentiellement "!" Au début de la phrase. Comme je l'ai dit plus tôt, j'ai abaissé la version de tensorflow, ce qui pose des problèmes avec les versions de cuda et cudnn et rend le GPU méconnaissable.

Veuillez donc réinstaller CUDA et cudnn.

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

La commande ci-dessus supprime tous les cuda. Comme d'habitude. Il semble que cudnn n'ait pas à être effacé. Cependant, après avoir installé cudnn, vous souhaiterez peut-être exécuter le programme suivant.

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

Je suis désolé s'il y a un problème.

Juste au cas où, redémarrez le runtime et vérifiez la version de 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

Cela semble bon. Vérifiez le 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"]

C'est reconnu. Après cela, veuillez jouer avec TecoGAN de la même manière.

Cependant, j'ai l'impression que je n'ai pas pu déposer la vidéo (vimeo) nécessaire à l'apprentissage du modèle.

!python3 dataPrepare.py --start_id 2000 --duration 120 --REMOVE --disk_path TrainingDataPath #J'ai l'impression que je ne pourrais pas le faire ...?

Cela peut être un peu difficile car vous devrez déposer vous-même la vidéo et la diviser en images. Eh bien, si vous voulez super-résolution de votre vidéo préférée, il se peut que cette route doive être prise, donc cela ne pose pas de problème.

finalement

Veuillez signaler des éléments tels que l'immobilité et les erreurs typographiques.

De plus, j'ai actuellement du mal à doubler, tripler ou 6x la super-résolution de TecoGAN, mais cela ne fonctionne pas. C'est parce que notre FRVSR est un modèle 4x en premier lieu. J'apprécierais n'importe quel conseil.

Merci beaucoup.

Recommended Posts

Bloc-notes sur TecoGAN
À propos de LangID
À propos de CAGR
À propos de virtiofs
À propos de python-apt
À propos de l'autorisation
À propos de sklearn.preprocessing.Imputer
À propos de Gunicorn
À propos de requirements.txt
À propos des paramètres régionaux
À propos de l'axe = 0, axe = 1
À propos de l'importation
À propos de numpy
À propos de pip
À propos de Linux
À propos de numpy.newaxis
À propos d'Endian
À propos de Linux
À propos de l'importation
À propos de Linux
À propos de Linux
À propos de cv2.imread
À propos de _ et __
À propos de wxPython