/** **/

ITCooky Recetas

Vamos a cocinar it cositas

¡Cambiamos la cara en video o foto con DeepFaceLab!

дата septiembre 13, 2021

¡DeepFake suena como miel para el oido ruso! DeepFaceLab tiene raíces rusas y un presente lóbrego, basta decir que las únicas instrucciones completas y el foro de soporte están en web p◯|~╓╖() – por cierto, por esa razon las estrellas ya están preocupadas por la existencia de la tecnología DeepFake. Sin embargo, quiero tranquilizar al resto del público, DeepFake no lo amenaza, la razón principal es que 2 fotos de Instagram no son suficientes para DeepFake, e incluso 1000 no son suficientes, especialmente si están tomadas desdel mismo angulo. Para un DeepFake realmente convincente, se necesitan miles de imágenes de la cabeza en diferentes posiciones; estas solo se pueden recopilar para celebridades con un montón de roles, entrevistas y se nesecita mas una gran potencia informática, en tarjetas de video de última generación, lo que significa que es muy caro.

Personalmente, DeepFake me fascina, esta tecnología es capaz de ultrajar a todas las computadoras domésticas más poderosas, les cuesta horas de tarbajo un simple DeepFake; alguien recordará que los primeros archivos mp3 se hicieron a la velocidad una canción por noche y es solo una cuestión del desarrollo tecnológico, pero es otro caso.

Cómo funciona DeepFake
Se explica mejor en términos de fruta. Queremos hacer jugo de naranja de manzanas. Tomamos una naranja en la mano, la exprimimos y sacamos jugo de naranja. Luego tomomos con la misma mano una manzana, apretamos y obtenemos jugo de naranja; en la vida real esto no sucede, pero en el caso de DeepFake, sí. Lo principal aquí es la mano, necesita ser entrenada; esto requiere mucha potencia de cálculo y manzanas, las naranjas no son tan importantes como una mano altamente entrenada con las manzanas, ella puede hacer jugo de uva con ellas, solo necesita ser entrenada un poco con uvas antes de eso.

Video o foto
Es igual. El video que queremos cambiar se divide en frames y se coloca en la carpeta workspace/data_dst ; en lugar de frames, simplemente puede poner una foto aquí. Si hay muchas caras en la foto, puede iniciar el reconocimiento manual y seleccionar la cara deseada.

Install DeepFaceLab
DeepFaceLab tiene un sitio oficial github.com/iperov/DeepFaceLab pero los enlaces a ensamblajes para Windows apuntan a sitio wens chugons o incluso hasta torrents.
Bajo la version Windows: DeepFaceLab_NVIDIA_up_to_RTX2080Ti_build_09_06_2021.exe

Esta es la segunda versión de DeepFaceLab. Los usuarios notan que la versión 1 hicia un excelente trabajo con las sombras y color de las caras, y la segunda versión no lo hace de forma predeterminada, y encontrar la configuración correcta es extremadamente difícil en sistemas débiles (como mío).

Linux: Quería instalarlo en Ubuntu, pero el método de instalación es un poco chungo, inclue un soft que no es free open source… y se nota que el creador de DeepFaceLab prefiere Windows, así que hago todo en él, ¡lo siento!

Como tengo una NVIDIA GeForce RTX 2070: la cantidad de núcleos CUDA® 2304, la cantidad de RAM en el kit es de 8 GB. Se necesitarán los núcleos CUDA, no hay muchos; la NVIDIA GeForce RTX 3070, ya tiene5888. Es importante tener en cuenta que mi tarjeta de video para DeepFake es débil y quialquier sera débil si deseas obtener un excelente resultado durante la noche en 12 horas; para eso es tal vez se necesitan 3-4 mejores tarjetas de video NVIDIA…

Toda la configuración de PC:
OS: Windows 10 Pro 21H1 19043.1165
CPU: AMD® Ryzen 7 3700x 8-core processor × 16
MB: Gigabyte X570 I AORUS PRO WIFI
Mem: 64 GB DDR4 1330 Mhz
GPU: Nvidia GeForce RTX 2070 8Gb
Disk: Samsung SSD 970 EVO Plus 1TB

Descomprime y obténgo

Este es el soft, no hay interfaz gráfica, toda la operación se inicia ejecutando los scripts que se presentan en la carpeta.

En Windows, debe poner esta casilla en Display > Configuración de gráficos para un mejor rendimiento de la tarjeta de video.

Material para DeepFake
El actor español Álvaro Morte será el rostro del trasplante. Tomo este video Entrevista y sesión de doblaje con Álvaro Morte ‘Smalfoot’ solo hay 402, pero todos están en la perspectiva necesaria. Por cierto, esta no es la primera cara, antes de eso ya había tomado varias – es mejor escojer cara con mas cara, frente libre, etc.

Si tienes un rostro vivo: digamos el tuyo. Esto simplifica la recopilación de datos faciales para el trasplante. Filme un video de si mismo a la máxima resolución. Para tener la mayor posición de cara posible, tendrás que: girar la cabeza hacia la izquierda, derecha, arriba, abajo, abrir la boca, sonreír, sonreír y girar la cabeza hacia la izquierda, luego hacia … y así. . Gire la cabeza mientras habla y sonríe. Cuide la luz cuando gire, tal vez aparezca una sombra en su cara en algún lugar; esto empeorará la calidad; puede que sea mejor filmar contra el fondo de una pared monótona en un día soleado, pero no bajo la luz solar directa.

Como video para translante, primero tomé dos segundos de 720p del tráiler del nuevo Matrix, pero después de una noche de procesamiento, el resultado fue tan terrible que … decidí tomar ya un video de calidad terrible una vieja serie humorística mexicana, el personaje Profesor Hiraphales

Hacemos un DeepFake
Vamos a la carpeta donde se descomprimió DeepFacelab. En carpeta workspace ya hay ejemplos, así que borramos todo, ejecutamos:
1) clear workspace.bat

Ahora en workspace copiamos el video con Alvaro y le cambiamos el nombre a data_scr.mp4

Le sacamos frames, para ello ejecutamos:
2) extract images from video data_src.bat
cambio
[0] Enter FPS ( ?:help ) : 3
[png] Output image format ( png/jpg ?:help ) : jpg
Los frames aparesen en una carpeta workspace/data_src

Ahora hay que encontrar caras en estos frames, ejecutamos:
4) data_src faceset extract.bat
Esto se puede hacer manualmente, si, por ejemplo, hay más de una cara en el frame

Aquí cambio los parámetros, el resto son predeterminados.
[f] Face type ( f/wf/head ?:help ) : f
[0] Max number of faces from image ( ?:help ) : 1

Extracting faces...
Running on GeForce RTX 2070
100%|##############################################################################| 402/402 [07:22<00:00,  3.10it/s]
-------------------------
Images found:        402
Faces detected:      399

Las caras malas se pueden limpiar ejecutando:
4.2) data_src sort.bat
Eliminar borrosas, etc.

Choose sorting method:
[0] blur
[1] motion_blur
[2] face yaw direction
[3] face pitch direction
[4] face rect size in source image
[5] histogram similarity
[6] histogram dissimilarity
[7] brightness
[8] hue
[9] amount of black pixels
[10] original filename
[11] one face in image
[12] absolute pixel difference
[13] best faces
[14] best faces faster

Ahora en workspace copie el video de Girafales y cámbiele el nombre a data_dst.mp4

También necesitamos extraer frames, ejecutar:
3) extract images from video data_dst FULL FPS.bat
aquí solo te dan la opción del tipo de foto
[png] Output image format ( png/jpg ?:help ) : jpg

Sacamos las caras:
5) data_dst faceset extract.bat
Aquí también elijo opcion cara
[f] Face type ( f/wf/head ?:help ) : f

También se pueden limpiar, pero yo no.

Si tiene dos caras similares a los mismos peinados, etc., puede omitir los siguientes pasos: son para un estudio más profundo y preciso de las máscaras faciales.

No entiendo muy bien si estoy haciendo todo en el orden correcto, pero por el resultado veo que sí.

Hago:
5.XSeg Generic) data_dst whole_face mask - apply.bat
5.XSeg Generic) data_src whole_face mask - apply.bat

Hay que hacer maskaras de cara

No toco Girafales, por lo que fue bien reconocido por la máquina, lo pueden ver:
5.XSeg) data_dst mask - edit.bat

En Alvaro, corté la frente a mano en varios marcos; el entrenamiento de la máscara dependerá de ellos
5.XSeg) data_src mask - edit.bat

Empiezo a entrenar máscaras:
5.XSeg) train.bat
aquí elijo una cara también
[wf] Face type ( f/wf/head ?:help ) : f

Empezo el entrenamiento, aquí aconsejan un modelo prenetrenado para usar lo y completarlo: todos tienen aproximadamente las mismas caras, en términos de la cantidad de narices y ojos, ¡casi todos tienen lo mismo! Pero no la tomé, es un archivo enorme y para descargarlo debes registrarte en aquel foro.

Puede ver el proceso: al principio, las imágenes son aterradoras, pero esto es necesario para el entrenamiento, tuerce la cara apropusito.

¿Cuánto entrenar? ¡Siempre dicen que cuanto más mejor! Miro las imagenes en preview, si ya estan bien, paro.

Empiezo a aplicar estas mascarillas:
5.XSeg) data_src trained mask - apply.bat

Y comienzo el entrenamiento principal.
train SAEHD.bat
Aquí escojo esto, no cambio el resto de la configuración
[0] Autobackup every N hour ( 0..24 ?:help ) : 1

[f] Face type ( h/mf/f/wf/head ?:help ) : f

[n] Eyes and mouth priority ( y/n ?:help ) : y

[0.0] Face style power ( 0.0..100.0 ?:help ) : 0.0
[0.0] Background style power ( 0.0..100.0 ?:help ) : 0.0

Opcion Face style power debería ser responsable del color y las sombras y es muy difícil elegirlo correctamente y afecta mucho el tiempo de procesamiento, como resultado tenia un agujero negro en la nariz de Álvaro en lugar de la sombra de la nariz de Neo. Simplemente reinícielo a cero cuando note que las cosas no saldrán mal, debe cseuir el entrenamiento después de reiniciar no tendra cambios rapidos.

El comienzo del entrenamiento, en la vista previa del resultado, tenemos una mancha, ¡pero en el que ya puedes reconocer el bigote!

Aquí puedo ver que ya se han hecho 68000 iteraciones, este modelo estaba estudiando por la noche ya tratando de poner la cara de Álvaro en Neo – ¡aprender es bueno!

Puede detener el entrenamiento en cualquier momento presionando [Enter], solo se puede chequear posición, porque la imagen al principio será borrosa. Y empiezar a entrenar de nuevo.

Después de 3000 iteraciones me detengo a ver cómo va, y hago:
7) merge SAEHD.bat

Aquí selecciono todo por default, en primer lugar se nos muestra la instrucción y será posible saltar a las imagenes haciendo clic en [Tab]

Primer frame

De hecho, el resultado es excelente. Luego se pueden corregir los bordes, el desenfoque corresponde a la calidad del video, el color es el mismo cianótico, todo está bien dentro de la baja calidad del original. ¡El rostro de Álvaro incluso se destaca por su claridad!

Entreno un poco más y de nuevo me detengo y empiezo a corregir.
7) merge SAEHD.bat

Hago
Blue mask pongo 78 clickiando [E] – para que los bordes se difuminen, pero el color se va tambien ej
Erode mask pongo 20 clickiando [W] – hace que parezca más
Blur/Sharpen pongo -4 clickiando [H] – Lo borro un poco, de lo contrario es demasiado claro

También puedes recortar la máscara de Álvaro por todos lados (me gustaría solo por uno pero no)
para esto, presionando [W] disminuye la máscara. [S] aumentará, no de inmediato, se dedica algo de tiempo al procesamiento
Puede acercar el zoom en la cara botón [J] alejar el zoom [U]

Se ve bien, los rasgos de transplante se minimizan … por alguna razón, parece a Doctor House ahora!

Este es el primer frame, presiono el botón [? /] qué aplicar settings al siguiente frame, lo clickeo hasta que se apliquen todos. Al final presiono [ESC]

Ahora guardo todo en el video, ejecuto:
8) merged to mp4 lossless.bat

En carpeta workspace aparece archivo result.mp4. Noto algunos defectos de mezcla, ¡pero el resultado sigue siendo bueno! Lo corto y lo pego con el original aquí:

Ahora la foto
Intentaré corregir una gran injusticia, Álvaro Morte no está en el cartel de la quinta temporada de La Casa de Papel. Elimino manualmente todos los archivos de la carpeta workspace/data_dst b workspace/data_dst/aligned si hay otras carpetas, también las elimino. Pongo en workspace/data_dst la imagen del poster.

Saco manualmente la cara:
5) data_dst faceset extract MANUAL.bat
La apunto con raton, pulso y luego [ENTER]

Hago:
5.XSeg Generic) data_dst whole_face mask - apply.bat
Miro:
5.XSeg) data_dst mask - edit.bat

Modifico:
5.XSeg) data_src trained mask - apply.bat
Ni siquiera sé si esto se aplicará sin máscaras de entrenamiento.

Según tengo entendido, si tuviera un modelo súper entrenado (dicen por aho que eso son 400-500 mil iteraciones) para todas las posiciones de la cara, entonces no tendría que comenzar su entrenamiento cada vez. Pero tengo un entrenamiento débil.
Empiezo el entrenamiento:
6) train SAEHD.bat
aqui lo pongo 0.001
[0.0] Face style power ( 0.0..100.0 ?:help ) : 0.001
[0.0] Background style power ( 0.0..100.0 ?:help ) : 0.001
Tal vez aqui si pueda dar una sombra adecuada en un marco de tiempo adecuado.

No estudié durante mucho tiempo, solo media hora, no aporat muchoa a la calidad, y no puedo tenerlo dias entrenando.

Hago:
7) merge SAEHD.bat

Mejoro la calidad con botones a mi gusto

No copia texturas claras del original, sospecho que para esto es necesario durante mucho tiempo entrenar el modelo.
Pero desde lejos, ya puedes tomar la foto para el original, y reconocer a Álvaro en su rostro también … si te esfuerzas. Si hubiera tomado una foto no tan clara inicialmente, hubiera sido mejor, como con un video. Lo principal que hizo DeepFake fue sacarle la cara (aunque se puede ver que es torcida en los ojos), y la claridad y colores de todo esto ya se puede finalizar en los editores de fotos, será más rápido.

No voy a renunciar al tema con DeepFake, lo seguiré aprendiendo, ¡aparentemente mi limite es un video de baja calidad y una foto sin detalles ne la cara!


Deja una respuesta

Tu dirección de correo electrónico no será publicada.