Introdução
- Este projeto começou como uma experiência de aprendizado para aprimorar conhecimentos em machine learning e TensorFlow.
- O objetivo era criar um modelo de machine learning capaz de resolver o CAPTCHA do 4Chan no navegador com mais de 80% de precisão.
Terminologia
- CAPTCHA: teste para verificar se o usuário de um computador ou site é humano.
- 4Chan: site de fórum anônimo de imagens que oferece painéis de discussão sobre vários temas.
- CAPTCHA comum: CAPTCHA do 4Chan composto por 5 a 6 caracteres alfanuméricos.
- CAPTCHA deslizante: forma mais complexa de CAPTCHA em que uma imagem de fundo e uma imagem de primeiro plano se sobrepõem.
Coleta de dados
- A parte mais difícil em um problema de machine learning é coletar os dados.
- Raspar CAPTCHAs do 4Chan e obter as soluções foi o principal desafio.
Raspando CAPTCHAs no 4Chan
- Foi descoberto um método para extrair dados de CAPTCHA em formato JSON analisando requisições HTTP.
- Foi necessário ajustar o intervalo entre as requisições para gerenciar a dificuldade dos CAPTCHAs.
Obtendo soluções
- Foram usados serviços comerciais de resolução de CAPTCHA, mas a precisão era baixa.
- Também foram tentadas abordagens de resolver manualmente ou pedir ajuda a pessoas confiáveis, mas eram limitadas.
Geração de dados sintéticos
- Foram gerados dados sintéticos imitando o CAPTCHA do 4Chan.
- Foi desenvolvido um algoritmo para gerar CAPTCHAs sintéticos separando fundo e caracteres.
Criação do modelo
- O modelo foi construído usando uma arquitetura LSTM CNN.
- O modelo foi implementado com Keras e TensorFlow.
Processamento de dados
- Todas as imagens de CAPTCHA foram ajustadas para 300x80 pixels antes de serem usadas como entrada do modelo.
- O texto enfatiza a importância da documentação e a necessidade de não deixar passar seus detalhes.
Treinamento do modelo
- O modelo foi treinado com cerca de 500 imagens rotuladas manualmente e 50.000 imagens sintéticas.
- O treinamento foi executado em uma GPU NVIDIA RTX A4000.
Uso do modelo no TensorFlow.js
- O modelo foi convertido para TensorFlow.js para poder rodar no navegador.
- No Python 3.12, o script de conversão não funciona.
- Modelos do Keras 3 não são compatíveis com TensorFlow.js.
Desempenho real
- Em CAPTCHAs reais do 4Chan, apresentou taxa de sucesso acima de 90%.
- Mostrou o mesmo desempenho também em CAPTCHAs de 4 caracteres.
Conclusão
- Este projeto permitiu aprender muito sobre machine learning e visão computacional.
- O objetivo foi alcançado, resultando em um desfecho satisfatório.
1 comentários
Comentários no Hacker News
imagemagike depois processar comteserract