小黑黑讲AI,AI实战项目《验证码识别》
本readme主要介绍了如下内容:
1)《验证码识别》项目的背景。
2)如何搭建项目的运行环境。
3)如何使用项目中的各个工具。
希望帮助大家快速且充分的了解这个AI实战项目。
1.这个项目讲什么
该实战项目的教学目标是,让同学们深入学习卷积神经网络算法和Pytorch深度学习框架,进而使用这些算法技术,解决实际的工程问题。
该项目的教学视频,一共包括10个小节:
从项目的背景与环境搭建开始讲起,接着讲解数据生成、小批量数据读取、CNN网络的设计、训练和测试。GPU加速模型训练,工程、模型与数据等各方面的优化方法。
想要观看视频讲解的小伙伴,可以关注我的B站账号:小黑黑讲AI
只要同学们有一定的Python程序设计基础,都能通过这个项目,快速熟悉深度学习算法,并学会使用Pytorch框架,训练深度学习模型。
2.验证码识别的背景
目前,验证码已经成为各种网站和应用程序的标准安全措施,通过让用户输入验证码,可以阻止机器程序的恶意行为。
通过验证码可以,阻止爬虫抓取数据、用户批量注册,或者是刷单购票等行为。不过在某些情境下,如网站的压力测试,我们需要自动化的识别验证码。
整体来说,我们会开发一个基于深度学习的验证码识别系统,其中重点是设计并训练卷积神经网络模型:
来专门识别某一种特定形态的验证码。
在目前的互联网环境中,有多种完全不同的验证码形态。
主要包括包括如下几种类型,分别是字符型验证码、文字型验证码、图片型验证码等等:
不同形态的验证码,需要使用不同的技术解决。
例如,最简单的是字符型验证码,一般在一个图片中,会包括4-6位的数字与字母的组合。
为了增加识别难度,网站会对字符进行扭曲和旋转,并在字符的周围设置线条或点等干扰因素。
在本项目中,就是要讨论“字符型验证码”的识别方法。
验证码识别,可能涉及图片分类、目标检测、OCR光学字符识别,等等计算机视觉的相关算法:
对于字符型验证码识别,主要会使用到图片分类技术。
3.项目代码、搭建和运行
在代码中,主要包括两个部分:
第1部分是完整的工程代码,包括5个python文件和1个配置文件。
第2部分是10节课程的随堂代码,保存在lesson文件夹中。
打开lesson文件夹,会看到代码按照每节课程的标题来组织:
每个文件都可以单独运行,在使用时,可以参考视频对应的使用。
为了运行这个工程,需要构建工程的运行环境:
这里使用conda命令行,安装pytorch的GPU版本,安装命令可以从官网中复制。
安装pytorch后,继续安装captcha,用于生成验证码图片。
完成依赖的安装后,继续运行一下这个工程。
工程的使用方法非常简单,首先打开config.json,其中包括了关键的配置参数:
这里直接使用默认的配置运行。
简单来说,在默认配置中,会生成2000个训练数据和1000个测试数据。
验证码字符为1位的数字字符,迭代200轮。更细节的内容可以参考教学视频。
使用generate.py生成训练和测试数据:
生成的验证码数量和形式,都是基于config.json配置的。
运行generate.py后,会发现在当前目录中,生成了data文件夹,其中train-digit文件夹中的是训练数据,test-digit中的是测试数据。
使用train.py训练模型:
运行train.py后,会看到模型的迭代。完成迭代后,会在当前目录生成model文件夹。
其中captcha.1digit.2k是最终的训练模型,每10轮训练,都会保存一个check模型。
使用test.py测试模型:
运行test.py后,会使用test-digit中的测试数据,测试训练生成的模型。
这里可以看到,1000个测试数据,968个数据识别正确,正确率是0.968。
更详细的讲解,请小伙伴们,关注我的B站账号“小黑黑讲AI”,其中有详细的讲解这个实战工程中的每个细节。
有任何问题,也可以关注我的公众号“小黑黑讲AI”咨询。