Uno de los últimos hits del mundo de Internet y particularmente del software son los deepfakes. ¿Aún no sabes a lo que me refiero? Hace un par de meses un usuario de Reddit, que siempre es una fuente inconmensurable de conocimiento procrastinador, tuvo a bien compartir su última creación con la comunidad: FakeApp, un software que mediante el uso de la inteligencia artificial te permite cambiar las caras de las personas en un vídeo por otras, generando un nuevo vídeo con ellas. A poco que pienses un poco en esta idea te vendrán a la mente las apps para móviles de tipo faceswap que permiten intercambiar las caras de tiempo real o peor aún, los vídeos que circulan desde hace tiempo en la red y especialmente en estas últimas semanas de personas famosas haciendo cosas impúdicas.
El escándalo ha alcanzado tal magnitud que Reddit cerró los hilos que trataban sobre FakeApp, pero el éxito ya está asegurado y actualmente incluso comienzan a ver la luz alternativas que hacen exactamente lo mismo. Si tenemos en cuenta que el desarrollador original no se ha visto amedrentado por lo ocurrido y que continúa desarrollando su herramienta y haciéndola cada vez más sencilla de usar, podemos esperar deepfakes hasta en la sopa durante los próximos tiempos.
FakeApp ha abierto todo un mundo de posibilidades y un profundo debate sobre los límites éticos de la inteligencia artificial (bueno, este debate ya existía), de la red y de sus usuarios. Pero como no estamos aquí para decirte lo que tienes que hacer, sino para contarte cómo demonios funciona y que puedas crear tus propios vídeos falsos nos vamos a saltar esa parte.
Hay tres cosas a tener en cuenta antes de comenzar este tutorial:
- La primera es el tiempo. No esperes conseguir el vídeo perfecto que tienes en mente durante los próximos minutos. Para que la magia de FakeApp tenga lugar posiblemente necesitarás horas.
- Por otra parte este no es tutorial para ordenadores de medio pelo: necesitas tener al menos 8GB de RAM si no quieres morir en el intento (si tienes 16 mejor que mejor) y además una tarjeta gráfica NVIDIA para procesar toda esa información a través de la GPU. Puedes poner la CPU a hacer el mismo trabajo, pero tendrás que sumar horas extra al proceso.
- Una cosa obvia aunque no dicha hasta ahora: necesitas vídeos. Por una parte necesitas el vídeo donde quieres sustituir las caras, y por otra parte el vídeo con las caras nuevas que quieres poner. Solo alimentando la IA del software con bastantes fotos de caras lograrás resultados dignos.
Cómo usar FakeApp paso a paso
Este tutorial está redactado sobre la versión 2.2 de FakeApp. Si intentas seguir nuestros pasos con una versión diferente de FakeApp o de cualquiera del resto de programas necesarios que te indicamos probablemente no conseguirás terminar tu vídeo. Presta mucha atención al software que te indicamos y especialmente a las versiones del mismo. Si tienes instalada ya una versión anterior o posterior de cualquiera de estos programas nuestra recomendación es que la desinstales e instales exactamente la versión que aquí te indicamos.
Además de un PC potente como te hemos avanzado, necesitas instalar software adicional en tu equipo. Por un lado necesitas instalar NVIDIA Cuda 9.0. Es necesario instalar tanto el archivo base como el patch lanzado el pasado 25 de enero. Hay un patch nuevo pero no es necesario para que la versión 2.2 que henos probado nosotros funcione. También necesitas Visual C++ Redistributable 2015.
Lo primero es descargar el software. Ojo porque la versión 2.2 son más de 2GB de datos repartidos entre el ejecutable y la librería adicional necesaria, asegúrate de tener suficiente espacio disponible. Una vez hayas descargado ambos paquetes si intentas ejecutar el EXE se abrirá, pero te mostrará una ventana avisándote de que debes instalar antes la librería en el sitio correcto para poder empezar. Sobre la librería, que es realmente lo más pesado, solo tienes que descomprimirla y llevarte todo su contenido hasta la carpeta FakeApp de AppData, la carpeta del sistema que almacena los datos de programas instalados.
Pestaña Get Dataset de FakeappUna vez estás ante la interfaz de FakeApp comienza de verdad el proceso. Como ves tiene tres pestañas diferenciadas a las que puedes hacer acceder haciendo clic en cada una de ellas en la parte superior de la interfaz: Get Dataset, Train y Create.
En primer lugar debes conseguir las imágenes de las caras que quieres emplear, tanto la cara del vídeo original (si el vídeo original tiene mucha resolución, el resultado en el vídeo final será menos creíble) como la nueva cara que quieres poner en él. FakeApp ofrece dos formas de hacerlo: un sistema interno capaz de extraer frames de los vídeos y recortar después las caras detectadas en ellos o bien a través de una carpeta con imágenes. Evidentemente la segunda opción es más tediosa, ya que resulta más difícil descargar 100 fotos a mano que sacarlas automáticamente de un vídeo. Una cosa importante y que no hemos comentado: FakeApp en teoría puede extraer más de un rostro de un vídeo o una carpeta de fotos, pero la realidad es que es una función que aún no parece muy pulida. Por el momento se obtienen mejores resultados si te centras solo en una cara.
Extracción de frames de un vídeoEn la pestaña "Get Dataset" indica la ruta de la carpeta donde tienes el vídeo. Si son imágenes, encárgate de mover la perilla que hay en la zona superior de la interfaz. También puedes definir los frames del vídeo original. Luego pulsa sobre Extract para iniciar el proceso. Si todo es correcto veras dos líneas de progreso, una primera donde el software se encarga de extraer los frames y una segunda línea a continuación donde recorta las imágenes para quedarse solo con las caras. Es muy importante que una vez concluya compruebes que todas las imágenes obtenidas miden 256x256 pixeles y están en formato PNG.
Carpeta con imágenes extraídas de un vídeoSi algo falla aparecerá una ventana de error que te avisará de que puedes encontrar información sobre el problema en los logs que crea el mismo software, pero para empezar deberías visitar el panel de configuración. Aquí hay varias cosas importantes que comentar. La primera es que puedes elegir si el procesamiento se hará por GPU o por CPU. Si tu tarjeta de vídeo no es lo suficientemente potente puedes probar con la CPU, aunque lleva más tiempo. La segunda cosa importante a comentar que es la que ahora nos ocupa, la de solucionar posibles problemas durante este proceso: Reduce los campos Batch Size, Nodes y Layers progresivamente hasta que logres una configuración que consiga sacar y recortar las imágenes correctamente (a nosotros nos ha funcionado la configuración que ves en la captura de abajo). Aquí todo se basa en el método "prueba y error". Desde luego FakeApp no está al nivel del software comercial en estabilidad.
Si te das una vuelta por las carpetas donde tenías los vídeos originales verás que FakeApp ha creado dos nuevas carpetas, una anidada dentro de la otra. La primera es la de los frames enteros extraídos y la segunda es la de esas imágenes recortadas para que solo se vea la cara. Pues bien, crea en alguna parte de tu disco duro una nueva carpeta y en su interior dos carpetas llamadas "dataA" y "dataB" y una tercera llamada "model".
En "dataA" debes copiar pegar todas las fotos de la cara recortada de A, que en nuestro caso es el protagonista del vídeo original. En "dataB" debes copiar y pegar todas las fotos de la cara recortada B, que es la nueva cara que aparecerá en nuestro vídeo.
Momento de ir hasta la segunda pestaña de la interfaz, Train. En esta parte del proceso FakeApp se encarga de entrenar su inteligencia artificial a partir del set de imágenes que le indiquemos. Aquí está una de las claves del proceso: cuantas más imágenes tengas, de más calidad y más variadas en situaciones de luz, perspectiva y demás, mejores resultados finales vas a conseguir, pero mayor tiempo de entrenamiento se requiere, mayores posibilidades de que algo falle y por tanto más procesamiento del PC.
Proceso de entrenamiento de FakeAppEn el campo Model copia y pega la ruta de esa carpeta que acabamos de crear en el paso anterior. En el campo Data A pues ya imaginas, y en el campo Data B más de lo mismo. Asegúrate de que copiando y pegando esas rutas de directorios no te has dejado ninguna comilla por delante o por detrás y aprieta sin miedo el botón de Train. Si todo es correcto FakeApp se pondrá cachas con el material que le has dado. Cuando el proceso termine te avisará, pero es bueno saber que puedes detener el entrenamiento en cualquier momento y continuarlo después simplemente cerrando la app. ¿Algo ha fallado? Revisa la configuración de los ajustes y si es necesario reduce aún más los campos de Batch Size, Nodes y Layers.
Tras un buen rato, horas o días según quieras mejores o peores resultados, FakeApp se cerrará automáticamente y el ventilador de tu PC podrá descansar por fin. En ese momento debes irte hasta la tercera pestaña de la interfaz, Create. Aquí es donde tiene lugar la magia final generando el vídeo final modificado. En primer lugar debes indicar la ruta de la carpeta Model, donde, si te has fijado, se crean diferentes ficheros después del proceso de entrenamiento. Debajo debes especificar la ruta del vídeo que queremos utilizar finalmente y los FPS. Cuando lo tengas pulsa Create y AppFake empezará a generar el archivo final. Una vez lo complete te avisará y te informará de su ubicación.
Proceso final de creación de vídeo con FakeAppAhora solo tienes que darle al play. ¿Te convencen los resultados? Recuerda que cuantas más imágenes de los rostros tengas y de más calidad sean mucho mejor, aunque donde está gran parte del secreto es en el proceso de entrenamiento de la inteligencia artificial. Para conseguir vídeos mejores pon esa IA a entrenar durante más tiempo. Con insistencia lograrás el vídeo casi perfecto.
Aspecto del vídeo final, hay que entrenar másA nosotros la cara de Nicolas Cage nos ha salido un poco churro, pero hace días que estoy entrenando con la cara de mis jefes y compañeros de trabajo para unas cosas... Hazte con el software tú mismo, ármate de paciencia y disfruta de los vídeos falsos de moda en Internet estos días.