Skip to content

SYSU Deep Learning and Edge Intelligence Research Project

Notifications You must be signed in to change notification settings

dengzx7/Captcha_Recognition

Repository files navigation

Captcha Recognition

Deep Learning Research Project (Smart Mobile networking and Computing Lab)
基于Tensorflow框架、AlexNet模型和ResNet模型实现的验证码识别任务

项目概览

本项目按照以下步骤来实现验证码识别,训练50 Epochs后,AlexNet在测试集上的最高预测精度达到了 97.5% ,ResNet在测试集上的最高预测精度达到了 98%

  • 爬取数据 Requests
  • 数据预处理 Preprocess
  • 训练模型与预测 Train

项目环境

  • 编程语言:python 3.6.4
  • 学习框架:tensoflow 1.6.0
  • 操作系统:Windows 10

运行方式

一、爬取数据

注:该步骤在项目中已完成,可以直接跳过该步骤
运行cmd指令,使用python requests爬取SYSU本科教务系统登陆界面的验证码

> python generate_captcha.py

一共将爬取920张图片,其中800张作为训练集,剩余的120张作为测试集,需要手动为这些验证码图片标注label;
Captcha_Recognition/dataset/images 目录下有爬取好的数据集;
Captcha_Recognition/dataset/labels 目录下有对应标注好的标签,labels.txt不区分大小写,labels2.txt区分大小写,在本项目中使用了labels2.txt,下图展示了部分数据集

二、数据预处理

运行cmd指令,执行数据预处理

> python preprocess_captcha.py

执行后将在Captcha_Recognition/dataset目录下生成以下文件夹或文件

  • preprocess
  • segmatation
  • test_file_labels.json
  • train_file_labels.json

预处理验证码图片,包含以下四个步骤

  • 去除干扰线
  • 灰度化和二值化
  • 去噪
  • 图像分割

下图展示了一张原始验证码图片的预处理过程

图像分割过程是将一张包含四个字母或数字的验证码均分成四张图片,每一张分割后的图片包含一个字母或数字,分类模型将对每一张分割后的图片进行训练,测试时先将测试集验证码分割为四张图片,若分割后的四张图片都预测正确,才算预测正确,分割后的部分结果如下图所示

三、训练模型与预测

在Captcha_Recognition/record目录下会生成record.txt文件和predict.txt文件,分别记录训练过程中的损失值loss、训练集精度和测试集精度,当程序结束时会在Captcha_Recognition/model_param目录下保存模型参数

3.1 AlexNet

运行cmd指令,训练AlexNet模型

> python train.py --model alexnet

训练50 Epochs后最终ALexNet模型在测试集上的最高预测精度达到了 97.5%

3.2 ResNet(34-layer)

运行cmd指令,训练ResNet模型

> python train.py --model resnet

训练50 Epochs后最终ALexNet模型在测试集上的最高预测精度达到了 98%

About

SYSU Deep Learning and Edge Intelligence Research Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages