- Image Captcha Recognition API 🖼️
Este projeto consiste no treinamento de um modelo de rede neural convolucional (CNN) para reconhecer e classificar caracteres em imagens de captcha.
As imagens de captcha são carregadas e pré-processadas da seguinte maneira:
- As imagens são carregadas do caminho especificado no DataFrame.
- Cada imagem é redimensionada para uma altura e largura padrão de 200x50 pixels.
- Os valores dos pixels são normalizados para o intervalo [0, 1].
As soluções de cada captcha são preparadas da seguinte forma:
- Cada solução (texto) é convertida em uma lista de caracteres.
- Um conjunto único de caracteres é criado para determinar o número de classes.
- Cada caractere é mapeado para um número inteiro usando um dicionário.
O conjunto de dados é dividido em conjuntos de treinamento e teste usando uma proporção de 80/20.
O modelo de reconhecimento de captcha utiliza uma arquitetura de rede neural convolucional (CNN) seguida por camadas de redes neurais recorrentes (RNN). Aqui está a descrição da arquitetura:
-
Camadas Convolucionais: O modelo começa com duas camadas convolucionais, cada uma seguida por uma camada de max pooling. A primeira camada convolucional tem 32 filtros e a segunda tem 64 filtros. Ambas as camadas usam a função de ativação ReLU para introduzir não linearidade.
-
Camada de Reshaping: Após as camadas convolucionais, os mapas de características são remodelados para uma forma adequada antes de serem passados para as camadas RNN. Isso é feito para garantir que as dimensões dos dados de entrada sejam compatíveis com as expectativas das camadas RNN subsequentes.
-
Camadas LSTM Bidirecionais: Em seguida, duas camadas bidirecionais de Long Short-Term Memory (LSTM) são empilhadas. A camada LSTM inicial tem 128 unidades, seguida por uma camada LSTM com 64 unidades. Ambas as camadas têm dropout aplicado para evitar o overfitting.
-
Camada de Saída: A saída das camadas LSTM é passada para uma camada densa com ativação softmax para realizar a classificação dos caracteres. O número de unidades na camada de saída é determinado pelo número de classes de caracteres presentes nos dados de treinamento, mais uma unidade adicional para lidar com os espaços em branco (utilizados para o mecanismo de previsão CTC).
O modelo é treinado usando o algoritmo de otimização Adam e a função de perda Connectionist Temporal Classification (CTC). Aqui estão os detalhes do treinamento:
- Número de épocas: 100
- Tamanho do lote: None
Após o treinamento, o modelo é avaliado usando o conjunto de teste e as métricas de perda e precisão são registradas.
A precisão do modelo no conjunto de teste é registrada como Test accuracy: 0.9903846153846154 ou seja 99% de precisão.
Este é um exemplo básico de API desenvolvida usando FastAPI para reconhecimento de captchas. Ela utiliza um modelo treinado para prever a solução de captchas fornecidos como imagens.
Certifique-se de ter Python 3.10.9 instalado em seu sistema.
python==3.10.9
git clone https://github.com/joaopalmeidao/ml_captcha_image.git
cd ml_captcha_image
pip install -r requirements.txt
uvicorn module.server.wsgi:app --reload --port 8000 --host 0.0.0.0
http://localhost:8000/docs