Comment exécuter PULSE (face-depixelizer) sous Linux sur Windows 10 (WSL)? Didacticiel

Un soir de printemps 2020, j'ai lu un article sur le réseau de neurones dépixelisateur de visage . Après l'avoir étudié, il s'est avéré qu'il s'agissait d'une sorte d'interface pour le moteur PULSE . Qui est basé sur le réseau de neurones StyleGAN (génère des visages avec des caractéristiques aléatoires).



Dans ce tutoriel, je vais vous guider à travers les étapes et montrer comment j'ai installé Ubuntu sur Windows 10 (WSL), mis en place un environnement pour expérimenter avec PULSE , téléchargé une autre photo originale et obtenu un bon résultat.

Le résultat de la restauration de l'image d'origine dans PULSE

Animation Morph et tutoriel vidéo - plus loin.





Ce qui nous a été donné





Face-Depixelizer est une interface pour travailler avec PULSE.



PULSE est un moteur basé sur le réseau neuronal StyleGAN. Sa signification est qu'il restaure les images du visage d'une personne à partir d'une photographie floue. Et au fait, c'est un travail scientifique pour CFV .



StyleGAN est un réseau neuronal antagoniste génératif de NVidia qui génère un visage aléatoire d'une personne inexistante (en fait, ce sera drôle si une telle personne existe déjà).





PULSE , enfin, nous dira à peu près à quoi ressemble la même personne qui a cligné des yeux sur cette photo!





Prendre le PULSE





Je me suis demandé ce qu'il y avait sous le capot de PULSE et, en général, comment il pouvait être lancé localement.

Par intérêt, après avoir regardé en diagonale un article scientifique, j'ai commencé à réfléchir à la manière de commencer et de mettre en place tout cela (malgré le fait que je ne m'étais jamais fixé de "réseau neuronal").



Et j'ai commencé par dire que dès que possible, avant que le github ne tombe (si vous voyez ce que je veux dire), je suis passé au projet PULSE . Là où l'auteur a indiqué cette option d'installation: anaconda et python. Ceux. dans tous les cas, des packages (bibliothèques) spécifiques à la plate-forme sont nécessaires. Je suis plus un utilisateur de Windows que de Linux. Mais, tout de même, je voudrais courir sans édition et sélection fastidieuse de bibliothèques. Et sans Linux, cela ne peut pas être fait.



Il y a quelque temps, certains informaticiens parlaient de Linux sous Windows. Et je vais vous dire que, pour moi - en vain. La chose est pratique, même si elle n'est pas encore terminée.

WSL , le sous-système Windows pour Linux, permet aux développeurs d'exécuter l'environnement GNU / Linux, y compris la plupart des programmes de ligne de commande, des utilitaires et des applications, directement sur Windows sans aucune modification, éliminant ainsi le besoin d'une machine virtuelle distincte.


Ceux. c'est l'accès à la ligne de commande linux depuis Windows. Un terminal avec Linux est aussi simple à démarrer que cmd. Idéalement.



Commençons



Pour travailler avec le terminal, ici et dans la vidéo, j'utiliserai Windows Terminal (à partir du Windows Store).


En bref



Vérification des exigences



  • Carte vidéo NVidia avec prise en charge CUDA (le réseau neuronal StyleGAN utilise CUDA). Liste des cartes vidéo prises en charge ici
  • NVidia CUDA WSL2 ( , ).
  • Windows 10 version 2004 build 20150 ( Windows Insider Program ), .
  • WSL2 (4.19.121 ; Windows) linux .
  • Ubuntu 18.04 WSL2 Windows Store.


Ubuntu





CUDA



  1. CUDA
  2. .




Téléchargez et installez anaconda.



Installez PULSE



  1. Téléchargement depuis github PULSE
  2. Modification de pulse.yml:



    • Ajouter des chaînes anaconda, conda-forge
    • Suppression des références à des assemblages spécifiques
  3. Installez l'environnement PULSE à l'aide du fichier modifié
  4. Vérification des performances de Pytorch et de la boîte à outils CUDA en Python.


Expérimenter



  1. Utilisation de pip Update Jupyter Notebook vers la dernière version
  2. Ajustement de l'image (dans le numéro, ils écrivent que PULSE fonctionne avec une image carrée de 1024 * 1024 et trois canaux RVB, c'est-à-dire sans transparence)
  3. Nous augmentons / diminuons le nombre d'étapes et l'erreur
  4. ...
  5. PROFIT!




Ci-dessus, une animation de morphing créée à partir d'images intermédiaires.



Comme le dit le dicton: «il vaut mieux voir une fois que d'entendre cent fois». La vidéo montre toutes les étapes, en commençant par la mise à jour de WSL2 et l'installation d'Ubuntu.







Et maintenant…



Plus de détails



Exigences



Encore une fois, je vais répéter les exigences (... et après la centième édition, je me souviendrai de Fowler pour la centième fois):



  • Windows 10 version 2004 build 20150 ou supérieur
  • WSL2 (version 4.19.121 et supérieure)
  • Ubuntu 18.04 pour WSL2 est la distribution elle-même du Windows Store. Installé après que toutes les mises à jour de Windows 10 Insider ont été reportées , y compris. WSL2
  • NVidia Driver WSL est une version expérimentale des pilotes prenant en charge la nouvelle version de WSL2. Nécessite le consentement pour participer au programme expérimental NVidia. Mais toutes les cartes ne fonctionneront pas .


Préparation du système d'exploitation



Windows 10


Objectif :



prétraitement Windows 10 version 2004 build 20150 et supérieur :



  1. Lancement des mises à jour
  2. Ensuite, à l'aide de l'application winver, nous vérifions la version actuelle de Windows
  3. Si votre version de Windows est inférieure à Windows 10 version 2004 build 20150, vous devrez suivre les étapes ci-dessous
  4. Et si tout va bien, félicitations, vous n'êtes pas obligé de rejoindre le programme Windows Insider! N'hésitez pas à passer à l'étape suivante!


Ce que nous faisons :



  1. Accès au programme Windows Insider
  2. De plus, dans les paramètres système "Mise à jour et sécurité":

    • Onglet Programme Insider (s'il est vide, voir la section Dépannage ci-dessous):



      1. Options d'évaluation: accès anticipé
      2. Cliquez sur "Démarrer".
    • Onglet Windows Update:



      1. Dans la section "Avancé", assurez-vous d'autoriser "Lors de la mise à jour pour recevoir des mises à jour pour d'autres produits Microsoft" (cela concerne l'installation de WSL2 4.19.121 et supérieur)
      2. Nous mettons à jour.


Vérifier : lancement winver. Dans la boîte de dialogue qui s'ouvre, regardez la version.



Pilote NVidia CUDA WSL


Objectif : installer la dernière version de NVidia Driver CUDA WSL



Que faisons-nous :



  1. Aller à la page
  2. Si vous n'êtes pas encore inscrit, nous vous enregistrons; accepter de participer au programme expérimental
  3. Télécharger et installer.


Vérification : sera au stade du "contrôle d'opérabilité CUDA"



WSL2


L'objectif : WSL2 version 4.19.121 et



prétraitement supérieur :



  1. Nous mettons à jour Windows vers Windows 10 version 2004 build 20150 et supérieur, sinon la mise à jour dans les étapes ci-dessus
  2. Si, après exécution dans le terminal:



    wsl --update
    le contenu de l'aide sera affiché (a la wsl --help), alors vous avez une ancienne version. Puis passez aux étapes ci-dessous
  3. Si une version de 4.19.121 et supérieure est affichée, nous sautons cette étape.


Ce que nous faisons :



  1. Lancez PowerShell en tant qu'administrateur et exécutez de manière séquentielle:

    • Nous incluons le composant supplémentaire "Sous-système Windows pour Linux":



      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    • Ensuite, activez le composant "Virtual Machine Platform":



      dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    • Nous redémarrons.
  2. Mise à jour de WSL:



    wsl --update
  3. Ensuite, nous installons la deuxième version de WSL - par défaut pour toutes les futures distributions:

    pour ce faire, lancez PowerShell avec les droits d' administrateur et exécutez:



    wsl --set-default-version 2


Vérifier : commande:



wsl --update
[après l'installation de la mise à jour] affichera la version 4.19.121 et supérieure.



Ubuntu 18.04 sur WSL2


Le but : Ubuntu 18.04 sur le



prétraitement WSL2 : si (je n'ai pas testé la branche suivante, mais ce serait bien si vous spécifiez dans les commentaires, qui a fait face si aidé) sur le WSL était précédemment installé Ubuntu 18.04:



  • Nous le vérifions dans la liste:



    wsl --list --all -v
  • Pour cette distribution, basculez la version WSL vers la version 2:



    wsl --set-version Distro 2


    Par exemple:



    wsl --set-version Ubuntu-18.04 2
  • Nous redémarrons.


Ce que nous faisons :



  1. Accédez au Windows Store
  2. Nous recherchons Ubuntu 18.04 et installons


Vérifier : ouvrir un terminal, exécuter:



wsl --list --all -v


voir Ubuntu 18.04 Version 2



Préparer Ubuntu



Pré-préparation


  1. Mise à jour des index des packages:



    sudo apt update
  2. Installez cmake (pour installer dlib):



    sudo apt install cmake
  3. Pour décompresser les archives zip, installez, par exemple, l'utilitaire de décompression :



    sudo apt install unzip


Installation de la boîte à outils CUDA


  1. Ajoutez CUDA à l'index du package:



    sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
    
    sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
    
    sudo apt update
  2. Installez la boîte à outils CUDA:



    sudo apt install -y cuda-toolkit-11-0


Vérification des performances de la boîte à outils CUDA




Pour ce faire, exécutez les exemples (le programme deviceQuery est informatif):



  1. Téléchargement:



    wget https://github.com/NVIDIA/cuda-samples/archive/master.zip
  2. Décompressez:



    unzip master.zip
  3. Allez-y et construisez (tout):



    make
  4. Courir:



    ./bin/x86_64/linux/release/deviceQuery


    L'application affichera une liste des appareils compatibles.


Installation d'Anaconda


  1. Téléchargez la distribution à partir du lien
  2. Courir:



    bash Anaconda3-2020.02-Linux-x86_64.sh


    Pendant l'installation:



    1. Accepter une licence
    2. Nous quittons PREFIX
    3. Nous acceptons l'initialisation
  3. Redémarrez le terminal ou exécutez:



    source ~/.bashrc


Configuration de l'environnement dans anaconda



Configurer PULSE


  1. Téléchargement:



    wget https://github.com/adamian98/pulse/archive/master.zip
  2. Décompressez:



    unzip master.zip
  3. Créez une sauvegarde de pulse.yml:



    cp pulse.yml pulse.yml.bak
  4. Correction de pulse.yml:



    1. Ajouter des chaînes (ce sont des sources de packages):

      • conda-forge
      • anaconda
    2. Nous supprimons toutes les références pour une version spécifique du package.

      Exemple : zstd=1.3.7=h5bba6e5_0supprimez la dernière partie de la ligne " ", en commençant par le signe égal: " =h5bba6e5_0". En conséquence, nous obtenons " zstd=1.3.7".



      Nous le faisons soit à la main, soit via l'utilitaire sed:



      sed '/==/b; s/=\([^=]*\)$//' pulse.yml > pulse1.yml


      : , , "==", regexp
  5. pulse1.yml:



    conda env create -f pulse1.yml
  6. , - NotResolverPackage. libfortran 3.0.1:



    1. conda libfortran
    2. Anaconda Cloud Files (3.0.1), , , osx-64
    3. Anaconda Cloud, cloud-forge 3.0.0-1 linux-64. !
    4. pulse1.yml libfortran=3.0.1 libfortran=3.0.0=1
    5. :



      conda env create -f pulse1.yml
    6. , !
    7. Si vous avez besoin d'autres packages, assurez-vous de faire attention aux chaînes, ajoutez si nécessaire.
  7. Nous attendons qu'il soit installé
  8. Ensuite, nous activons:



    conda activate pulse


Vérification des performances de Pytorch et CUDA en python


  1. Ce script:



    from __future__ import print_function
    import torch
    x = torch.rand(5, 3)
    print(x)


    Devrait afficher quelque chose comme ceci:



    tensor([[0.3380, 0.3845, 0.3217],
    	[0.8337, 0.9050, 0.2650],
    	[0.2979, 0.7141, 0.9069],
    	[0.1449, 0.1132, 0.1375],
    	[0.4675, 0.3947, 0.1426]])
  2. Et celui-là:



    import torch
    torch.cuda.is_available()


    Sortira:



    True


À ce stade, en théorie, vous pouvez vous arrêter. Mais je suis allé de l'avant et j'ai installé le notebook jupyter pour des expériences.

Jupyter Notebook est un outil incroyablement puissant pour développer et présenter de manière interactive des projets de science des données.




Travailler avec PULSE





Commençons




  1. Nous activons l'environnement d'impulsion:



    conda activate pulse
  2. Installation de Jupiter:



    pip install jupyter
  3. Courir:



    jupyter notebook
    Et plus loin:

    1. Créer un nouveau notebook New-> Python3 (notebook)
    2. Collez-y le code du fichier
    3. Nous lançons le fichier source à la racine du projet, en le renommant source.png:



      cp /mnt/c/Users//Desktop/face1.png source.png
    4. Nous lançons. Nous attendons


Remarques


  1. , 500-800, eps
  2. :

    1. , , 1024*1024
    2. PNG
    3. (RGB) RGBA
  3. : "Could not find a face that downscales correctly within epsilon", :



    steps \ eps, , (steps), eps L2. .



    :



    BEST (400) | L2: 0.0013 GEOGROSS: | TOTAL: | time: ...


    Où 400 est le nombre d'étapes (étapes) atteint (spécifié), L2 est la valeur d'intérêt, il doit être inférieur à l'EPS spécifié (si je comprends bien, c'est la précision de l'optimisation; camarades développeurs d'IA, dites-moi ce que c'est?).



    Ainsi, par exemple, vous devez augmenter une chose ou tous ensemble: étapes (mettre plus de 400) et \ ou eps (mettre eps = 0,0013 et plus, c'est-à-dire qu'il devrait en être ainsi que eps> = L2) ...

  4. Si vous souhaitez voir des photos intermédiaires pour chaque étape, ajoutez le paramètre Les -save_intermediate

    images sont enregistrées dans le dossier runs/: dans le dossier HR- haute résolution, dans le dossier LR- basse résolution)


Les problèmes possibles sont ci-dessous.



Solution des problèmes



Si vous avez non seulement rencontré des erreurs, mais que vous les avez également résolues, écrivez, j'ajouterai ici.


Écran blanc dans le programme Windows Insider


Option : vous êtes sous un autre utilisateur, manque de privilèges.

Solution : voir le lien . Mais je l'ai résolu sans changer le registre.



Les échantillons CUDA ne démarrent pas


Options :



  1. Votre carte graphique n'est pas prise en charge
  2. Vous n'avez pas lancé le dernier WSL2
  3. Vous n'avez pas installé la dernière version (expérimentale) de NVidia Driver CUDA WSL


jupyter notebookLève une erreur au démarrage


Erreur : Start : This command cannot be run due to the error: The system cannot find the file specified.

Solution : copiez la chaîne de connexion dans le navigateur (je n'ai pas compris les autres solutions).



Au démarrage de PULSE, une erreur tombe constamment


Erreur : Google Quota Exceeded

Solution : copiez le fichier source de moi et jetez-le à la racine - dans le dossier cache (créez-le s'il n'y est pas).



Ou:



  1. Téléchargez le fichier en utilisant le premier lien google de PULSE.py
  2. Renommez-le en utilisant le modèle md5hash _synthesis.pt, où md5hash est le hachage md5 du fichier téléchargé (dans la version actuelle 6b943ee69b8491ac40e8e9ced6175659_synthesis.pt)
  3. Nous le jetons dans le dossier cache (créez-le s'il n'est pas à la racine du répertoire où se trouve PULSE)


Lors du démarrage de PULSE ou de la vérification de Pytorch génère une erreur


Erreur : ModuleNotFoundError: No module named 'torch'

Solution : Si vous avez vérifié pytorch et que cela fonctionne, cela signifie que vous n'avez pas activé l'environnement d'impulsion. Pour ce faire, exécutez la commande suivante:



conda activate pulse


Conclusion



L'étape suivante consiste à étudier StyleGAN et d'autres «réseaux neuronaux» basés sur celui-ci.

Je serais heureux de lire vos commentaires sur l'article, les recommandations (y compris sur la présentation, puisque c'est mon premier article public), les amendements.



Merci à tous d'avoir lu!



Références et liens vers des utilitaires, des pilotes



  1. Instructions d'installation du pilote NVidia pour CUDA sur WSL
  2. Pilotes NVidia pour CUDA sous WSL
  3. Liste des cartes vidéo CUDA prises en charge
  4. Exemples CUDA
  5. Instructions pour l'installation de WSL2 sur Windows 10
  6. Aide et introduction au programme Windows Insider - Accès anticipé à Windows
  7. Instructions pour l'installation d'Anaconda sur un système Linux
  8. Liste des distributions Anaconda
  9. Jupyter Notbook - Analyses et expériences
  10. Dépôt PULSE
  11. Référentiel Face-Depixelizer
  12. Dépôt StyleGAN



All Articles