Cómo intercambiar las caras entre dos imágenes usando FaceSwap con Python 3 en Ubuntu 18.04

Cómo intercambiar las caras entre dos imágenes usando FaceSwap con Python 3 en Ubuntu 18.04

Los ultrafalsos, fotomontajes y videomontajes automaticos son cada vez más frecuentes en la actualidad, especialmente aquellos videos de celebridades que son reemplazados por otros y así sucesivamente. Hace un par de años también había una aplicación interesante que te permitía intercambiar caras con la persona a tu lado y todos estaban encantados con esta. La razón detrás de eso, no lo sé, sinceramente no sé por qué alguien haría eso, pero, si quieres experimentar, esto se puede hacer con Python y hay un gran proyecto de código abierto que contiene el código para hacer esto de una manera decente.

En este artículo, te mostraré cómo implementar tu propia instancia local de FaceSwap, una herramienta de Python3 que te ayudará a intercambiar las caras entre 2 imágenes de manera fácil y automática.

1. Instala CMake y Python3-OpenCV

Antes de continuar con el uso de la herramienta, debes instalar el software necesario para que funcione. Primero, actualiza los repositorios de ubuntu con el siguiente comando:

sudo apt-get update

Luego procede a instalar CMake con el siguiente comando:

sudo apt-get install cmake

CMake es un sistema extensible de código abierto que administra el proceso de compilación en un sistema operativo y de una manera independiente del compilador. La instalación de CMake ocupará aproximadamente 140 MB de espacio en su disco.

Después de instalar CMake, deberás instalar la versión Python3 de OpenCV (paquetes OpenCV no oficiales preconstruidos solo para CPU para Python 3) con el siguiente comando:

sudo apt-get install python3-opencv

La instalación de python3-OpenCV ocupará aproximadamente 440 MB de espacio en su disco.

2. Clonar FaceSwap

El proyecto que usaremos en este tutorial es el increíble FaceSwap, una herramienta de código abierto que te permite intercambiar caras entre dos imágenes usando Python 3 con OpenCV y dlib. Procede a clonar el código fuente del proyecto usando git:

git clone https://github.com/wuhuikai/FaceSwap.git

Después de descargar la fuente, cambia al directorio FaceSwap que acabas de clonar:

cd FaceSwap

Puedes visitar el repositorio oficial en Github aquí para obtener más información sobre esta herramienta. Una vez que estés en el directorio del proyecto, asegúrate de instalar las dependencias de Python con el siguiente comando que leerá los requisitos de la herramienta en el requirements.txt (puedes instalar el módulo pip si no está instalado con sudo apt install python3-pip):

python3 -m pip install -r requirements.txt

Esto instalará las siguientes bibliotecas (hasta la fecha):

  • dlib >= 19.9.0: Dlib es un conjunto de herramientas moderno de C ++ que contiene algoritmos y herramientas de aprendizaje automático para crear software complejo en C++ para resolver problemas del mundo real. Se utiliza tanto en la industria como en el mundo académico en una amplia gama de dominios que incluyen robótica, dispositivos integrados, teléfonos móviles y grandes entornos informáticos de alto rendimiento. Las licencias de código abierto de Dlib le permiten usarlo en cualquier aplicación, de forma gratuita.
  • numpy >= 1.13.1: NumPy es el paquete fundamental para la computación científica con Python. Contiene entre otras cosas.
  • scipy >= 0.18.0: SciPy es un ecosistema de software de código abierto basado en Python para matemáticas, ciencias e ingeniería.

La instalación tomará un tiempo y generará el siguiente resultado:

Collecting dlib>=19.9.0
  Downloading dlib-19.22.0.tar.gz (7.4 MB)
     |████████████████████████████████| 7.4 MB 2.5 MB/s 
Requirement already satisfied: numpy>=1.13.1 in /usr/lib/python3/dist-packages (from -r requirements.txt (line 2)) (1.17.4)
Collecting scipy>=0.18.0
  Downloading scipy-1.6.2-cp38-cp38-manylinux1_x86_64.whl (27.2 MB)
     |████████████████████████████████| 27.2 MB 2.6 MB/s 
Building wheels for collected packages: dlib
  Building wheel for dlib (setup.py) ... done
  Created wheel for dlib: filename=dlib-19.22.0-cp38-cp38-linux_x86_64.whl size=4115477 sha256=c11bb8117a99515c583a2dbebc219422a0b1692c84b9797618c20e102c7f63ab
  Stored in directory: /home/ourcodeworld/.cache/pip/wheels/80/93/82/7b6b3974475c898a823b58a6c0b87013f0782095d43b910e64
Successfully built dlib
Installing collected packages: dlib, scipy
Successfully installed dlib-19.22.0 scipy-1.6.2

Entonces, cuando termine, debería poder usar la herramienta con Python 3.

3. Uso de FaceSwap

FaceSwap es realmente fácil de usar, el comando básico para cambiar la cara de una imagen a otra es el siguiente:

python main.py --src {source_face.jpg} --dst {destination_picture.jpg} --out {result.jpg} --correct_color --no_debug_window

Básicamente, ejecuta el archivo main.py del directorio donde clonó FaceSwap usando Python3 y proporcionando 3 argumentos que son:

  • --src: la ruta absoluta o relativa a la imagen que contendrá la cara que se moverá a la imagen de destino.
  • --dst: la ruta absoluta o relativa a la imagen cuyo rostro será reemplazado por el rostro de la imagen de origen.
  • --out: la ruta absoluta o relativa a la imagen que se generará cuando se realice el intercambio.
  • --correct_color: intenta arreglar el color del intercambio para que parezca lo más genuino posible.
  • --no_debug_window: agregue este parámetro para evitar que aparezca la ventana de depuración al ejecutar el comando de intercambio de caras.

Puedes proceder con las pruebas de las imágenes que ya están incluidas en el repositorio del proyecto (trump y Clinton):

python main.py --src imgs/test6.jpg --dst imgs/test7.jpg --out results/output6_7.jpg --correct_color --no_debug_window

Y además, prueba tus propias imágenes como hicimos con Vince Neil (vocalista de Mötley Crüe):

Vince Neil Motley Crue

Y Jon Bon Jovi (Vocalista de Bon Jovi):

Jon Bon Jovi

Para crear el increíble y único Vince Bon Jovi 🤣:

Vince Neil and Bon Jovi FaceSwap

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable