spinner

Contenido Sintético (parte II): generación y detección de imágenes

Cada perfil digital que vemos en Internet tiene como característica el avatar que se usa, colocando una fotografía para identificarse pero ¿qué pasaría si fuera un rostro que no existe realmente? En el artículo se analizarán medidas de protección frente a estos rostros hiperrealistas que utilizan los atacantes para engañarnos y hacerse pasar por ser otra persona.

En el primer artículo de esta serie se expuso cómo generar tanto textos como audios de manera hiperrealista y comprobar su autenticidad aplicando métodos de detección. Se vieron las limitaciones de estos sistemas debido a su dependencia con el idioma y se mostraron las soluciones más estables hasta el momento. En este artículo se verán las posibilidades, problemas de seguridad derivados y cómo es posible protegerse.

Cada vez exponemos más nuestro perfil digital en multitud de servicios. Una de las características que nos identifican son los avatares o imágenes del perfil, que es habitual usar fotografías nuestras o que nos representen. Cuando un atacante quiere pasar desapercibido al crear una cuenta, en un entorno clásico, usa fotos robadas de otras personas para suplantar su identidad. También puede querer afectar a la reputación de la víctima utilizando sus imágenes para realizar diferentes acciones potencialmente difamatorias. Estos casos se han ido sofisticando cada vez más gracias a las técnicas de generación de imagen que se verán a continuación.

Generación de imagen

Durante los últimos años se han ido mejorando las técnicas de crear rostros hiperrealistas, sobre todo desde NVIDIA con su sistema StyleGAN. Para entender cómo funciona este sistema es preciso exponer las características principales de una red GAN, la cual permite que este sistema funcione de manera tan eficiente.

Generative Adversarial Networks (GANs) son una clase de algoritmos de deep learning introducidas por primera vez por Ian Goodfellow en 2014 en el artículo Generative Adversarial Networks, y han generado una gran expectación en la comunidad científica porque permiten generar nuevos datos sintéticos que resultan indistinguibles de datos reales.

La base de una red GANs consiste en dos redes neuronales, denominadas generador y discriminador. La función del generador es crear nuevos datos a partir de ruido aleatorio como entrada, mientras que el discriminador comprueba si los datos aleatorios son consistentes con las instancias de datos reales, y devuelve probabilidades entre 0 y 1, donde 1 indica una predicción de realidad (real) y 0 indica una falsificación (fake).

La red GAN está compuesta por un generador y discriminador.

De forma muy simplificada, si en esta arquitectura añadimos como entrada imágenes reales, el discriminador intenta ver cuáles son reales y cuales generadas por la red, creando un sistema de generación de imágenes. A partir de esta compleja arquitectura de redes enfrentadas, es posible ver algunos ejemplos como generación de cuadros con estilos famosos, mejoras de calidad en videos antiguos o el caso que se ha comentado anteriormente de generar caras hiperrealistas.

Ejemplos de la aplicación de una variante de GAN.

El proyecto StyleGAN empleó como base 70.000 fotos de caras procedentes de Flikr con licencia permisiva. El conjunto de datos se publicó con el código bajo el nombre Flickr-Faces-HQ Dataset (FFHQ) y adopta el sesgo de las imágenes de Flikr, aunque parece que es menor que otros conjuntos de datos anteriores a este.

Generación por fases de una cara mediante StyleGAN.

Al liberar este sistema, apareció una demo abierta en la que al navegar, se generaba una nueva cara única para ti. Desde el laboratorio de seguridad de BBVA Next Technologies, se hicieron pruebas para ver los límites a la hora de generar nuevas caras y se obtuvieron más de 1 millón, parando el experimento al disponer de suficientes muestras.

Imágenes generadas por StyleGAN

A partir de estas imágenes también han aparecido alternativas que descargan una serie de muestras para ofrecer una personalización a la hora de solicitar un tipo de cara sintética, es el caso de generated.photos. Además de caras, es posible generar el cuerpo de una persona, pudiéndose usar para la creación de perfiles de actores o influencers con la apariencia que deseemos.

Como se puede apreciar, pueden pasar por imágenes normales cuando realmente no son personas reales. Para poder protegerse frente a una posible oleada de cuentas creadas con este tipo de foto como perfil, se empezó a trabajar en la detección de imágenes con estas características. En el articulo How to recognize fake AI generated images se detallan los puntos a comprobar en una fotografía para comprobar si esta es real o no de forma manual. En resumen, la forma de identificar caras falsas con este sistema consiste en fijarse en los siguientes detalles:

  • Las orejas no suelen ser iguales.
  • Aparecen pendientes diferentes o en algunos casos desaparecen en una de ellas.
  • Las caras son asimétricas, la mirada suele ser distinta para cada ojo.
  • Los dientes no son regulares y asimétricos con respecto al centro de la cara como eje.
  • El fondo de las fotos suele ser abstracto.

Imágenes generadas por StyleGAN en la que se destacan los problemas.

También existen trabajos académicos que tratan de detectar si una imagen ha sido generada sintéticamente. Por ejemplo, el artículo Attributing Fake Images to GANs detecta incluso qué tipo de red GAN ha sido la que ha generado las imágenes a través del ruido base que emplean para generar las imágenes falsas.

Dadas todas estas limitaciones, NVIDIA continuó evolucionando StyleGAN teniendo en cuenta esos errores y liberó a finales de 2019 StyleGAN2 que mejoraba notablemente las imágenes generadas por el sistema previo.

Ejemplos generados por StyleGAN2.

Como podemos ver, solucionan errores que aparecían en la primera versión como la simetría de las caras o la posición de los dientes relativa al ángulo de la imagen. Es posible probar a generar imágenes desde la demo.

Imágenes generadas por StyleGAN2 manteniendo la forma de la dentadura.

Además de generar imágenes de alta calidad, esta nueva versión presenta las proyecciones. Esta nueva característica requiere una imagen objetivo y la red tratará de representarla lo más fiel posible. La demo expone el ejemplo con coches donde se ve realmente la potencia de este sistema.

Detección de imagen

Como se ha podido demostrar, existe ya un método gratuito y fácil de usar para generar imágenes de caras realistas y muy difíciles de distinguir, pudiéndolas usar en diversos vectores de ataque como puede ser en aplicaciones de citas, correos de spam o phishing para tratar de engañar a la víctima o en redes sociales para generar bots que se salten los controles que utilizan estos servicios. En el anterior artículo, ya hablamos de cómo en una de las charlas se habló de Fake Person que lograban seguidores a través de generar textos sintéticos mediante el sistema de OpenAI GPT-2. En este ejemplo también utilizaron imágenes generadas por StyleGAN para la foto de perfil y crear una apariencia más real, dificultando su detección.

Cuenta de Twitter falsa.

Para detectar este tipo de contenido de manera automática, desde el laboratorio comprobamos que aplicando herramientas de detección de Photoshop era posible tener un indicador de que la imagen había sido generada artificialmente. Para ello se utilizó la herramienta que liberó Adobe, FAL Detector.

Comparación de la imagen haciendo uso del detector de FAL Detector..

Es visible que la imagen ha sido editada con Photoshop en un punto en concreto. Esto podría servir de indicador para detectar que la imagen viene generada por el modelo de StyleGAN y que esa persona no existe realmente. Esto también ha evolucionado y con la nueva versión de StyleGAN2. Las imágenes que genera ya no exponen este problema y tanto manualmente como automáticamente es más complicado diferenciarlas.

Comparación con imagen de StyleGANv2 y el detector de photoshop FAL Detector.

Para poder detectar las imágenes de StyleGAN2 es necesario utilizar las proyecciones que hemos mostrado anteriormente. Si nuestra imagen a proyectar es generada por el propio sistema, la imagen final será muy similar y podremos determinar que la imagen es sintética. Si por el contrario, utilizamos una imagen de una persona real, la proyección tendrá como resultado una imagen muy distinta a la original al no ser capaz de aproximarla, por lo tanto sabremos que esa imagen no ha sido generada por el algoritmo.

Proyección de una imagen generada por el modelo de StyleGANv2.

Proyección de una imagen real.

 

 

 

 

 

 

Por lo tanto, se utilice la primera versión o la segunda, es posible detectar de manera automática si la imagen es sintética o real, siendo necesario añadir estas protecciones en los sistemas de creación de cuentas para evitar que un atacante pueda usarlas para tratar de engañar a una víctima.

Conclusiones

Con este segundo artículo hemos cubierto la generación de imágenes sintéticas y cómo es posible detectarlas para evitar ser engañados. El siguiente artículo se centrará en el último de los apartados, generación y detección de vídeos. Este caso es el que más repercusión ha tenido a partir de la viralización de DeepFake, analizaremos el impacto y el problema derivado de ellos.

Fuente de la imagen de portada: Unsplash

Team que ha trabajado en esta investigación: Miguel Hernández y José Ignacio Escribano.

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?