1 puntos por GN⁺ 2024-11-30 | 1 comentarios | Compartir por WhatsApp

Introducción

  • Este proyecto comenzó como una experiencia de aprendizaje para mejorar los conocimientos sobre machine learning y TensorFlow.
  • El objetivo era crear un modelo de machine learning capaz de resolver el CAPTCHA de 4Chan en el navegador con una precisión superior al 80%.

Terminología

  • CAPTCHA: prueba para verificar si quien usa una computadora o un sitio web es una persona.
  • 4Chan: sitio web anónimo de tablones de imágenes que ofrece foros de discusión sobre diversos temas.
  • CAPTCHA normal: CAPTCHA de 4Chan compuesto por 5 a 6 caracteres alfanuméricos.
  • CAPTCHA deslizante: forma compleja de CAPTCHA en la que una imagen de fondo y una imagen de primer plano se superponen.

Recolección de datos

  • La parte más difícil de un problema de machine learning es recolectar los datos.
  • El principal desafío fue scrapear los CAPTCHA de 4Chan y obtener las soluciones.

Scraping de CAPTCHA en 4Chan

  • Se descubrió un método para extraer los datos del CAPTCHA en formato JSON analizando las solicitudes HTTP.
  • Fue necesario ajustar el intervalo entre solicitudes para controlar la dificultad del CAPTCHA.

Obtener soluciones

  • Se usaron servicios comerciales de resolución de CAPTCHA, pero la precisión fue baja.
  • También se intentó resolverlos manualmente o pedir ayuda a personas de confianza, pero eso fue limitado.

Generación de datos sintéticos

  • Se generaron datos sintéticos imitando el CAPTCHA de 4Chan.
  • Se desarrolló un algoritmo para crear CAPTCHA sintéticos separando el fondo y los caracteres.

Creación del modelo

  • Se construyó el modelo usando una arquitectura LSTM CNN.
  • El modelo se implementó con Keras y TensorFlow.

Procesamiento de datos

  • Todas las imágenes CAPTCHA se ajustaron a 300x80 píxeles para ingresarlas al modelo.
  • Se enfatiza la importancia de la documentación y de no pasar por alto sus detalles.

Entrenamiento del modelo

  • El modelo se entrenó usando alrededor de 500 imágenes etiquetadas manualmente y 50,000 imágenes sintéticas.
  • El entrenamiento se realizó en una GPU NVIDIA RTX A4000.

Uso del modelo en TensorFlow.js

  • El modelo se convirtió a TensorFlow.js para que pudiera ejecutarse en el navegador.
  • En Python 3.12, el script de conversión no funciona.
  • Los modelos de Keras 3 no son compatibles con TensorFlow.js.

Rendimiento real

  • Mostró una tasa de éxito superior al 90% en CAPTCHA reales de 4Chan.
  • Mostró el mismo rendimiento incluso en CAPTCHA de 4 caracteres.

Conclusión

  • A través de este proyecto se aprendió mucho sobre machine learning y visión por computadora.
  • Se cumplió el objetivo y se obtuvo un resultado satisfactorio.

1 comentarios

 
GN⁺ 2024-11-30
Opiniones en Hacker News
  • Analizar datos de visualización usando scripts JSON es una tarea compleja
    • 4chan empezó a exigir verificación por correo electrónico
  • Los problemas de interoperabilidad entre Keras y Tensorflow.js son un problema típico de Tensorflow
    • TF se siente más como una colección de herramientas relacionadas que como un producto unificado
    • Todas las bibliotecas/herramientas open source de Google dan una sensación parecida
  • Hay una razón por la que la gente evita los CAPTCHA basados en texto distorsionado
    • Han llegado a un nivel en el que las computadoras pueden resolverlos mejor que los humanos
    • Hay un paper interesante relacionado con esto
  • Sorprendentemente, muchos CAPTCHA basados en texto pueden resolverse con unas pocas líneas de shell script
    • Se puede convertir a escala de grises con imagemagik y luego procesarlo con teserract
  • También existen sitios como 2captcha.net
    • Un CAPTCHA es, en esencia, algo que exige un esfuerzo mínimo
  • Me pregunto si sería mejor analizar el comportamiento y el timing del usuario disfrazándolo de CAPTCHA
    • Se podría inventar una "prueba de Turing inversa" que entrene una IA para determinar si la otra parte es humana o no
  • Hay un análisis de 2014 sobre el CAPTCHA de Silk Road
  • La respuesta adecuada de 4chan sería simplificar el trabajo de los humanos
    • Los CAPTCHA complejos aumentan la incomodidad para los humanos y no reducen la posibilidad de que las máquinas los resuelvan
  • Es posible que la selección de caracteres del CAPTCHA de 4chan haya sido diseñada para poder formar eslóganes racistas/extremistas
    • Ciertos caracteres se usan con frecuencia
    • Parece aleatorio, pero ciertos patrones aparecen seguido
  • Existe un proyecto para resolver el CAPTCHA de 4chan
  • Hay gente que intentó usar 4chan pero no pudo pasar el CAPTCHA
  • Me pregunto si 4chan detecta comportamiento de bots como hace el CAPTCHA de Google