¿Cómo ejecutar PULSE (face-depixelizer) en Linux en Windows 10 (WSL)? Tutorial

Una tarde de primavera de 2020, leí un artículo sobre la red neuronal del depixelizador facial . Después de estudiarlo, resultó que este es un tipo de interfaz para el motor PULSE . Que se basa en la red neuronal StyleGAN (genera caras con características aleatorias).



En este tutorial, lo guiaré a través de los pasos y le mostraré cómo instalé Ubuntu en Windows 10 (WSL), configuré un entorno para experimentar con PULSE , subí otra foto original y obtuve un buen resultado.

El resultado de restaurar la imagen original en PULSE

Morph animación y video tutorial - más.





Lo que nos ha sido dado





Face-Depixelizer es una interfaz para trabajar con PULSE.



PULSE es un motor basado en la red neuronal StyleGAN. Su significado es que restaura imágenes de la cara de una persona a partir de una fotografía borrosa. Y, por cierto, este es un trabajo científico para CFV .



StyleGAN es una red neuronal adversaria generativa de NVidia que genera una cara aleatoria de una persona inexistente (de hecho, será divertido si esa persona ya existe).





¡PULSE , finalmente, nos dirá aproximadamente cómo es la misma persona que parpadeó en esta foto!





Tomando el PULSO





Me preguntaba qué había bajo el capó de PULSE y, en general, cómo podría iniciarse localmente.

Por interés, después de mirar en diagonal a través de un artículo científico, comencé a pensar en cómo comenzar y cómo establecerlo todo (a pesar de que nunca me había establecido una "red neuronal").



Y comencé diciendo que lo antes posible, antes de que cayera el github (si sabes a lo que me refiero), cambié al proyecto PULSE . Donde el autor indicó esta opción de instalación: anaconda y python. Aquellos. en cualquier caso, se requieren paquetes específicos de plataforma (bibliotecas). Soy más un usuario de Windows que Linux. Pero, de todos modos, me gustaría ejecutar sin editar y tediosa selección de bibliotecas. Y sin Linux, esto no se puede hacer.



Hace algún tiempo, algunos de los especialistas de TI estaban hablando de Linux en Windows. Y te diré eso, para mí, en vano. La cosa es conveniente, aunque aún no se ha completado.

WSL , el Subsistema de Windows para Linux, permite a los desarrolladores ejecutar el entorno GNU / Linux, incluida la mayoría de los programas, utilidades y aplicaciones de línea de comandos, directamente en Windows sin ninguna modificación, eliminando la necesidad de una máquina virtual separada.


Aquellos. Este es el acceso a la línea de comandos de Linux desde Windows. Un terminal con Linux es tan fácil de iniciar como cmd. Convenientemente



Empecemos



Para trabajar con la terminal, aquí y en el video usaré la Terminal de Windows (de la Tienda Windows).


En breve



Comprobando los requisitos



  • Tarjeta de video NVidia con soporte CUDA (la red neuronal StyleGAN usa CUDA). Lista de tarjetas de video compatibles aquí
  • 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. .




Descargue e instale anaconda.



Instalar PULSE



  1. Descargando desde github PULSE
  2. Edición pulse.yml:



    • Añadir canales anaconda, conda-forge
    • Eliminar referencias a ensamblajes específicos
  3. Instale el entorno PULSE usando el archivo editado
  4. Comprobación del rendimiento de Pytorch y CUDA Toolkit en Python.


Experimentando



  1. Usando pip update jupyter notebook a la última versión
  2. Ajuste de la imagen (en el número escriben que PULSE funciona con una imagen cuadrada de 1024 * 1024 y tres canales RGB, es decir, sin transparencia)
  3. Aumentamos / disminuimos el número de pasos y el error
  4. ...
  5. ¡LUCRO!




Arriba hay una animación morph creada a partir de imágenes intermedias.



Como dice el refrán: "es mejor ver una vez que escuchar cien veces". El video muestra todos los pasos, comenzando con la actualización de WSL2 y la instalación de Ubuntu.







Y ahora…



Más detalles



Requisitos



Una vez más, repetiré los requisitos (... y después de la centésima edición, recordaré a Fowler por centésima vez):



  • Windows 10 versión 2004 compilación 20150 o superior
  • WSL2 (versión 4.19.121 y superior)
  • Ubuntu 18.04 para WSL2 es la distribución en sí de la Tienda Windows. Instalado después de que todas las actualizaciones de Windows 10 Insider se avancen , incl. WSL2
  • NVidia Driver WSL es una versión experimental de controladores con soporte para la nueva versión de WSL2. Requiere consentimiento para participar en el Programa Experimental NVidia. Pero no todas las tarjetas funcionarán .


Preparación del sistema operativo



Windows 10


El objetivo : Windows 10 versión 2004 compilación 20150 y



pretratamiento anterior :



  1. Lanzando actualizaciones
  2. Luego, usando la aplicación winver, verificamos la versión actual de Windows
  3. Si su versión de Windows es inferior a Windows 10 versión 2004 compilación 20150, deberá seguir los pasos a continuación
  4. Y si todo está bien, ¡felicidades, no tiene que unirse al Programa Windows Insider! ¡Siéntete libre de pasar a la siguiente etapa!


Lo que hacemos :



  1. Entrar al programa Windows Insider
  2. Además, en los parámetros del sistema "Actualización y seguridad":

    • Ficha Programa interno (si está en blanco, consulte la sección Solución de problemas a continuación):



      1. Opciones de evaluación: acceso temprano
      2. Haga clic en "Inicio".
    • Pestaña Actualización de Windows:



      1. En "Avanzado", asegúrese de permitir "Al actualizar para recibir actualizaciones para otros productos de Microsoft" (esto es para instalar WSL2 4.19.121 y superior)
      2. Estamos actualizando


Verificación : lanzamiento winver. En el cuadro de diálogo que se abre, mira la versión.



Controlador NVidia CUDA WSL


Propósito : La instalación de la última versión del controlador de Nvidia CUDA WSL



Que hacemos :



  1. Ir a la página
  2. Si aún no se ha registrado, nos registramos; aceptar participar en el programa experimental
  3. Descargar e instalar.


Verificación : estará en la etapa de "verificación de operabilidad de CUDA"



WSL2


El objetivo : WSL2 versión 4.19.121 y



pretratamiento superior :



  1. Actualizamos Windows a Windows 10 versión 2004 compilación 20150 y superior, si no actualiza en los pasos anteriores
  2. Si, después de ejecutar en la terminal:



    wsl --update
    se mostrará el contenido de la ayuda (a la wsl --help), luego tendrá una versión anterior. Luego continúe con los pasos a continuación
  3. Si se muestra una versión de 4.19.121 y superior, omitimos esta etapa.


Lo que hacemos :



  1. Inicie PowerShell como administrador y ejecútelo secuencialmente:

    • Incluimos el componente adicional "Subsistema de Windows para Linux":



      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    • Luego, habilite el componente "Plataforma de máquina virtual":



      dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    • Reiniciamos
  2. Actualización de WSL:



    wsl --update
  3. A continuación, instalamos la segunda versión de WSL, como valor predeterminado para todas las distribuciones futuras:

    para hacer esto, inicie PowerShell con derechos de administrador y ejecute:



    wsl --set-default-version 2


Comprobar : comando:



wsl --update
[después de instalar la actualización] mostrará la versión 4.19.121 y superior.



Ubuntu 18.04 en WSL2


El objetivo : Ubuntu 18.04 en el



pretratamiento WSL2 : if (no he probado la siguiente rama, pero sería bueno si especificas en los comentarios, quién enfrentó si ayudó) en WSL se instaló previamente Ubuntu 18.04:



  • Lo comprobamos en la lista:



    wsl --list --all -v
  • Para esta distribución, cambie la versión WSL a la versión 2:



    wsl --set-version Distro 2


    Por ejemplo:



    wsl --set-version Ubuntu-18.04 2
  • Reiniciamos


Lo que hacemos :



  1. Ir a la tienda de Windows
  2. Estamos buscando Ubuntu 18.04 e instalamos


Comprobar : abrir una terminal, ejecutar:



wsl --list --all -v


ver Ubuntu 18.04 Version 2



Preparando Ubuntu



Pre-preparacion


  1. Actualización de índices de paquetes:



    sudo apt update
  2. Instale cmake (para instalar dlib):



    sudo apt install cmake
  3. Para descomprimir archivos zip, instale, por ejemplo, la utilidad de descompresión :



    sudo apt install unzip


Instalación del kit de herramientas CUDA


  1. Agregue CUDA al índice del paquete:



    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. Instale el kit de herramientas CUDA:



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


Comprobación del rendimiento del kit de herramientas CUDA




Para hacer esto, ejecute los ejemplos (el programa deviceQuery es informativo):



  1. Descargando:



    wget https://github.com/NVIDIA/cuda-samples/archive/master.zip
  2. Abrir la cremallera:



    unzip master.zip
  3. Continúa y construye (todo):



    make
  4. Correr:



    ./bin/x86_64/linux/release/deviceQuery


    La aplicación mostrará una lista de dispositivos compatibles.


Instalando Anaconda


  1. Descargue la distribución desde el enlace
  2. Correr:



    bash Anaconda3-2020.02-Linux-x86_64.sh


    Durante la instalación:



    1. Aceptar una licencia
    2. Dejamos PREFIJO
    3. Estamos de acuerdo con la inicialización
  3. Reinicie la terminal o ejecute:



    source ~/.bashrc


Configurando el medio ambiente en anaconda



Configurando PULSE


  1. Descargando:



    wget https://github.com/adamian98/pulse/archive/master.zip
  2. Abrir la cremallera:



    unzip master.zip
  3. Cree una copia de seguridad de pulse.yml:



    cp pulse.yml pulse.yml.bak
  4. Corregir pulse.yml:



    1. Agregue canales (estos son fuentes de paquetes):

      • conda-forge
      • anaconda
    2. Eliminamos todas las referencias para una versión específica del paquete.

      Ejemplo : zstd=1.3.7=h5bba6e5_0elimine la última parte de la línea " ", comenzando con el signo igual: " =h5bba6e5_0". Como resultado, obtenemos " zstd=1.3.7".



      Lo hacemos a mano o mediante la utilidad 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 necesita otros paquetes, asegúrese de prestar atención a los canales, agregue si es necesario.
  7. Estamos esperando que se instale
  8. Luego activamos:



    conda activate pulse


Comprobación del rendimiento de Pytorch y CUDA en python


  1. Este guión:



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


    Debería generar algo como esto:



    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. Y éste:



    import torch
    torch.cuda.is_available()


    Saldrá:



    True


En esta etapa, en teoría, puedes parar. Pero seguí adelante e instalé el cuaderno jupyter para experimentos.

Jupyter Notebook es una herramienta increíblemente poderosa para desarrollar y presentar de manera interactiva proyectos de ciencia de datos.




Trabajando con PULSE





Empecemos




  1. Activamos el entorno de pulso:



    conda activate pulse
  2. Instalando Júpiter:



    pip install jupyter
  3. Correr:



    jupyter notebook
    Y además:

    1. Crear un nuevo cuaderno Nuevo-> Python3 (cuaderno)
    2. Pegue el código del archivo allí
    3. Lanzamos el archivo fuente a la raíz del proyecto, renombrándolo a source.png:



      cp /mnt/c/Users//Desktop/face1.png source.png
    4. Lanzamos Esperamos


Notas


  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: ...


    Donde 400 es el número de pasos (pasos) logrado (especificado), L2 es el valor de interés, debe ser menor que el eps especificado (según tengo entendido, esta es la precisión de la optimización; camaradas desarrolladores de IA, ¿dime qué es?).



    Entonces, por ejemplo, necesita aumentar una cosa o todas juntas: pasos (ponga más de 400) y \ o eps (ponga eps = 0.0013 y más, es decir, debe ser para que eps> = L2) ...

  4. Si desea ver fotos intermedias para cada paso, agregue el parámetro Las -save_intermediate

    imágenes se guardan en la carpeta runs/: en la carpeta HR- alta resolución, en la carpeta LR- baja resolución)


Los posibles problemas están a continuación.



Solución de problemas



Si no solo encontró errores, sino que también los resolvió, escriba, agregaré aquí.


Pantalla blanca en el programa Windows Insider


Opción : está bajo un usuario diferente, no tiene suficientes privilegios.

Solución : ver enlace . Pero lo resolví sin cambiar el registro.



Las muestras de CUDA no comienzan


Opciones :



  1. Su tarjeta gráfica no es compatible
  2. No has lanzado el último WSL2
  3. No ha instalado la última versión (experimental) de NVidia Driver CUDA WSL


jupyter notebookLanza un error al inicio


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

Solución : copie la cadena de conexión al navegador (no entendí otras soluciones).



Al iniciar PULSE, un error se cae constantemente


Error : Google Quota Exceeded

Solución : copie el archivo fuente de mí y tírelo a la raíz, a la carpeta de caché (créelo si no está allí).



O:



  1. Descargue el archivo usando el primer enlace de google de PULSE.py
  2. Cámbiele el nombre usando la plantilla md5hash _synthesis.pt, donde md5hash es el hash md5 del archivo descargado (en la versión actual es 6b943ee69b8491ac40e8e9ced6175659_synthesis.pt)
  3. Lo arrojamos a la carpeta de caché (créelo si no está en la raíz del directorio donde se encuentra PULSE)


Al iniciar PULSE o comprobar Pytorch arroja un error


Error : ModuleNotFoundError: No module named 'torch'

Solución : si ha verificado Pytorch y funciona, significa que no ha activado el entorno de pulso. Para hacer esto, ejecute el siguiente comando:



conda activate pulse


Conclusión



El siguiente paso es estudiar StyleGAN y otras "redes neuronales" basadas en él.

Me gustaría leer sus comentarios sobre el artículo, recomendaciones (incluso sobre la presentación, ya que este es mi primer artículo público), enmiendas.



¡Gracias a todos por leer!



Referencias y enlaces a utilidades, controladores



  1. Instrucciones de instalación para NVidia Driver para CUDA en WSL
  2. Controladores NVidia para CUDA bajo WSL
  3. Lista de tarjetas de video CUDA compatibles
  4. Ejemplos de CUDA
  5. Instrucciones para instalar WSL2 en Windows 10
  6. Ayuda e Introducción al Programa Windows Insider - Windows Early Access
  7. Instrucciones para instalar Anaconda en el sistema Linux
  8. Lista de distribuciones de Anaconda
  9. Jupyter Notbook - Análisis y Experimentos
  10. Repositorio PULSE
  11. Repositorio Face-Depixelizer
  12. Repositorio de StyleGAN



All Articles