1 pontos por GN⁺ 2024-11-30 | 1 comentários | Compartilhar no WhatsApp

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

 
GN⁺ 2024-11-30
Comentários no Hacker News
  • Analisar dados de visualização usando scripts JSON é uma tarefa complexa
    • O 4chan começou a exigir verificação por e-mail
  • Problemas de interoperabilidade entre Keras e Tensorflow.js são um problema típico do Tensorflow
    • O TF parece mais uma coleção de ferramentas relacionadas do que um produto integrado
    • Todas as bibliotecas/ferramentas open source do Google passam uma sensação parecida
  • Há um motivo para as pessoas evitarem CAPTCHAs baseados em texto distorcido
    • Chegou-se a um ponto em que computadores conseguem resolvê-los melhor que humanos
    • Há um artigo interessante relacionado a isso
  • Surpreendentemente, muitos CAPTCHAs baseados em texto podem ser resolvidos com algumas linhas de shell script
    • É possível converter para escala de cinza com imagemagik e depois processar com teserract
  • Também existem sites como 2captcha.net
    • CAPTCHA equivale a exigir o mínimo de esforço
  • Fico pensando se não seria melhor analisar o comportamento e o tempo de resposta do usuário sob o disfarce de um CAPTCHA
    • Poderíamos inventar um “teste de Turing reverso” que treina IA para decidir se a outra parte é humana ou não
  • Há uma análise de 2014 sobre o CAPTCHA da Silk Road
  • A resposta apropriada do 4chan seria simplificar a tarefa para humanos
    • CAPTCHAs complexos aumentam o incômodo para humanos e não reduzem a capacidade das máquinas de resolvê-los
  • É possível que a seleção de caracteres do CAPTCHA do 4chan tenha sido intencional para formar slogans racistas/extremistas
    • Certos caracteres aparecem com frequência
    • Parece aleatório, mas certos padrões ocorrem com frequência
  • Existe um projeto para resolver o CAPTCHA do 4chan
  • Já houve quem tentasse usar o 4chan, mas não conseguisse passar pelo CAPTCHA
  • Fico curioso se o 4chan detecta comportamento de bots como o CAPTCHA do Google faz