Il s'agit d'une implémentation réelle de CNN sur Python 3, Keras et TensorFlow. Nous travaillons en 2 étapes principales en utilisant Preprocess.py
qui crée des images de chiffres sans artefact qui sont ensuite transmises au modèle CNN dans train.py
qui entraîne et enregistre le modèle CNN.
Ce solveur captcha a été développé pour être utilisé et est actuellement utilisé dans metu-NTE-scraper pour contourner la protection captcha du portail étudiant de METU pour les contrôles de capacité des cours https://student.metu.edu.tr/. Mais vous pouvez l'utiliser dans votre application avec des étapes simples expliquées dans Comment l'utiliser ? section.
J'ai formé un CNN à l'aide de TensorFlow pour classer les images de chiffres captcha après l'extraction des chiffres. Le modèle se compose de 2 couches convolutives et de couches de pooling suivies d'une couche entièrement connectée. J'ai formé le modèle sur un ensemble de données de 10 000 images captcha qui ont ensuite été divisées en images à 60 000 chiffres et j'ai obtenu une précision de test de 99,94 % sur un ensemble de tests d'imagerie à 12 000 chiffres.
La précision de l’entraînement et du test du modèle est :
Remarque : Certaines images des réponses des neurones d'activation peuvent être vues sous les 4 étapes du prétraitement.
predict.py
dans votre programme Python : Import predict
predict_captcha
en utilisant le chemin de fichier de l'image captcha comme seul argument pour prédire le captcha filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
Pour vous aider à comprendre l'extracteur de chiffres et le modèle, nous montrons leurs étapes visualisées pour vous.
Le Preprocess.py
fonctionne en 4 étapes pour créer des images de chiffres qui sont présentées ci-dessous avec les activations du modèle à la fin
Dans la première étape, nous effaçons les artefacts des images captcha collectées à l'aide de SampleCollecter.py
Image originale | Après la suppression des artefacts |
---|---|
Plus tard, l'image sans artefact est découpée pour délimiter les chiffres du captcha.
Après la suppression des artefacts | Coupé |
---|---|
La moyenne K pondérée est utilisée pour trouver les centres de chaque chiffre
Coupé | Centres de gravité |
---|---|
Enfin, nous créons des images de chiffres en utilisant les centroïdes trouvés à partir des k-moyennes
Centres de gravité | Chiffres |
---|---|
Une fois les chiffres extraits. Le modèle CNN est utilisé pour prédire les images captcha. Voici les neurones d'activation générés pour la dernière couche convolutive du CNN. Ces images ont été créées en extrayant la sortie de la dernière couche convolutive et en la visualisant sous forme d'image. Les images d'activation ci-dessous montrent la réponse de certains des filtres dans la dernière couche convolutive d'images à 2 chiffres.
Chiffre extrait | activation 10 | activation 18 | activation 26 | activation 29 |
---|---|---|---|---|
Remarque : Pour voir les autres réponses des neurones, vous pouvez vérifier les activations