lunes, octubre 31, 2022
domingo, octubre 30, 2022
Cómo recibir las alertas de mensajes en MyPublicInbox como DM en Twitter @mypublicinbox
Publicado por Chema Alonso a las 11:16 a. m. 0 comentarios
Etiquetas: antispam, e-mail, e-mails, MyPublicInbox, Spam, Tempos, twitter
sábado, octubre 29, 2022
Cómo funciona Stable Diffusion - y Dalle-2 o Midjourney -: Open Source Generative-IA que crea imágenes artísticas (2 de 2)
La clave, los espacios latentes
La respuesta es que Stable Diffusion trabaja sobre espacios latentes, sobre codificaciones de muchas menos dimensiones que guardan las características más críticas de las imágenes que recibe (por eso en realidad se lo conoce como un modelo de difusión latente), mientras que el resto lo hace sobre las imágenes en su espacio RGB, con muchas más dimensiones. Estas codificaciones se realizan con el encoder de un Autoencoder Variacional. Al final de todo el proceso, el decoder de este autoencoder se utiliza para transformar la información latente en la imagen RGB de salida.
Esto quiere decir que la U-Net no trabaja sobre las imágenes en su espacio RGB, sino sobre sus versiones comprimidas (latentes), reduciendo en gran medida la carga computacional. Esta era una de las cosas que me quedaba comentar sobre el proceso de denoising (eliminaciones de ruido) con la U-Net, pero falta explicar de qué manera se introduce el texto en este proceso para guiar las generaciones de contenido. Antes, veamos en la imagen siguiente la arquitectura de esta IA.
Podemos pensar que, durante el entrenamiento, en el proceso de la Cadena de Markov en el que vamos generando las diferentes versiones latentes ruidosas (Diffusion Process), lo que estamos haciendo es generar una especie de dataset para un aprendizaje supervisado donde cada entrada consiste en tres valores (latente zt, texto, paso de cadena t) y la salida es la cantidad de ruido que se ha generado a partir del latente zt-1 entre el paso de la cadena t-1 y t.
La importancia de los Transformers
Habiendo comentado la arquitectura de este modelo de difusión latente, queda responder a la siguiente pregunta: ¿Cómo se integra el texto de entrada en el proceso de denoising? Ha llegado el momento de hablar un poco de Transformers, que son otra de las grandes revoluciones que ocurrieron en el ámbito de la IA, sobre todo en el dominio del procesamiento del lenguaje (¿os suena GPT-3?).
Podemos entender como que cada dimensión del vector significa algo, como por ejemplo “familia”, de esta manera en esta dimensión la palabra “bebé” y “padre” tendrán valores similares. Por lo que también podemos ver que las palabras “cuchara” y “cohete” tendrán vectores de valores muy distintos, ya que no tienen mucho que ver. En la imagen siguiente se muestra un ejemplo, donde por ejemplo la palabra “casas” (houses) está más alejada (tiene menos relación) que el resto de las palabras, que son animales.
En un espacio de vectores de palabras de muchas dimensiones, existen infinidad de relaciones de este tipo que acaban generando una especie de “diccionario” donde cada palabra tiene su significado y sus relaciones con otras palabras, en forma de vectores numéricos. La clave de las capas de atención que se utilizan en el Encoder de los Transformers es que entrenando este tipo de modelos con enormes conjuntos de datos (textos) se pueden crear unos vectores de palabras muy potentes, ya que almacenan contexto sobre las otras palabras con las que se encuentra en el texto, cosa que ninguna otra arquitectura de IA logra hacer.
Esto que os acabo de explicar es necesario para entender cómo se integran los textos de entrada (vectores numéricos) en el proceso de denoising con la U-Net. Stable Diffusion utiliza los embeddings generados por el encoder de un Transformer perteneciente a una red neuronal (ClipText) pre-entrenada con enormes conjuntos de datos, estos datos con los que se entrena consisten en pares imagen-caption (pie de foto), en el que gracias al entrenamiento aprende a producir embeddings donde por ejemplo una imagen de un gato y la frase “una foto de un gato” están muy relacionados. De esta manera se crea un “diccionario” enorme con vectores de palabras que guardan gran relación con un montón de imágenes de Internet (que es al fin y al cabo de donde se obtienen las imágenes para entrenar el Encoder del Transformer).
De esta manera, en la arquitectura del modelo que vimos en la Figura 9, realmente el texto que se recibe en el proceso de denoising no son las palabras como tal, sino sus codificaciones en vectores numéricos, gracias al uso del Encoder pre-entrenado que acabamos de ver. Una vez hemos visto como llegamos a tener vectores numéricos en vez de las propias palabras que insertamos en el texto, podemos ver ya cómo se integran estos vectores en el proceso de eliminación de ruido. Para que la U-Net soporte el guiado de la generación mediante texto (Text Conditioning) se añaden una serie de capas en su arquitectura denominadas capas de atención.
Como vimos en la Figura 7, la U-Net está formada por una serie de convoluciones que son las que reciben el latente y el paso de la cadena (que, por cierto, este paso no se trata de un número escalar, sino que se codifica también como un vector numérico) y van procesando las características más relevantes. Ahora, después de que la entrada pase por las convoluciones y antes de encogerse en una menor dimensión, se introduce la capa de atención que recibe el vector numérico que representa el texto y lo mezcla con el espacio de información latente generado antes en las convoluciones. Este proceso se repite en las sucesivas convoluciones, de manera que ahora las convoluciones realizadas incorporan información sobre el texto.
¿Cómo se entrenó Stable Diffusion?
Para el entrenamiento, Stable Diffusion se entrenó con el dataset LAION-Aesthetics, consistente de pares imagen-caption, cuya estética de las imágenes se muestran en la imagen siguiente (ésta será la estética que se recreará en las generaciones de imágenes, puesto que el modelo ha sido entrenado con ellas).
De esta manera, el modelo finalmente va aprendiendo un espacio latente del mundo (de los datos) que ha “visto” y, una vez se tiene el modelo entrenado, introduciendo un texto (que se transformará a vector numérico usando el Encoder del Transformer pre-entrenado) y empezando como semilla con un array latente aleatorio se genera la imagen de salida condicionada a este texto. El modelo analiza todo el “conocimiento” que ha adquirido gracias al entrenamiento para generar la imagen que entiende como “más probable”, “viajando” sobre el espacio latente aprendido.
Conclusiones
Las nuevas Generative-AI basadas en modelos de difusión han supuesto que mucha más gente haya empezado a hablar sobre la Inteligencia Artificial, pero no solo por gente que se dedica al sector tecnológico, - como hemos aplicado ya en el mundo de la Ciberseguridad - muchas personas ajenas a este sector también han empezado a conocer este campo tan emocionante, como es el de la IA.
Figura 15: Libro de Machine Learning aplicado a Ciberseguridad de Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández |
¡El futuro es prometedor!
Autor: Javier del Pino Díaz, Intership en Ideas Locas CDO
Publicado por Chema Alonso a las 8:43 a. m. 0 comentarios
Etiquetas: AI, Artificial Intelligence, Deep Learning, Generative-AI, IA, Inteligencia Artificial, Machine Learning, Open Source
viernes, octubre 28, 2022
Cómo funciona Stable Diffusion - y Dalle-2 o Midjourney -: Open Source Generative-IA que crea imágenes artísticas (1 de 2)
Para ponernos en contexto, este año 2022 comenzamos alrededor de abril con la puesta en escena de Dalle-2, que seguro ya conocéis, ya que por aquí se habló de Crayon - basado den Dall-e mini - en los artículos de "Haciéndome un selfie con CrAIyon (Dall-e mini)", en el que veíamos "Cómo Dall-e mini (CrAIyon) pinta a personajes populares" o "Cómo Dall-e y OpenAI pintan con sesgos de género". Esta IA supuso una gran revolución, y aunque antes ya se habían presentado modelos similares, ésta fue la que realmente hizo gran acto de presencia, porque se empezaron a usar los llamados modelos de difusión (explicaré en qué consiste más adelante en este artículo) dejando boquiabiertos a todos aquellos que la probaban por sus fantásticas creaciones.
Figura 3: Libro de Machine Learning aplicado a Ciberseguridad de Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández |
Modelos de difusión
Para entender en qué consiste un modelo de difusión, observa este GIF, imagina que echamos una gota de pintura en un vaso de agua. Justo al caer la gota al agua, la densidad de la pintura será muy alta en un punto, y cero en otras partes. Al cabo de un tiempo, la gota se difundirá en el agua hasta alcanzar un equilibrio. Pensad que el hecho de que la gota de pintura esté en un punto equivale a tener una imagen en claro, sin ruido, y que con el paso del tiempo perdemos la información totalmente de la imagen, se “difunde en el agua”.
La pregunta que nos hacemos ahora es, ¿qué pasaría si pudiéramos revertir este proceso? Es decir, que, a partir de la pintura difuminada, podamos volver al punto donde la gota justo cae al agua. Obviamente, en nuestro mundo físico esto es imposible (no podemos volver atrás en el tiempo), pero en los modelos de difusión sí que es posible, es decir, podemos volver desde una imagen llena de ruido hasta su correspondiente imagen en claro, sin ruido. Los modelos de difusión funcionan replicando este proceso, es decir, a partir de una imagen, se va añadiendo ruido a ésta hasta tener una imagen totalmente llena de ruido, y después aprendiendo cómo revertir este proceso.
Añadir ruido a las imágenes
En los modelos de difusión, el ruido que se añade es el llamado Ruido Gaussiano. Básicamente, esto quiere decir que a la hora de elegir cómo aplicar el ruido en cada momento se sigue una distribución gaussiana. Si observamos la imagen, diferentes valores que forman esta distribución hace que esta se haga más ancha o estrecha y que se desplace a un lado u otro, pero la forma de campana sigue permaneciendo.
Veamos un ejemplo de cómo añadir ruido utilizando distribuciones gaussianas a una imagen. Para simplificarlo, suponemos que la imagen solo tiene dos píxeles (170 y 150). Podemos observar en la siguiente imagen cómo la distribución gaussiana se centra sobre la imagen, mientras que la anchura de la campana es un valor constante que se fija con anterioridad. De esta manera, añadir ruido significa seleccionar una posición aleatoria dentro de esta distribución, por lo que cambiarán los píxeles de la imagen y también la distribución se irá centrando en diferentes posiciones (dependiendo de los píxeles resultantes escogidos).
Como vimos antes, dependiendo de la anchura de la campana será más o menos probable que los nuevos píxeles escogidos sean cercanos a los píxeles originales. En este ejemplo, la campana es estrecha por lo que el punto coloreado de verde es más probable que sea escogido frente al punto rojo. Por lo que, por ejemplo, los nuevos píxeles escogidos serían (173,152), es decir, el punto verde, y la distribución gaussiana se centrará en ese nuevo punto.
La predicción del ruido con CNN
En los modelos de difusión, obviamente, se trabaja con ejemplos de muchas más dimensiones. Normalmente, la Cadena de Markov suele ser de una longitud del orden de unas 1.000 adiciones de ruido. Además, el ruido que se va aplicando en cada paso no siempre es el mismo, esto se va regulando con un planificador que va cambiando poco a poco las formas de la distribución gaussiana (si quieres entender toda la matemática que hay detrás, puedes leer este artículo). De esta manera, finalmente tras todas estas iteraciones se pierde totalmente la información de la imagen original.
El hecho de realizar muchos pasos en la cadena (unos 1.000), nos permite llegar a tener una imagen con mucho ruido pero que se han ido añadiendo a cantidades muy pequeñas, lo que facilitará posteriormente el proceso de “predecir” cuánto ruido se ha utilizado en cada paso y poder ir eliminándolo. Ahora bien, ¿cómo revertimos las adiciones de ruido? Invertir este proceso significa ir recuperando los valores de los píxeles hasta tener una imagen resultante que se parezca a la original, y aquí es donde entran en juego las Redes Neuronales Convolucionales (CNNs), en concreto, la red conocida como U-Net.
Como podéis ver, esta arquitectura tiene forma de U. Esta recibe una imagen de entrada y la va procesando mediante convoluciones hasta recoger la información más crítica en un espacio de menos dimensiones (espacio latente), y a partir de esta información crítica se van construyendo características de más dimensiones hasta lograr las requeridas (por ejemplo, se puede entrenar una U-Net que reciba imágenes en escala de grises y genere su respectiva imagen a color).
Aún hay más …
Volveremos a la U-Net más adelante en la segunda parte de este artículo y entenderemos mejor cómo se entrena esta red. Solo comentaros que, en realidad, esta arquitectura en forma de U no se utiliza en este caso exactamente como os he explicado. Por lo que se volvieron tan famosas estas nuevas Generative-AI generativas basadas en modelos de difusión es porque tú las puedes introducir un texto (concepto conocido como "input prompt") y te genera contenido artístico basado en el texto que has introducido, y sin embargo esto ni siquiera lo he mencionado de momento. Entonces, ¿cómo funciona la generación de imágenes basadas en los "prompts" de entrada?
Dalle-2, Stable Diffusion, Midjourney… todos estos modelos de difusión pueden recibir además entradas como por ejemplo textos (text2image) u otras imágenes (image2image). Estas entradas se las conocen como elementos de condicionamiento, ya que, como bien dice su nombre, condicionan la salida para ajustarse a lo que hemos pedido. En este artículo quiero centrarme en el caso text2image, el más famoso, donde introduces un texto a la IA y te genera contenido basándose en este texto. Y para explicar esto, vamos a ver cómo funciona Stable Diffusion en la siguiente parte del artículo.
Publicado por Chema Alonso a las 6:12 a. m. 0 comentarios
Etiquetas: AI, Artificial Intelligence, Deep Learning, Generative-AI, IA, Inteligencia Artificial, Machine Learning, Open Source
jueves, octubre 27, 2022
Presentación de "Las Tiras de Cálico 2" y Sesión de Firmas en la exposición de Superhéroes este Viernes 28 de Octubre
Figura 2: Las tiras de Cálico Electrónico Volumen 1 |
Figura 6: Póster de Cálico Electrónico |
Publicado por Chema Alonso a las 6:11 a. m. 0 comentarios
Etiquetas: 0xWord, Cálico Electrónico, cómic, Cómics, dibujos, Eventos, Humor, MyPublicInbox, Tempos
miércoles, octubre 26, 2022
Social Hunters: Hacking con Ingeniería Social en el Red Team @0xWord
Figura 3: Índice del libro "Social Hunters" de 0xWord.
La ingeniería social supone el principal método usado por los delincuentes a la hora de engañar a sus víctimas, y esto aplica tanto a la vida analógica como digital, la naturaleza empática del ser humano, sus ganas de ayudar y caer bien hacen de él la víctima perfecta. Por esta razón si se quiere estar lo más protegido posible es imprescindible conocer los por qué, y los cómo.
A lo largo del libro se hace un recorrido para intentar responder a estas preguntas, desde los principios en los que se apoya la ingeniería social, sus orígenes y casos reales, a cómo afectan a los seres humanos teniendo en cuenta la biología y su psicología.
Pero no todo es teoría, para ver cómo aplicar este conocimiento se profundiza en ejemplos de dos de las técnicas usadas en ingeniería social y sus herramientas (una en entorno físico y otra digital).
Publicado por Chema Alonso a las 6:01 a. m. 0 comentarios
Etiquetas: 0xWord, hackers, ingeniería social, libro, Libros, MyPublicInbox, pentest, pentesting, Phishing, Red Team, Tempos
martes, octubre 25, 2022
Contactos públicos en las redes sociales a través de @MyPublicInbox
Publicado por Chema Alonso a las 9:12 a. m. 0 comentarios
Etiquetas: antispam, email, MyPublicInbox, redes sociales, Spam, Tempos, twitter
Entrada destacada
Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €
El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...
Entradas populares
-
Ayer publiqué un post que tiene ver con las opciones de privacidad de Facebook asociadas a los correos electrónicos , y mañana sacaré la se...
-
La app de mensajería instantánea Telegram tiene muchos fans por el atributo de seguridad que ha querido potenciar desde el principio, per...
-
Hoy lunes os voy a traer una curiosidad de esas que se me pasa por la cabeza cuando menos lo busco. Y en este caso tiene que ver con Star Wa...
-
Conseguir la contraseña de Facebook de una cuenta es una de las peticiones más usuales que se suele recibir de la gente que busca solucion...
-
Ya hace tiempo que dediqué un artículo a los problemas que Facebook estaba teniendo con la indexación en Google . Uno de los lectores (grac...
-
Que el mundo del Tokenomics , las Criptomonedas , y los Tokens para desarrollar plataformas digitales Web3 con arquitecturas DApps basada...
-
Quizás recuerdes, ya hace algunos años, una PoC que hicimos sobre cómo proteger WordPress en modo paranoico donde, además de proteger el l...
-
Ya llevamos unos días en NOVIEMBRE encarando el final del año, y hoy aprovecho para dejaros la lista de formaciones y cursos online que pu...
-
Mi paso por la Ekoparty 2024 fue corto pero intenso para mí. Viajé el lunes por la noche, llegué el martes para preparar la charla, me fui ...
-
Durante la década de los 60 , en concreto entre los años 1968 y 1969 , un asesino en serie traía de cabeza a los agentes del FBI : el Asesi...