Dies ist eine reale Implementierung von CNN auf Python 3, Keras und TensorFlow. Wir arbeiten in zwei Hauptschritten mit Preprocess.py
, das artefaktfreie Ziffernbilder erstellt, die später dem CNN-Modell in train.py
zugeführt werden, das das CNN-Modell trainiert und speichert.
Dieser Captcha-Löser wurde für die Verwendung in metu-NTE-scraper entwickelt und wird derzeit auch darin verwendet, um den Captcha-Schutz des Studentenportals von METU für Kurskapazitätsprüfungen https://student.metu.edu.tr/ zu umgehen. Aber Sie können es in Ihrer Anwendung mit einfachen Schritten verwenden, die unter „Wie verwende ich es?“ erläutert werden. Abschnitt.
Ich habe ein CNN mit TensorFlow trainiert, um Bilder von Captcha-Ziffern nach der Ziffernextraktion zu klassifizieren. Das Modell besteht aus zwei Faltungsschichten und Pooling-Schichten, gefolgt von einer vollständig verbundenen Schicht. Ich habe das Modell anhand eines Datensatzes von 10.000 Captcha-Bildern trainiert, der später in Bilder mit 60.000 Ziffern unterteilt wurde, und bei einem Bildtestsatz mit 12.000 Ziffern eine Testgenauigkeit von 99,94 % erreicht.
Zug- und Testgenauigkeit des Modells sind:
Hinweis: Einige der Bilder der Aktivierungsneuronenreaktionen sind unterhalb der 4 Vorverarbeitungsschritte zu sehen
predict.py
in Ihr Python-Programm: Import predict
predict_captcha
auf und verwenden Sie dabei den Dateipfad des Captcha-Bilds als einziges Argument, um das Captcha vorherzusagen filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
Um Ihnen das Verständnis des Ziffernextraktors und des Modells zu erleichtern, zeigen wir Ihnen die einzelnen Schritte in einer Visualisierung
Preprocess.py
arbeitet in 4 Schritten, um Ziffernbilder zu erstellen, die unten mit den Modellaktivierungen am Ende gezeigt werden
Im ersten Schritt löschen wir die Artefakte der Captcha-Bilder, die mit SampleCollecter.py
gesammelt wurden
Originalbild | Nach der Artefaktentfernung |
---|---|
Später wird das artefaktfreie Bild ausgeschnitten, um die Ziffern des Captchas einzubinden
Nach der Artefaktentfernung | Abgeschnitten |
---|---|
Dann werden gewichtete K-Mittel verwendet, um die Mittelpunkte jeder Ziffer zu ermitteln
Abgeschnitten | Schwerpunkte |
---|---|
Zuletzt erstellen wir Ziffernbilder unter Verwendung der aus k-means ermittelten Schwerpunkte
Schwerpunkte | Ziffern |
---|---|
Nachdem die Ziffern extrahiert wurden. Zur Vorhersage der Captcha-Bilder wird das CNN-Modell verwendet. Hier werden Aktivierungsneuronen für die letzte Faltungsschicht des CNN generiert. Diese Bilder wurden erstellt, indem die Ausgabe der letzten Faltungsschicht extrahiert und als Bild visualisiert wurde. Die folgenden Aktivierungsbilder zeigen die Reaktion einiger Filter in der letzten Faltungsschicht zweistelliger Bilder.
Extrahierte Ziffer | Aktivierung 10 | Aktivierung 18 | Aktivierung 26 | Aktivierung 29 |
---|---|---|---|---|
Hinweis: Um die anderen Neuronenantworten zu sehen, können Sie die Aktivierungen überprüfen