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
Opiniones en Hacker News