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
Avis Hacker News