top of page

CÓMO MEJORAR LOS RESULTADOS DE UN DEEPFAKE

Foto del escritor: José Ramón LastrasJosé Ramón Lastras

Actualizado: 14 feb 2024



A lo largo de este artículo desarrollaré un sistema de trabajo que tiene como objetivo mejorar los resultados de deepfakes y hacerlos lucir más fotorealistas.


Todo este sistema gira en torno a la separación por frecuencias y a partir de ahí llevar a cabo diferentes manipulaciones para obtener el resultado que queremos.



 


La semana pasada los chicos de Cinecom subieron un video sobre la creación de deepfakes bastante detallado:



DEEPFAKE Yourself Like Kendrick Lamar (Tutorial)



En este caso aprenderemos a combinar el source original y el generado por deepfake y también a cómo crear nueva textura de piel para ganar realismo.



 

CASO I - MÉTODO BÁSICO - REUTILIZAR PIEL


En este primer caso utilizaremos un deepfake en el que se cambia la cara de un actor por la de otro.




A la izq, deepfake inicial, en el centro original, a la derecha, deepfake final




A la izq, deepfake inicial, a la derecha, deepfake final



El vídeo del que he extraído este deepfake:



Tobey Maguire Spider-Man Meets Happy Hogan | Multiverse of Madness - https://youtu.be/fs99glTBGjA


Para esta prueba lo que haremos será aprovechar la piel de nuestro actor al que queremos ponerle la cara de otra persona (Tom) y usarla como base para la cara deseada (Tobey).


Lo primero que haremos será separar frecuencias para conseguir nuestro low y high pass.


Esta técnica consiste en aislar las zonas de contraste que perdemos cuando blureamos una imagen. El blur nos proporciona un low pass y al dividirlo por el original un high pass.


Podéis encontrar más información sobre la misma en este vídeo:



Image Frequency Separation in Nuke [Intermediate] - https://youtu.be/rM-a-6CACfI

Bastará con multiplicar ambas para obtener como resultado el mismo punto de partida.



Existe otra técnica similar pero que no vamos a utilizar. Aún así para los curiosos dejo por aquí un vídeo también:

Skin Retouching in Nuke using Frequency Separation -https://youtu.be/ZG8k6cvJEk4 



Al tratarse de planos “exactamente iguales” lo haremos con el mismo valor en "Blur" para que coincidan a la perfección.





LOW PASS


El low pass lo aplicaremos como base para nuestro deepfake a partir del original. Esto nos va a proporcionar una crominancia y luminancia perfecta.


En el caso de ojos y boca podría ser necesario mixearlo con unas rotos de la zona en el lowpass del deepfake.


La rama del low pass apenas la modificaremos más a partir de aquí.


HIGH PASS


En esta rama es sobre la que vamos a trabajar. Lo primero que tenemos que hacer es conseguir un cleanplate de piel del original. Borraremos todo rastro de lunares, arrugas, cicatrices, heridas, etc…


Al hacer esto conseguiremos una textura de piel completamente limpia que servirá de base.



Ejemplo de borrado de lunar


Una vez tengamos nuestra base lo que haremos será reemplazar ojos, nariz y boca en nuestro high pass.


Si utilizamos un "merge" en "over" estaremos reemplazando y si lo usamos en "multiply" lo añadiremos por encima sin eliminar la textura que queda por debajo.

Para las rotos siempre podemos apoyarnos en un track de la cara en cualquier zona de contraste.


Una vez completemos este proceso tendremos nuestro deepfake con una piel limpia y con las partes principales colocadas. Ahora incluiremos los detalles de alto contraste de nuestro deepfake, como por ejemplo lunares, arrugas, etc … con la misma técnica que antes.


Para aumentar el realismo podemos recuperar partes del original, como el rojo de los ojos o sus highlights a través de merge max o keyer, lo que más fácil resulte.


Original:


Resultado:



 

CASO II - MÉTODO AVANZADO - CREAR SKIN MAP



En este nuevo caso tomaremos como base un deepfake que se vea muy plasticoso y le aplicaremos una piel real del actor.


El vídeo del que he sacado este deepfake es:


Christian Bale as Bruce Wayne in The Batman (New Movie Deepfake) - https://youtu.be/XePMCkxYe9E 

Una de las utilidades que podemos extraer de esta técnica es conseguir un de-aging a través de un mix entre deepfake y una piel generada a partir de fotos de la misma edad del actor en el momento deseado o similar.


No sólo podemos aplicarlo para de-aging sino también si queremos usar la piel de un actor en otro en un deepfake convencional.


La herramienta más útil para realizar nuestro skin map es facetracker. (Dispone de una prueba de 15 días gratuita para los más curiosos)



Aquí podéis encontrar más detalladamente cómo usarlo:


FaceTracker Basics (con Mads Hagbarth Damsbo) - KeenTools LIVE (25/09/2020) - https://youtu.be/1UMC8Bae7SE

Vamos a ver un ejemplo en el que generamos un skin map.


A través de UVs nos será muy simple colocar una piel extraída de una combinación de high passes de fotos del actor.


Esta opción nos hará el trabajo mucho más fácil pero si no disponemos de la herramienta de “Kentools” podremos recurrir a Mocha, EBSynth o SmartVector aunque estos nos darán peores resultados y sólo servirán en planos con poco cambio de perspectiva de la cara.


Recomiendo realizar todo este nuevo proceso una vez hayamos integrado nuestro deepfake como en el método básico, con la nueva luminancia y crominancia que hemos copiado y con la textura previamente integrada, esta vez sin necesidad de limpiar la piel del original aunque podría ser útil tenerla para mezclar las dos con un ligero dissolve.


Esto facilitará la integración de la nueva textura que vamos a generar a continuación.


Empezaremos con facebuilder y facetracker.

Entorno 3D con la geo de la cabeza


Una vez tengamos nuestro modelo 3D de la cabeza y esté trackeado crearemos un WriteGeo para obtener nuestra geo en formato abc y poder proyectar en ella.


Proyectaremos en modo UVs y de esta forma podremos pegar nuestra nueva textura en un espacio 2D de forma muy sencilla.


Source del que extraeremos la nueva piel


A pesar de tener nuestro track 3D estabilizado en UVs podemos realizar un nuevo track 2D en nuestro scanline para dar esos ligeros movimientos a la nueva piel.


A la izq, deepfake inicial en UVs, en el centro high pass del que queremos la textura, a la derecha, deepfake final en UVs


Este track será muy sencillo de realizar con Mocha y aún más si usamos el PowerMesh que lanzaron en una de sus últimas versiones. Permitiendo micro movimientos en lugar de uno tan general.


Interfaz del "PowerMesh" de Mocha



Aquí tenéis un vídeo sobre su uso:


The Power Mesh tracker is INSANE! - Mocha Pro 2021 - https://youtu.be/9bS048B1BVI

Mi recomendación es abrir la curva de este nuevo track en nuke y eliminar cualquier rastro de salto que pueda haber. También es recomendable multiplicar la curva en la expresión por un valor por debajo de 0.4 para suavizarla mucho y que no se noten movimientos extraños en la comp.


Imagen inicial con nueva crominancia y luminancia

Imagen anterior con la nueva piel incorporada


Una vez tengamos aplicado ese ligero movimiento podremos devolver nuestra comp a la normalidad poniendo de nuevo un scanline en render.

Es importante quedarnos siempre que hagamos este sándwich con las partes que realmente alteremos para no filtrar de más nuestro plano.


Original:

Resultado:


 

Aún tengo dos ideas en mente:


-Generar relieve en los poros de la piel

-Deformar la cabeza para que coincida con la del actor original


Estas dos últimas técnicas son algo que aún estoy probando y que en principio suenan prometedoras en mi cabeza.

La primera se basaría en usar el displacegeo a partir del highpass para generar un pequeño volumen en el espacio 3D de la textura de piel. Podría resultar muy útil en casos donde hubiera que reiluminar la cara.

Y la segunda consiste en proyectar un stmap sobre el modelo 3D de la cabeza y deformarlo para que el stmap warpee a la forma del otro actor. Por ejemplo en este último caso de Robert Pattinson y Christian Bale podríamos ajustar la mandíbula para que coincida con la de este último y aporte más realismo al deepfake.


Aún sigo trabajando en el funcionamiento de estas dos.


Espero que este post haya servido de ayuda para alguien y que aunque no se acabe utilizando para la realización de deepfakes que al menos sea útil para conocer ciertas técnicas que he mencionado.



 


Gracias



 
 
 

Entradas recientes

Ver todo

Comentarios


bottom of page