Esta é uma implementação real da CNN em Python 3, Keras e TensorFlow. Trabalhamos em 2 etapas principais usando Preprocess.py
, que cria imagens de dígitos sem artefatos que são posteriormente alimentadas no modelo CNN em train.py
que treina e salva o modelo CNN.
Este solucionador de captcha foi desenvolvido para ser usado e atualmente está sendo usado no metu-NTE-scraper para contornar a proteção captcha do portal do aluno do METU para verificações de capacidade do curso https://student.metu.edu.tr/. Mas você pode usá-lo em seu aplicativo com etapas simples explicadas em Como usá-lo? seção.
Treinei uma CNN usando TensorFlow para classificar imagens de dígitos captcha após extração de dígitos. O modelo consiste em 2 camadas convolucionais e camadas de pooling seguidas por uma camada totalmente conectada. Treinei o modelo em um conjunto de dados de 10.000 imagens captcha que mais tarde foi dividido em imagens de 60.000 dígitos e alcancei uma precisão de teste de 99,94% em um conjunto de teste img de 12.000 dígitos.
A precisão do treinamento e do teste do modelo é:
Nota: Algumas das imagens das respostas dos neurônios de ativação podem ser vistas abaixo das 4 etapas do pré-processamento
predict.py
para o seu programa python: Import predict
predict_captcha
usando o caminho do arquivo da imagem captcha como o único argumento para prever o captcha filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
Para ajudar na compreensão do extrator de dígitos e do modelo mostramos os passos visualizados para você
O Preprocess.py
funciona em 4 etapas para criar imagens de dígitos que são mostradas abaixo com as ativações do modelo no final
Na primeira etapa, limpamos os artefatos das imagens captcha que foram coletadas usando SampleCollecter.py
Imagem Original | Após a remoção do artefato |
---|---|
Mais tarde, a imagem sem artefato é cortada para limitar os dígitos do captcha
Após a remoção do artefato | Cortado |
---|---|
As médias K ponderadas são usadas para encontrar os centros de cada dígito
Cortado | Centróides |
---|---|
Por último, criamos imagens de dígitos usando os centróides encontrados em k-means
Centróides | Dígitos |
---|---|
Depois que os dígitos forem extraídos. O modelo CNN é usado para prever as imagens captcha. Aqui são gerados neurônios de ativação para a última camada convolucional da CNN. Essas imagens foram criadas extraindo a saída da última camada convolucional e visualizando-a como uma imagem. As imagens de ativação abaixo mostram a resposta de alguns dos filtros na última camada convolucional de imagens de 2 dígitos.
Dígito Extraído | ativação 10 | ativação 18 | ativação 26 | ativação 29 |
---|---|---|---|---|
Nota: Para ver as outras respostas dos neurônios, você pode verificar as ativações