一、验证码的作用与类型简介
验证码(Captcha【Completely Automated Public Turing test to tell Computers and Humans Apart】——全自动区分计算机和人类的公开图灵测试),主要用于区别真实用户和机器人,根据其形式和特点,验证码分为以下几种类型:
1、图片验证码——通过图片形式展示的验证码,常见的有数字、字母、汉字、图形等。
2、文字验证码——通过文本形式展示的验证码,需要用户输入指定的文字或数字
3、声音验证码——通过声音形式展示的验证码,需要用户听取验证码并输入
二、Python图像与机器学习算法
在进行图片识别与验证码破解之前,需要使用Python图像处理库和机器算法来实现相关功能。常用的Python图像处理库包括PIL(Python Imaging Library)和OpenCV(Open Source Computer Vision Library),机器学习算法常用的有卷积神经网络CNN(Convolutional Neural Networks)。
三、图片验证码的识别与破解
可以分以下几个步骤进行:
1、图片预处理——导入图片验证码并将其转化为灰度图像,去除噪声的干扰,提高图像质量。
2、分割字符——对预处理后的图像进行字符分割,将每个字符单独提取出来,形成字符图像序列。
3、特征提取——参字符图像序列进行特征提取,常用的方法有灰度直方图、图像边缘、图像梯度等。
4、模型训练与预测——使用机器学习算法(如CNN)对特征进行训练,并预测验证码中每个字符的结果。
5、文本合并与输出——将预测结果进行合并,并输出识别出来的验证码。
四、验证码与图灵测试
验证码的作用是让计算机区分人类和计算机,图灵测试则是让人区分人和计算机,与验证码作用刚好相反。
五、卷积——主要目的就是对图像进行降维以及特征提取
数学中卷积,主要是为了诸如信号处理、求两个随机变量和的分布等而定义的运算。数学中的“卷积核”都是已知的或是给定的。 卷积神经网络中“卷积”,是为了提取图像的特征,其实只借鉴了“加权求和”的特点。卷积神经网络中“卷积核”本来就是trainable的参数,不是给定的,根据数据训练学习的!
六、卷积核
往往是行数和列数均为奇数的矩阵,这样中心较好定位
卷积核无此的总和体现出输出的亮度,若元素总和为1,卷积后的图像与原图像亮度基本一致。若元素总和为0,则卷积后的图像基本上是黑色,其中较亮的部分往往就是提取出图像的某种特征。
七、卷积的模式:Full、Same、Valid——中间橙色部分是图像数据

八、卷积层的深度【卷积核的个数】——一个卷积层通常包含多个尺寸一致的卷积核【可以通过上下左右翻转得到】
九、激活函数ReLU=max(0,x)
优点:计算速度快,ReLU函数只有线性关系,比Sigmoid和Tanh要快很多;输入为正数的时候,不存在梯度消失问题
缺点:强制性把负值置为0,可能丢掉一些特征;当输入为负数时,权重无法更新,导致“神经元死亡”(学习率不要太大)
激活函数改进(一)Parametric RelU,=αx(当x<0时),=x(当x>=0时)
说明:①当α=0.01时,称作Leaky ReLU②当α从高斯分布中随机产生时,称为Randomized ReLU(RReLU)
PReLU优点:①比sigmoid/tanh收潋快②解决了ReLU的“神经死亡”问题
PReLU缺点:需要再学习一个参数α,工作量变大
激活函数改进(二)ELU,=α(ex-1)(当x<0时),=x(当x>=0时)
ELU优点:①处理含有噪声的数据有优势②更容易收潋
ELU缺点:计算时较大,收潋速度较慢
十、CNN在卷积层首选ReLU,尽量不要使用Sigmoid和Tanh【使用Sigmoid和Tanh,将导致梯度消失】,并且使用较小的学习率,防止神经元死亡。如果ReLU失效,考虑使用Leaky ReLU、PReLU、ELU或者Maxout,此时一般情况都可以解决。
十一、特征图
浅层卷积层:提取的是图像基本特征,如边缘、方向和纹理等特征
深层卷积层:提取的是图像高阶特征,出现了高层语义模式,如“车轮”、“人脸”等特征
十二、池化层
池池化操作使用某位置相邻输出的总体统计特征作为该位置 的输出,常用最大池化(max-pooling) ,池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步幅以及池化类型。
池化的作用:
①减少网络中的参数计算量,从而遏制过拟合
②增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微 小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/ 平均值)
③帮助我们获得不因尺寸而改变的等效图片表征。这非常有用,因为 这样我们就可以探测到图片里的物体,不管它在哪个位置
十三、全连接层
①对卷积层和池化层输出的特征图(二维)进行降维
②将学到的特征表示映射到样本标记空间的作用
十四、输出层
①对于分类问题,使用SoftMax函数
②对于 回归问题,使用线性函数
十五、验证码识别过程
【输入图片】→【卷积+池化、……、卷积+池化】→【全连接层】→【Softmax层】
输入层 隐藏层 输出层