Está en la página 1de 13

UNIVERSIDAD SAN FRANCISCO

DE QUITO
Colegio de Ciencias e Ingenierı́as

Proyecto 01 Redes Neuronales Artificiales:


DeepFakes

Marı́a Isabel Martı́nez - 00320162


Gabriel Salazar - 00201363
Christian Palma - 00201919

11 de diciembre de 2021
Índice
1. First Order Motion Model for Image Acquisition 2
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Trabajo Relacionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Generación de Vı́deo . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2. Animación de Imágenes . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Transformaciones Locales Afines para Descripción Aproximada del
Movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2. Generación de Imágenes conscientes de la Oclusión . . . . . . . . 5
1.3.3. Pérdidas en entrenamiento . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4. Etapa de Prueba: Transferencia de movimiento relativo . . . . . . 5
1.4. Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Artı́culos Relacionados 6
2.1. A Variatonal U-Net for Conditional Appearnce and Shape Generation . . 6
2.2. GANprintR: Improved Fakes and Evaluation of the State of the Art in
Face Manipulation Detection . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. FSGAN: Subject Agnostic Face Swapping and Reenactment . . . . . . . 7
2.4. Make a Face: Towards Arbitrary High Fidelity Face Manipulation . . . 7
2.5. High-Resolution Image Synthesis and Semantic Manipulation with Condi-
tional GANs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6. Face2Face: Real-time Face Capture and Reenactment of RGB Videos . . 8

3. Software: Instagram-DeepFake-Bot 8
3.1. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3. Análisis del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Referencias 12

1
1. First Order Motion Model for Image Acquisition
1.1. Introducción
Si nos imaginamos en una manera de poder animar a una imágen de la manera que
deseemos, las aplicaciones pueden ser infinitas. También pueden ser utilizadas para fines
destructivos, pero en definitiva este avance representa un punto de partida para diversas
aplicaciones futuras.
Las redes generativas adversarias, han logrado el punto de partida por el cual podemos
entrenar diferentes redes neuronales que compitan para mejorar la una a la otra. De esta
manera evitamos la supervisión directa y pasamos a una supervisión guiada que mejora.
De esta manera ya se ha podido, junto con los auto codificadores variacionales transferir
patrones de movimiento o expresiones faciales.
El problema principal es que esto ha sido aplicado con modelos pre-entrenados por
lo que están especificados para una tarea en especı́fico. Se puede realizar este tipo de
modelos con caracterı́sticas ´preestablecidas para un objeto en sı́. Este algoritmo toma
los puntos claves más significativos para realizar el repsectivo entrenamiento.

1.2. Trabajo Relacionado


1.2.1. Generación de Vı́deo

En cuanto a generación de vı́deo, existen redes recurrentes que junto con autocodi-
ficadores variacionales se encargan de hacer la predicción de cuadros de vı́deos. Existe
también la idea de una red generativa adversaria que se encargue de realizar esta pre-
dicción. En la manera más simple, se utiiza la deformación de la imágen para generar el
nuevo cuadro.
El enfoque del paper principal en sı́ se trata de realizar esta deformación (warping)
de las imágenes de los cuadros pero no para realizar una predicción, sino para trasladar
el movimiento de un video de entrada.

1.2.2. Animación de Imágenes

Los métodos de animación de imágenes se basan en el hecho de que se tiene una base
firme sobre las caracterı́sticas del objeto. En el caso de caras, los que se llega a hacer para
que estas puedan ser transferidas a un vı́deo recae en un modelo de tres dimensiones de
la cara que puede ser utilizada como una máscara para la transferencia de movimiento.
En otros casos se tiene que tener información semántica especı́fica de cada individuo
para que una red generativa adversaria se encargue de realizar la transferencia, pero
deberı́a ser re-entrenada para individuos diferentes.
Existen otras aplicaciones en las cuales no se necesita saber mucho sobre el objeto en
sı́, como la X2Face y la Monkey-Net. En la primera, se necesita que el objeto esté puesto
en poses establecidas para realizar la deformación según el movimiento al que se quiera

2
transferir. En el caso de la segunda, se tiene una red que utiliza el movimiento de puntos
clave para transferir movimiento en una manera auto-supervisada.

1.3. Método
En este caso, queremos animar una imagen comparándola con el movimiento, o se-
cuencia de patrones presentados en imágenes similares. De forma escueta podrı́amos decir
que a un vı́deo lo dividimos en distintas imágenes y estas las comparamos con la imagen
estática que queramos.
El framework utilizado en este proyecto consta con dos partes o módulos, el modulo
de estimación de movimiento (MEM) y el modulo de generación de la imagen(MGI).
Cada uno, como su nombre lo indica, tienen un propósito diferente el MEM predice un
campo de movimiento denso del vı́deo (D) a el cuadro base (S) o la imagen que queremos
proyectar dicho campo será luego modelado por una función la cual mapea cada pı́xel del
campo a el cuadro base. Esta función de modelación se la expresa de la siguiente manera:

TS←D : R2 → R2

EL MEM tiene dos pasos principales en su ejecución, primero se aproxima las trans-
formaciones de las trayectorias de los puntos claves de las imágenes en movimiento, en
este caso los puntos clave son obtenidos mediante un algoritmo de aprendizaje supervi-
sado. Los puntos clave de la imagen son movidos conforme a los puntos clave del vı́deo
que deseo imitar. Se modela a su vez, en una vecindad de cada punto usando una trans-
formación local afı́n, la ventaja de utilizar esta transformación es que se puede modelar
una gran cantidad te transformaciones. Al final del proceso se obtiene el lugar donde se
encuentran los puntos claves al igual que los parámetros para cada transformación afı́n.
Una vez finalizado este paso, se procede a utilizar una dense motion network, la cual tiene
como propósito el combinar las aproximaciones locales, como output se obtiene un cam-
po denso de movimiento (T̂ ), esta network también tiene como output una mascara de
oclusión (Ô) la cual indica que partes D pueden ser reconstruidas por la imagen estática.
Para finalizar el MGI da como output el vı́deo de la imagen estática con los puntos
claves y demás.

1.3.1. Transformaciones Locales Afines para Descripción Aproximada del


Movimiento

En este caso vamos a asumir que existe un cuadro de referencia abstracto (R) el
cual nos permita aproximar TS←D con TS←R y TR←D . Considérese pues un cuadro X el
cual pueda ser aproximada cada una de sus transformaciones en una vecindad de puntos
claves, dicha transformación serı́a TX←R , con esta transformación se puede considerar una
expansión de Taylor en k puntos clave (p1 , ..., pk ) donde cada pi representa las coordenadas
de los puntos de referencia en el cuadro R.

3
En consecuencia se puede obtener la siguiente formula para la transformación de R
hacia X:
 
d
TX←R (p) = TX←R (pi ) + TX←R (p)|p = pi (p − pi ) + o(||p − pi ||)
dp
Esta formula es para todo punto clave pi , notese que se calcula el Jacobiano de la
transformación actuando en estos puntos. En consecuencia podrı́amos aproximar esta
transformación de la siguiente manera:

   
d d
TX←R (p) ≃ TX←R (p1 ), TX←R (p)|p = p1 , ... , TX←R (pk ), TX←R (p)|p = pk
dp dp

Debemos en consecuencia asumir que la transformación lineal es biyectiva en una


vecindad de cada punto para poder calcular su inversa en cada punto, de esta forma
tendrı́amos un camino para calcular nuestra transformación estimada de D a S. En con-
secuencia podemos escribir TS←D como:

−1
TS←D = TS←R ◦ TR←D = TS←R ◦ TD←R

Como antes podemos a su vez expresar la transformación de la siguiente manera de


manera aproximada para cada punto clave zi en D.

  −1
d d
TS←R (z) ≈ TS←R (pi ) + TS←R (p)|p = pi TD←R (p)|p = pi (z − TD←R (pi ))
dp dp

Luego se debe utilizar una red convolucionaria P para aproximar T̂S←D los borde
y texturas de la transformación pueden ser alineados con D pero no con S, esto causa
entonces que la predicción sea difı́cil de obtener. Para reducir errores se hace una trans-
formación local en S, es va a terminar con K imágenes S alineadas con los puntos claves
de la transformación en una vecindad.
Para que la red entienda las transformaciones, se debe calcular los mapas de calor
(heatmaps), estos mapas deben ser calculados en cada punto clave, es decir vamos a
tener K mapas (Hk ), en consecuencia se puede decir lo siguiente:

(TD←R (pi ) − z)2 (TS←R (pi ) − z)2


   
Hi (z) = exp − exp
0,01 0,01
Se debe entonces asumir que un objeto tiene K partes rı́gidas las cuales son movi-
das con las transformaciones previamente indicadas. Se debe definir contención, K+1
mascaras (Mi ), en consecuencia la transformación puede ser expresada de la siguiente
manera:

K
X
T̂S←D (z) = M0 z + Mi (TS←R (pi ) + Ji (z − TD←R (pi )))
i=1

4
Sea:
  −1
d d
Ji = TS←R (p)|p = pi TD←R (p)|p = pi
dp dp

1.3.2. Generación de Imágenes conscientes de la Oclusión

Como sabemos el frame original S no es tan alineado con el frame reconstruido, en


consecuencia para lidear con este error utilizamos el siguiente procedimiento.Obtenemos
prometo un mapa de caracterı́sticas (ξ), entonces solo debemos modificar este mapa
con la transformación reconstruida. Existiran entonces partes de S que no podran ser
interpretadas o que no seran visibles, a estas partes se les debe ”pintar”, como solucion a
esto creamos entonces el mapa de oclusion que permitirá difuminar o disimular las partes
que deberı́an ser ”pintadas”. En consecuencia podemos escribir lo siguiente:

ξ ′ = ÔS←D ⊙ fw (ξ, T̂S←D )

Se debe notar que fw representa la operación de deformación para atrás y ⊙ representa


el producto de Hadamard.

1.3.3. Pérdidas en entrenamiento

En general, se ca a obtener la siguiente perdida al momento de la reconstrucción del


video:

I
X
Lrec (D̂, D) = |Ni (D̂) − Ni (D)|
i=1

Donde Ni es un canal extraı́do de una capa del VGG-19 e I es el numero de canales


en la capa.

1.3.4. Etapa de Prueba: Transferencia de movimiento relativo

Al momento de implementar el modelo, el vı́deo se separa en fotos y con ellas ya pode-


mos compararlas con el S (en consecuencia tendrı́amos D1 , .., Dt frames del vı́deo)Ahora
en lugar de realizar la transformación de D a S para cada punto clave, es mas facil trans-
ferir lo que hace la transformación en un cambio de frames con D, es decir (TDt ←D1 en
una vecindad de puntos claves, en consecuencia:

TS1 ←St (z) ≈ TS1 ←R (pi ) + Ji (z − TS←R (pi ) + TD1 ←R (pi ) − TDt ←R (pi ))

Sea:
  −1
d d
Ji = TD ←R (p)|p = pi TD ←R (p)|p = pi
dp 1 dp t

5
1.4. Experimentos
Existen diferentes bases de datos con las que la red neuronal ha sido entrenada para
transferir movimiento en diferentes contextos por el hecho de que se puede aplicar a
diferentes objetos, poses y contextos. Estas bases de datos incluyen a VoxCeleb, UvA-
Nemo, BAIR, Tai-Chi-HD.
El método de evaluación de los resultados se basa en reconstruir el vı́deo de entrada
desde una representación donde se desacoplan la apariencia y el movimiento.
Las metricas para medir la validez de los resultados son: la distancia promedio, la
distancia promedio entre los puntos clave, la tasa de pérdida de los puntos clave y la
distancia euclidiana promedio.
Se compara el modelo con un modelo base del que se entrena con las especificacio-
nes más simples. Después se incrementa la complejidad del modelo para tener mejores
resultados.
En comparación con el estado del arte, esto siendo los modelos X2Face y Monkey-Net,
esta investigación mejora la transferencia de movimiento de manera en la que no se ve
una deformación de la imagen, sino una correcta transferencia de movimiento relativo de
puntos claves entre la imágen objetivo y el video de entrada.

1.5. Conclusiones
El presente modelo de animación de imágenes se basa en el establecimiento de ’puntos
claves’ en matrices de datos y transformaciones afines locales alrededor de los mismos.
Para lograrlo se realiza una aproximación de Taylor de primer orden sobre la estructura
matemática definida sobre el dataset. Con ello, el movimiento se puede describir como
desplazamientos diferenciales de los llamados puntos claves. La animación se estructura
de tal manera que una red generadora asocia los puntos claves con los de una imagen
de origen tratando de recrear el video de conducción. Además, se propone un sistema
para inferir imágenes que son ocultas. El modelo en general es evaluado cualitativa y
cuantitativamente y se obtienen resultados con ı́ndices de performance más altos que
software libre de animación conocidos como X2-Face o Monkey-Net. (Siarohin, 2018)

2. Artı́culos Relacionados
2.1. A Variatonal U-Net for Conditional Appearnce and Shape
Generation
Este paper nos da la idea de utilizar un U-Net, no secuencial, que preserva las carac-
terı́sticas de la imágen orginal y a la salida nos puede dar una imagen completamente
nueva con las mismas caracterı́sitcas que la anterior, pero con detalles de otra. Podemos
generar objetos, imágenes, individuos en un entorno conocido. Las aplicaciones son varias
y pueden ser utilizadas para fines no éticos.

6
2.2. GANprintR: Improved Fakes and Evaluation of the State
of the Art in Face Manipulation Detection
Los algoritmos en el estado del arte de la sı́ntesis de caras gracias a redes adversarias
generativas dan resultados completamente realistas pero aún pueden ser detectados como
falsas por la red. Esto se da gracias a que en el proceso de auto-codificadores, se genera
un rostro con una ”huella digital”. Este modelo propone la remoción de esta ”huella
digital”para que la nueva red neuronal no pueda reconocerla como falsa. De esta manera
se incrementa la dificultad de la red adversaria generativa para poder tener una mejor
detección de rostros falsos.

2.3. FSGAN: Subject Agnostic Face Swapping and Reenact-


ment
En este paper se presenta a Face Swapping GAN. Este algoritmo no necesita de
entrenamiento previo de los rostros, lo cual en términos de coste computacional y de
tiempo es realmente positivo. Para ello se crea una red neuronal recurrente (RNN) que
ajusta las poses y también la gesticulación de los rostros. Para recrear videos en cambio
utilizan un algoritmo de interpolación en donde usan argumentos netamente geométricos
como Triangulación Delunay y Coordinadas Baricéntricas. Los lugares ocultos de los
rostros se reconstruyen mediante redes de completitud de caras. Además utilizan un
método para que los colores en los boundaries sean lo más parecidos posibles. Finalmente
utilizan herramientas estadı́sticas como optimización de Poisson para un mejor resultado
final.

2.4. Make a Face: Towards Arbitrary High Fidelity Face Ma-


nipulation
En este paper se presenta un nuevo método para manipulación facial llamado Additive
Focal Variational Auto-encoder, que permite manipular rostros de imágenes con alta
resolución usando un modelo supervisado débilmente. Para ello se utiliza un algoritmo
llamado mezcla gaussiana. Además se presenta un paradigma llamado Human Visual
System (HVS), que permite un control mucho más preciso de la complejidad del modelo
y de la calidad de la muestra.

2.5. High-Resolution Image Synthesis and Semantic Manipula-


tion with Conditional GANs
En este articulo se ve formas para sintetizar imágenes utilizando una GANs condicio-
nal. Se implementa segmentación de objetos lo cual da paso a poder crear manipulaciones
en las imágenes, ya que ya se detectara los objetos enteros, en consecuencia estos podrán
ser borrados de raı́z o reemplazados con otras cosas. Este paper no solo es interesante al

7
momento de un análisis de vı́deo y edición del mismo, sino que puede verse como una
mejora de cierta forma de Photoshop.

2.6. Face2Face: Real-time Face Capture and Reenactment of


RGB Videos
Este paper es una mejora, de cierta manera, del paper analizado en este proyecto. Se
busca tener el mismo resultado pero de en tiempo real, el proceso es similar pero lo que
captó mi atención es el hecho que al momento de hacer las expresiones de la boca en
la imagen, el interior de la misma es tomado del la secuencia targer y manipulado para
producir un resultado adecuado.

3. Software: Instagram-DeepFake-Bot
3.1. Funcionamiento
Este bot de Instagram permite la creación de deep-fakes cuando se le escribe un
mensaje al buzón privado de mensajes del usuario @deepf ake.maker.

Figura 1: Mensaje de inicio del bot. Pide un rostro que funciona como imagen de origen

8
Figura 2: Luego se pide un video de conducción

Figura 3: El video se procesa por el algoritmo del bot

Figura 4: El video es enviado al usuario en un mensaje de video

3.2. Caracterı́sticas
Este software utiliza justamente el algoritmo que se presenta en el paper ’First Or-
der Motion Model for Image Animation’ y los rostros son reajustados con el método

9
’Ultra-Light-Fast-Generic-Face-Detector’. Este segundo algoritmo es realmente interesan-
te porque permite el uso de una aplicación que solamente pesa 1 MB, esto en tiempos de
ejecución en smarthpones es realmente útil y en aplicaciones web también lo es.
El bot es de código libre entonces se puede acceder al código del mismo, el cual se
basa netamente en Python y se encuentra en un repositorio público en Github.

3.3. Análisis del código


Si uno accede al archivo main.py podemos observar cómo se programa el texto que
utiliza el bot dentro de la aplicación a través de una clase llamada Checker. Además, se
tiene una clase llamada Editor que se encarga de la creación del video. Además tenemos
la clase Sender que envı́a el video desde el servidor que almacena la información mediante
archivos de tipo json y protocolos de transferencia web-service.

Figura 5: Extracto de clase Checker

Figura 6: Extrato de clase Editor

10
Figura 7: Extracto de clase Sender

Posterior a ello tenemos 3 programas más: Api.py, animate.py, deepf ake.py. Api.py
establece el programa que permite que Instagram corra el programa del bot. deepf ake.py
utiliza los algoritmos del paper ’First Orde Motion Model for Image Animation’ para
registrar y procesar la imagen de origen y el video conductor y luego crea los frames del
viedo. animate.py en cambio tiene los algoritmos para la creación y almacenamiento de
la animación.

11
Referencias
Siarohin, A. . e. (2018). First order motion model for image animation. Conference on
Neural Information Processing Systems, 1–9.

12

También podría gustarte