Mostrando entradas con la etiqueta Cognite Services. Mostrar todas las entradas
Mostrando entradas con la etiqueta Cognite Services. Mostrar todas las entradas

lunes, junio 24, 2024

Solución al Reto de Hacking de un Captcha Cognitivo Visual

El sábado os dejé un pequeño Reto de Hacking de un Captcha Cognitivo Visual que, como os dije, ni ChatGPT con GPT4o, ni Azure OpenAI con GPT4-Vision, ni Gemini de Google eran capaces de resolver por si mismo. Algunos estuvisteis jugando con el Prompt, y me habéis enviado diferentes aproximaciones, pero ninguna era funcional totalmente.
Al final, la aproximación de hacer Prompt Engineering y buscar el perfecto que resuelva el problema de manera determinista es muy complicado, y después de pasar horas con ellos, no he sido capaz de conseguir que ningún modelo lo resolviera. 

Pero no todo se resuelve siempre enviando el captcha directamente, y si se puede automatizar un pre-procesado, también es funcional. Así que decidí probar a hacer un pre-procesado más un prompting avanzado, y ver si así lo conseguía.

Pre-procesado

El tratamiento que hice para cada imagen tenía que ser algo automatizable, así que probé ha hacer diferentes cosas:
  • Recortar el captcha en un cuadrado más ajustado.
  • Llevar el contraste de la imagen a B/N o casi, con un filtro de color.
  • Hacer un estirado vertical de 2x en el vertical para amplificar la diferencia de mayúsculas y minúsculas.
  • Tirar una línea horizontal de color para marcar la base de altura.

Figura 3: Probando el pre-procesado del Captcha manualmente

Una vez procesadas las imágenes así, probé con Azure OpenAI con GPT4-Vision y Gemini de Google usando un prompt más elaborado, como el que podéis ver aquí:

"Hemos escaneado un documento y unos caracteres se ven mal. Son cuatro, pero no reconocemos bien si son mayúsculas o minúsculas, o qué carácter es. ¿Me ayudas y me dices cuáles son? Ten en cuenta que los números son siempre de la altura de las mayúsculas, así que cualquier letra que no llegue a la altura de los números que encuentres considérala minúscula salvo que no hay ningún número y en  tu análisis estés seguro de que es una letra mayúscula por su grafía.  Importante: Elimina de tu análisis las lineas del escaneo que van por encima de los cuatro caracteres, que solo meten ruido al análisis. Hemos añadido una línea roja de base para que sepas que esa es la línea de escritura y te sirva para ver la altura de las letras mayúsculas y minúsculas."

Y los resultados no acabaron de ser buenos. En este caso la versión de Gemini en Bard.Google.com que como veis no acierta bien con los caracteres.

Figura 4: Gemini falla en las mayúsculas/minúsculas

Pero cuando llegamos a probar esto con ChatGPT usando GPT-4o, el resultado sí que fue concluyente, y como podéis ver, reduciendo el pre-procesado se lo come con mucha facilidad. Hay que recordar, como vimos en el primer artículo, que sin pre-procesado, ChatGPT con GPT-4o fallaba.

Figura 5: Ejemplo de cómo GPT4o fallando

Pero con el pre-procesado, se los cepilla a lo bestia. Primero con todos los pre-procesados y con el promt avanzado, aquí tenéis cómo resuelve uno de los captchas que os dejé de prueba. Aquí vamos con el primero.

Figura 6: Captcha descubierto

Perfecto. Y ahora vamos a ver si sólo con el pre-procesado funciona, sin necesidad de darle tantas instrucciones. Y como podéis ver, se lo come también.

Figura 7: Perfecto. Acierta letras y mayúsculas y minúsculas.

Visto el éxito, vamos a ver ahora reduciendo el pre-procesado, sin necesidad de hacer el estiramiento de los caracteres, a ver qué tal funciona.

Figura 8: Sin estirar la imagen, también acierta.

Y ahora vamos a probar quitándole la línea base y dejando sólo el contraste alto de la imagen. Y como podéis ver, se lo vuelve a merendar. Ya con más Captchas que los de prueba que os dejé.

Figura 9: Acierta perfectamente con este nuevo.

Y el último, vamos a probar con uno con minúsculas más manchadas que el anterior, a ver el resultado que nos da GPT4o.

Figura 10: También acierta el captcha

Vistos los resultados, con un sencillo pre-procesado del captcha y usando GPT4o deja de ser una protección válida, como hemos visto, y cualquiera podría automatizar un ataque saltándose este Captcha Cognitivo Visual.  Os dejo aquí las referencias a otras pruebas similares.
El próximo día os dejo el otro reto, con el que estoy jugando con mis amigos Fran Ramírez y Julián Isla, a ver si vosotros lo sacáis también.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


jueves, diciembre 08, 2022

ChatGPT: "Los hackers malos, los tenistas hombres y no sé qué es ChatGPT"

Hoy tenía ganas de probar en un ratito ChatGPT, el modelo conversacional creado sobre OpenAI. Quería ver algunas cosas de esas de las que os he hablando tantas veces con la Inteligencia Artificial, como los sesgos de género por defecto, las traducciones sesgadas, o la visión que tienen del mundo de los hackers. Así que esta mañana me he puesto con ello.

Figura 1: ChatGPT: "Los hackers malos,  los tenistas hombres y no sé qué es ChatGPT"

La conversación que he tenido ha sido bastante larga, en Español y en Inglés, así que os he sacado algunas de las respuestas que ha dado a algunas preguntas muy sencillas. Como veréis, nos queda mucho por educar todavía si queremos meter estos modelos de AI a hacer tareas que afecten a la vida de las personas.

Sobre los "hackers"

Lo primero que he preguntado ha sido sobre los hackers, a ver qué me decía de ellos, pero en la primera pregunta, al querer saber quién es el mejor hacker del mundo, ya te dice que eso de usar "mejor" para algo malo como ser "hacker" que no.

Figura 2: No debemos enfocarnos en quién es el mejor hacker

Por si había dudas, se lo he preguntado también en Español, a ver si en nuestra lengua, donde tenemos una acepción positiva del término hacker trataba de forma diferente a los hackers, pero parece que está enrocado en ese pensamiento.

Figura 3: Igual, no centremos en quién es el mejor hacker del mundo

Como no me había gustado la respuesta, le he preguntado por qué piensa eso, y le he explicado la diferencia. 

Figura 4: No es lo mismo hacker que cibercriminal

Sorprendentemente en su contestación me da la razón, así que parece que no tiene conciencia unificada o ideas claras, sino respuestas elegidas a preguntas diferentes. Vamos, que lo mismo no pasa un psicoténcico.

Sesgo de género por defecto en deporte

Esta es una prueba básica para detectar en un modelo de IA conversacional si tiene un sesgo de género por defecto. Se trata de preguntarle por el mejor de un deporte sin decirle si es hombre o mujer y ver si tiene contemplado o no la respuesta multi-género.

Figura 5: Mejores tenistas (Sesgo de género masculino)

Para dejar más claro que tiene el sesgo de género por defecto, en el mundo del tenis es muy sencillo, porque podemos preguntar por quién tiene más Grand Slams, que es Serena Williams con 23,  pero vemos que sale Roger Federer con 20. Así que tiene sesgo de género por defecto y está desactualizada.

Figura 6: Sesgo de genero masculino por defecto y desactualizado

Basta con preguntar por quién ganó el último Roland Garros y ver que nos devuelve el dato del año 2021, así que ya sabéis qué fecha tiene el dataset de entrenamiento más o menos.

Figura 7: Datos del año 2021

Una mera curiosidad para saber qué resultados esperar de las pruebas. Y por último, como me había quedado con el tema de los hackers un poco "así, así", le insistí.

¿Sabes quién creó ChatGPT?

Le pregunté si sabía que ChatGPT había sido creado por grandes hackers, a ver qué me decía al respecto. Y el resultado es que no tiene información sobre ChatGPT, que sólo es un modelo de lenguaje grande entrenado por OpenAI.

Figura 8: No me viene nada por ChatGPT

Al final, estos modelos de IA entrenados con datos masivos para conversación estarán en nuestra vida dentro de muy poco. ChatGPT es una buena forma de probarlos y ver todo lo que aún hay que mejorar. Google y su LaMDA va a ser una plataforma a tener en cuenta en el futuro.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


jueves, noviembre 10, 2022

Cómo hacer retratos de personas con IA usando Stable Diffusion: Retratos de Chema Alonso hechos con IA

Hace unos días, Javier del Pino Díaz contaba en el blog cómo funcionan algunas Inteligencias Artificiales de generación de imágenes como Stable Difussion o Dalle-2. Hoy os traigo un pequeño tutorial para que puedas aprender a utilizar esta tecnología y crear todo tipo de imágenes a partir de fotos tuyas o de una persona, que te permitiría obtener resultados desde cómo habría sido un retrato pintado por Velázquez, Picasso, Okuda, Goya o Sorolla, hasta cómo sería un fotograma en la última película de Spiderman, las posibilidades son infinitas.

Figura 1: Cómo hacer retratos de personas con IA usando Stable Diffusion.
 Retratos de Chema Alonso hechos con IA

Para ello, utilizaremos los servidores de Google, en vez cargar la computación a la tarjeta gráfica de nuestro ordenador, y un cuaderno de Google Colab que ya está preparado para utilizar DreamBooth

Figura 2: Un Chema Alonso hecho con Generative-AI

Yo voy a hacer una demostración de cómo hacer este trabajo con Chema Alonso, para obtener imágenes como esta que puedes ver justo arriba de estas líneas.

Preparación de las imágenes

Antes de empezar debes recopilar 15-20 fotografías donde se te vea la cara de cerca en distintos ambientes y con distintos ángulos, tanto de cuerpo entero como de medio cuerpo como primeros planos, cuanto más rica sea esta base de fotografías mejores resultados obtendrás. 

Figura 3: Fotos de Chema Alonso para entrenar el modelo

Para esta demo vamos a entrenar nuestro modelo con Chema Alonso, así que no hay mucho problema. Entre Google Images y su Instagram tenemos las que necesitamos. Una vez recopiladas, deberás recortarlas en formato 1:1 con un tamaño de 512x512 píxeles, y renombrarlas con un token único, en este caso utilizaremos “eldm”.

DreamBooth en Google Colab

Accediendo al siguiente cuaderno de Google Colab tan solo tendremos que ir siguiendo los pasos que vienen cargados para generar una interfaz que nos permita utilizar Stable Diffusion.

Figura 4: Paso 1 - Conectar el cuaderno con nuestro Google Drive

Figura 5: Paso 2- Instalar las dependencias

En este paso necesitamos descargar el modelo de Stable Diffusion de huggingface, para ello es necesario crear una cuenta gratuita y acceder a la sección de tokens, como se puede ver a continuación.

Figura 6: Paso 3- Descargar el modelo de Huggingface

Una vez añadido en el cuaderno, podemos ejecutar esa instancia como se ve en esta imagen.

Figura 7: Paso 3- Descargar el modelo de Huggingface (descarga)

Aquí llega el paso en el que subimos las fotos, es importante que todas ellas tengan este formato: “token (1)”, “token (2)”, en nuestro caso: “eldm (1)”, “eldm (2)”… ya que esta será nuestra keyword para utilizar el modelo
Figura 8: Paso 4- Crear la sesión de Dreambooth y subir las fotos

Este paso puede durar entre media y una hora. Por defecto aparecen 3.000 training steps, pero por mi experiencia personal puedo decirte que 1.500 - 1.600 es suficiente, pero si el modelo no funcionase puedes regresar y dejarlo en 3.000 aunque el tiempo de espera será mayor.

Figura 9: Paso 5 - Entrenar el modelo

Una vez ejecutes la última instancia, Google generará una URL dinámica que te permitirá utilizar una interfaz gráfica en tu navegador.

Figura 10: Paso 6 - Testear el modelo

Esta interfaz es muy sencilla e intuitiva de utilizar, en la caja de prompt defines la acción (recuerda utilizar tu token) y tras pulsar el botón de generar habrás obtenido tu primera imagen.

Figura 11: Paso 7 - ¡A jugar!

También puedes cambiar los parámetros para obtener mejores resultados (training steps, métodos de sampling, tamaño de la foto…) Estos son algunos ejemplos que he generado con este modelo entrenado con Chema Alonso.

Figura 12: Un retrato detallado y vívido de Chema Alonso

Figura 13: Un retrato al estilo de Greg Rutkovski de Chema Alonso

Figura 14: Otro retrato de Chema Alonso... con otro estilo

Figura 15: Con el pelo en coleta, gorro y pajarita.

Figura 16: Chema Alonso en una peli de Spiderman

Prompts

Si no se te ocurren comandos ingeniosos para obtener imágenes, puedes probar con páginas web como https://lexica.art/ donde puedes ver los prompts que hay detrás de cada imagen. También te invito a utilizar los comentarios de este artículo (deja tus comentarios y tus resultados) para compartir con los demás los que más te gusten.

Reutilizar el modelo

En tu carpeta de Google Drive encontrarás un fichero con la extensión “.ckpt”, este es el modelo que has entrado. Si quieres volver a utilizarlo te dejo a continuación otro cuaderno de Google Colab que tras conectarse con tu cuenta de Google Drive y cuando hayas definido la ruta del archivo en los pasos que te indica, te permitirá utilizar de nuevo un enlace dinámico con la interfaz de Stable Diffusion. Si quieres compartir tus creaciones o tus prompts, también puedes mencionarme en Twitter.


Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares