Einführung
- Dieses Projekt begann als Lernerfahrung, um das Wissen über Machine Learning und TensorFlow zu vertiefen.
- Ziel war es, ein Machine-Learning-Modell zu entwickeln, das 4Chan-CAPTCHAs im Browser mit einer Genauigkeit von über 80 % lösen kann.
Begriffe
- CAPTCHA: Ein Test, mit dem überprüft wird, ob ein Computer- oder Website-Nutzer ein Mensch ist.
- 4Chan: Eine anonyme Imageboard-Website mit Diskussionsforen zu verschiedenen Themen.
- Normales CAPTCHA: Das 4Chan-CAPTCHA, das aus 5 bis 6 alphanumerischen Zeichen besteht.
- Slider-CAPTCHA: Eine komplexe Form von CAPTCHA, bei der sich ein Hintergrundbild und ein Vordergrundbild überlagern.
Datensammlung
- Der schwierigste Teil eines Machine-Learning-Problems ist das Sammeln von Daten.
- Die wichtigste Herausforderung bestand darin, CAPTCHAs von 4Chan zu scrapen und die Lösungen zu erhalten.
CAPTCHAs von 4Chan scrapen
- Durch die Analyse von HTTP-Anfragen wurde eine Methode gefunden, um CAPTCHA-Daten im JSON-Format zu extrahieren.
- Der Abstand zwischen den Anfragen musste angepasst werden, um den Schwierigkeitsgrad der CAPTCHAs zu steuern.
Lösungen erhalten
- Kommerzielle CAPTCHA-Lösungsdienste wurden genutzt, ihre Genauigkeit war jedoch gering.
- Es wurde auch versucht, sie selbst zu lösen oder vertrauenswürdige Personen darum zu bitten, doch das war nur begrenzt praktikabel.
Synthetische Daten erzeugen
- Es wurden synthetische Daten erzeugt, die 4Chan-CAPTCHAs nachahmen.
- Ein Algorithmus wurde entwickelt, um synthetische CAPTCHAs zu erzeugen, indem Hintergrund und Zeichen getrennt wurden.
Modellerstellung
- Das Modell wurde mit einer LSTM-CNN-Architektur aufgebaut.
- Es wurde mit Keras und TensorFlow implementiert.
Datenverarbeitung
- Alle CAPTCHA-Bilder wurden für die Eingabe in das Modell auf 300x80 Pixel angepasst.
- Die Bedeutung der Dokumentation wurde hervorgehoben, und es musste darauf geachtet werden, keine Details in der Dokumentation zu übersehen.
Modelltraining
- Das Modell wurde mit rund 500 manuell bearbeiteten Bildern und 50.000 synthetischen Bildern trainiert.
- Das Training wurde auf einer NVIDIA RTX A4000 GPU durchgeführt.
Verwendung des Modells in TensorFlow.js
- Das Modell wurde in TensorFlow.js konvertiert, damit es im Browser ausgeführt werden kann.
- Unter Python 3.12 funktioniert das Konvertierungsskript nicht.
- Keras-3-Modelle werden von TensorFlow.js nicht unterstützt.
Leistung in der Praxis
- Bei echten 4Chan-CAPTCHAs wurde eine Erfolgsquote von über 90 % erreicht.
- Auch bei 4-Zeichen-CAPTCHAs wurde die gleiche Leistung gezeigt.
Fazit
- Durch dieses Projekt wurde viel über Machine Learning und Computer Vision gelernt.
- Das Ziel wurde erreicht und ein zufriedenstellendes Ergebnis erzielt.
1 Kommentare
Hacker-News-Kommentare
imagemagikin Graustufen umwandeln und dann mitteserractverarbeiten