1 Introducción a Faceswap
Faceswap utiliza algoritmos de aprendizaje profundo y tecnología de reconocimiento facial para extraer las expresiones faciales, los ojos, la boca y otras características de una persona de una foto o video y compararlos con los rasgos faciales de otra persona.
Faceswap introduce la tecnología GAN además de la arquitectura de autocodificación y decodificación de Encoder-Decoder, que mejora significativamente el efecto de cambio de cara.
- Consigue fotos de rostros normales
- Distorsionar y transformar la foto de la cara
- Vector de codificación de codificador
- Vector de decodificación decodificador
- Restaurar fotos de rostros normales
En general, el cambio de rostro de Faceswap se divide principalmente en los siguientes tres procesos:
- Detección de rostro
- extracción de características
- conversión de cara
2 Escenarios de aplicación de Faceswap
Faceswap tiene una amplia gama de aplicaciones, no solo para el entretenimiento y la creación artística, sino también para la producción de cine y televisión y efectos especiales. Los siguientes son ejemplos de la aplicación de la tecnología Faceswap en diferentes campos:
-
Entretenimiento y creación artística: Faceswap se puede usar para crear fotos y videos divertidos, lo que permite a los usuarios intercambiar sus rasgos faciales con celebridades, personajes o animales, etc. Esta técnica se puede utilizar para crear imágenes divertidas, crear obras de arte creativas o generar contenido entretenido para las redes sociales.
-
Producción de cine y televisión: Faceswap juega un papel importante en la producción de cine y televisión. Se puede usar para efectos especiales digitales y efectos de maquillaje, como intercambiar los rasgos faciales de un actor con un suplente para que la audiencia no sepa que el suplente está allí. La técnica también podría usarse para restaurar figuras históricas, devolviéndoles la vida o reapareciendo en una película.
-
Protección de la privacidad y seguridad: la tecnología Faceswap también plantea problemas de privacidad y seguridad. Puede usarse para defraudar al sistema, por ejemplo, falsificando identidades para actividades ilegales o fraude. En respuesta a estos problemas, los investigadores y desarrolladores también están trabajando arduamente para brindar las soluciones correspondientes, como el desarrollo de métodos para detectar y combatir la tecnología Faceswap.
3 Construcción del entorno operativo Faceswap
3.1 preparación del entorno conda
Para la preparación del entorno conda, consulte: annoconda
3.2 Instalación del entorno operativo
git clone https://github.com/deepfakes/faceswap.git
cd faceswap
conda create -n faceswap python=3.9
conda activate faceswap
python setup.py
选择的选项如下:
Enable ROCm Support? [y/N] n
Enable AMD Support? [y/N] n
Enable Docker? [y/N] n
Enable CUDA? [Y/n] y
Continue? [y/N] y
También puede ejecutar el siguiente comando en su lugar:
Nvidia GPU: pip install -r ./requirements/requirements_nvidia.txt
CPU : pip install -r ./requirements/requirements_cpu.txt
Una vez completada la instalación, vea la lista de comandos
python faceswap.py -h
显示如下:
{extract,train,convert,gui}
extract Extract the faces from pictures or a video
train Train a model for the two faces A and B
convert Convert source pictures or video to a new one with the face swapped
gui Launch the Faceswap Graphical User Interface
optional arguments:
-h, --help show this help message and exit
4 Faceswap realiza el intercambio de rostros
Use dos videos llamados video1.mp4 y video2.mp4 respectivamente, y los dos videos se almacenan en la carpeta src del directorio raíz. El objetivo de este modelo de ejecución es reemplazar la cara en video2.mp4 con video1.mp4, el comando se ejecuta de la siguiente manera:
4.1 Descarga del modelo de pre-entrenamiento
Descarga del modelo de pre-entrenamiento: dirección de descarga
Una vez completada la descarga, muévase a la carpeta .fs_cache/ del directorio raíz de Faceswap
También puede optar por dejar que el programa se descargue automáticamente, pero la descarga es lenta y, a menudo, se desconecta.
4.2 Extraer datos faciales (elija uno de los siguientes tres métodos)
(1) Extraiga la imagen de la cara del video
- Extraiga las caras en video1.mp4 y guarde las imágenes extraídas en el directorio ./faces/f1 en el directorio raíz. Ejecute el comando de la siguiente manera:
python faceswap.py extract -i src/video1.mp4 -o faces/f1/
- Extraiga las caras en video2.mp4 y guarde las imágenes extraídas en el directorio ./faces/f2 en el directorio raíz. Ejecute el comando de la siguiente manera:
python faceswap.py extract -i src/video2.mp4 -o faces/f2/
(2) Extraiga la imagen de la cara de la imagen
Las carpetas p1 y p2 almacenan estas imágenes múltiples con caras, que pertenecen respectivamente al usuario A y al usuario B. Los comandos son los siguientes:
python faceswap.py extract -i src/p1 -o faces/f1
python faceswap.py extract -i src/p2 -o faces/f2
(3) Extraiga datos faciales a través de la herramienta ffmpeg
ffmpeg -i src/video1.mp4 faces/f1/video1-%d.png
ffmpeg -i src/video2.mp4 faces/f2/video2-%d.png
Luego extraiga los datos de la cara a través del comando en (2)
4.3 Empezar a entrenar
El archivo del modelo se guarda en el directorio f1_to_f2_model del directorio raíz
python faceswap.py train -A faces/f1 -B faces/f2 -m f1_to_f2_model/
Una vez completada la capacitación, puede verla a través del comando ll de la siguiente manera:
总用量 641232
-rw-r--r-- 1 root root 328305920 6月 29 19:08 original.h5
-rw-r--r-- 1 root root 328305920 6月 29 19:07 original.h5.bk
drwxr-xr-x 3 root root 23 6月 29 17:49 original_logs
-rw-r--r-- 1 root root 2757 6月 29 19:08 original_state.json
-rw-r--r-- 1 root root 2756 6月 29 19:07 original_state.json.bk
4.4 Cambio de rostro basado en el modelo entrenado
(1) Conversión de imagen basada en el modelo entrenado
python faceswap.py convert -i src/video1.mp4 -o converted/ -m f1_to_f2_model/
(2) Sintetizar la imagen convertida en un video
ffmpeg -i video1-%6d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
Los fps son los mismos que los del video original, que se pueden ver a través de ffmpeg -i video1.mp4