1 points par GN⁺ 2024-11-30 | 1 commentaires | Partager sur WhatsApp

Introduction

  • Ce projet a commencé comme une expérience d’apprentissage visant à approfondir mes connaissances en machine learning et en TensorFlow.
  • L’objectif était de créer un modèle de machine learning capable de résoudre les CAPTCHA de 4Chan dans le navigateur avec une précision supérieure à 80 %.

Terminologie

  • CAPTCHA : test servant à vérifier qu’un ordinateur ou l’utilisateur d’un site web est bien un humain.
  • 4Chan : site web de type imageboard anonyme proposant des forums de discussion sur des sujets variés.
  • CAPTCHA classique : CAPTCHA 4Chan composé de 5 à 6 caractères alphanumériques.
  • CAPTCHA à curseur : forme plus complexe de CAPTCHA dans laquelle une image d’arrière-plan et une image de premier plan se chevauchent.

Collecte des données

  • Dans un problème de machine learning, la partie la plus difficile est la collecte des données.
  • Le principal défi consistait à scraper les CAPTCHA de 4Chan et à obtenir leurs solutions.

Scraper les CAPTCHA sur 4Chan

  • En analysant les requêtes HTTP, il a été possible de découvrir une méthode pour extraire les données des CAPTCHA au format JSON.
  • Il fallait ajuster l’intervalle entre les requêtes pour gérer la difficulté des CAPTCHA.

Obtenir les solutions

  • Des services commerciaux de résolution de CAPTCHA ont été utilisés, mais leur précision était faible.
  • Résoudre les CAPTCHA soi-même ou demander à des personnes de confiance a aussi été essayé, mais cela restait limité.

Génération de données synthétiques

  • Des données synthétiques ont été générées en imitant les CAPTCHA de 4Chan.
  • Un algorithme a été développé pour créer des CAPTCHA synthétiques en séparant l’arrière-plan et les caractères.

Création du modèle

  • Le modèle a été construit à l’aide d’une architecture LSTM CNN.
  • Le modèle a été implémenté avec Keras et TensorFlow.

Traitement des données

  • Toutes les images de CAPTCHA ont été redimensionnées en 300x80 pixels pour être utilisées comme entrée du modèle.
  • L’importance de la documentation est soulignée, et il faut veiller à ne pas passer à côté de ses détails.

Entraînement du modèle

  • Le modèle a été entraîné avec environ 500 images annotées manuellement et 50 000 images synthétiques.
  • L’entraînement a été effectué sur un GPU NVIDIA RTX A4000.

Utilisation du modèle dans TensorFlow.js

  • Le modèle a été converti pour TensorFlow.js afin de pouvoir s’exécuter dans le navigateur.
  • Sous Python 3.12, le script de conversion ne fonctionne pas.
  • Les modèles Keras 3 ne sont pas pris en charge par TensorFlow.js.

Performances réelles

  • Sur les véritables CAPTCHA de 4Chan, le taux de réussite dépasse 90 %.
  • Les mêmes performances ont été observées sur les CAPTCHA à 4 caractères.

Conclusion

  • Ce projet a permis d’apprendre énormément sur le machine learning et la vision par ordinateur.
  • L’objectif a été atteint, avec un résultat jugé satisfaisant.

1 commentaires

 
GN⁺ 2024-11-30
Avis Hacker News
  • Parser des données de visualisation à l’aide d’un script JSON est une tâche complexe
    • 4chan a commencé à exiger une vérification par e-mail
  • Les problèmes d’interopérabilité entre Keras et Tensorflow.js sont typiques de Tensorflow
    • TF donne l’impression d’être davantage un ensemble d’outils connexes qu’un produit intégré
    • Toutes les bibliothèques / tous les outils open source de Google donnent une impression similaire
  • Il y a une raison pour laquelle les gens évitent les CAPTCHA textuels déformés
    • Les ordinateurs ont atteint un niveau où ils peuvent les résoudre mieux que les humains
    • Il existe un article de recherche intéressant à ce sujet
  • De façon surprenante, beaucoup de CAPTCHA textuels peuvent être résolus avec quelques lignes de script shell
    • Il est possible de les convertir en niveaux de gris avec imagemagik puis de les traiter avec teserract
  • Il existe aussi des sites comme 2captcha.net
    • Un CAPTCHA revient essentiellement à exiger un effort minimal
  • Je me demande s’il ne vaudrait pas mieux analyser le comportement et le timing des utilisateurs sous couvert de CAPTCHA
    • On pourrait inventer un « test de Turing inversé » qui entraînerait une IA à déterminer si l’autre partie est humaine ou non
  • Il existe une analyse de 2014 sur le CAPTCHA de Silk Road
  • La réponse appropriée de 4chan serait de simplifier le travail humain
    • Les CAPTCHA complexes augmentent l’inconfort des humains sans réduire la possibilité pour les machines de les résoudre
  • Il est possible que le choix des caractères du CAPTCHA de 4chan ait été intentionnellement conçu pour produire des slogans racistes / extrémistes
    • Certains caractères sont utilisés fréquemment
    • Cela semble aléatoire, mais certains motifs reviennent souvent
  • Il existe un projet qui résout les CAPTCHA de 4chan
  • Certains ont essayé d’utiliser 4chan mais n’ont pas réussi à passer le CAPTCHA
  • On se demande si 4chan détecte les comportements de bot comme le fait le CAPTCHA de Google