Ini adalah implementasi CNN di kehidupan nyata pada Python 3, Keras, dan TensorFlow. Kami bekerja dalam 2 langkah utama menggunakan Preprocess.py
yang membuat gambar digit tanpa artifak yang kemudian dimasukkan ke model CNN di train.py
yang melatih dan menyimpan model CNN.
Pemecah captcha ini dikembangkan untuk digunakan dan saat ini digunakan di metu-NTE-scraper untuk melewati perlindungan captcha portal siswa METU untuk pemeriksaan kapasitas kursus https://student.metu.edu.tr/. Namun Anda dapat menggunakannya di aplikasi Anda dengan langkah sederhana yang dijelaskan di Bagaimana cara menggunakannya? bagian.
Saya melatih CNN menggunakan TensorFlow untuk mengklasifikasikan gambar digit captcha setelah ekstraksi digit. Model terdiri dari 2 lapisan konvolusional dan lapisan penyatuan diikuti oleh lapisan yang terhubung sepenuhnya. Saya melatih model pada kumpulan data 10.000 gambar captcha yang kemudian dibagi menjadi 60.000 digit gambar dan mencapai akurasi pengujian 99,94% pada kumpulan pengujian img 12.000 digit.
Melatih dan menguji akurasi model adalah:
Catatan: Beberapa gambar respon aktivasi neuron dapat dilihat pada 4 langkah Preprocess berikut ini
predict.py
ke program python Anda: Import predict
predict_captcha
menggunakan jalur file gambar captcha sebagai satu-satunya argumen untuk memprediksi captcha filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
Untuk membantu memahami ekstraktor digit dan modelnya, kami menunjukkan visualisasi langkah-langkahnya untuk Anda
Preprocess.py
bekerja dalam 4 langkah untuk membuat gambar digit yang ditunjukkan di bawah ini dengan aktivasi model di bagian akhir
Pada langkah pertama kami menghapus artefak gambar captcha yang dikumpulkan menggunakan SampleCollecter.py
Gambar Asli | Setelah artefak dihapus |
---|---|
Nantinya, gambar tanpa artifak tersebut dipotong untuk mengikat digit captcha
Setelah artefak dihapus | Terpotong |
---|---|
K-means tertimbang digunakan untuk mencari pusat setiap digit
Terpotong | sentroid |
---|---|
Terakhir kami membuat gambar digit menggunakan centroid yang ditemukan dari k-means
sentroid | angka |
---|---|
Setelah digitnya diekstraksi. Model CNN digunakan untuk memprediksi gambar captcha. Berikut adalah neuron aktivasi yang dihasilkan untuk lapisan konvolusional terakhir CNN. Gambar-gambar ini dibuat dengan mengekstraksi keluaran dari lapisan konvolusional terakhir dan memvisualisasikannya sebagai gambar. Gambar aktivasi di bawah menunjukkan respons beberapa filter di lapisan konvolusional terakhir dari gambar 2 digit.
Digit yang Diekstraksi | aktivasi 10 | aktivasi 18 | aktivasi 26 | aktivasi 29 |
---|---|---|---|---|
Catatan: Untuk melihat respon neuron lainnya Anda dapat memeriksa aktivasi