Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

go2coding/tiny-pytorch-captcha-recognition

Open more actions menu

Repository files navigation

改项目是基于 https://github.com/dee1024/pytorch-captcha-recognition

CNN原理

CNN的原理这里就不重点介绍了,需要的可以参考:https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53 等相关的资料。

CNN的模型图:

图片字体识别的过程:

修改

这个项目是基于 https://github.com/dee1024/pytorch-captcha-recognition 的修改,修改的原因:

对于兴冲冲的我,拿到了这个项目,就开始训练数据,跑了两天多的时间,达到的效果并不好,识别准确率仅仅为20%左右。

我想有两个方面的原因:

1.我的计算机太烂了,处理器:i5-3570 3.20GHz,跑数据太慢。

2.我的训练样本太少了。

我想可能也有很多人和我的情况一样,在学完了机器学习的算法后,想跑跑其他的项目,但是机子的性能又不允许。

还有一个原因是这个项目的写法,并不适合初学者,数据的准备和测试不太方便,这里进行了简单的修改。

修改识别的难度:原项目识别4个(数字和字母)。首先,把难度降到最低试试。修改captcha_setting.py 把参数 MAX_CAPTCHA 改为1。

为了在低计算力的地方进行训练,原项目的验证码为四位数,这里改为1位数:(相当于手写数字识别)

先说一下配置:

虚拟机 Ubuntu 20.04 LTS (GNU/Linux 5.4.0-33-generic x86_64)

环境:

  • Python 3.8.2

python 2.7的我也试过,pytorch出现了一大堆的错误,建议不要使用。

到官网,根据自己实际的配置选择,

安装命令就很简单了:

pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

看看准确率高不高

用默认的训练模型,看看测试的结果怎么样。

运行的结果:

python captcha_test.py

测试了200张的图片识别率;: 98.500000 %。

识别错误的图片,这里都标注出来了,可以看到因为数字0和字母o长得太像了,没办法区分开来。

如何学习

  • 生成验证码

    python captcha_gen.py

这个地方有修改过,运行后训练数据生成10w张,测试和预测各生成1000张。

  • 训练模型

    python captcha_train.py

    使用步骤一生成的验证码图集合用CNN模型(在 catcha_cnn_model 中定义)进行训练,训练完成会生成文件 model.pkl

  • 测试模型

    python captcha_test.py

    可以在控制台,看到模型的准确率(如 95%) ,如果准确率较低,回到步骤一,生成更多的图片集合再次训练

可以改变captcha_setting.pyMAX_CAPTCHA的大小,来提高识别的难度。

在MAX_CAPTCHA为3的情况下,10w训练样本是足够的,超过3的话,需要增加训练样本的个数。

其它

About

CNN训练验证码识别模型,适合计算力不大的初学者

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.