• 第5章 验证码识别


            验证码CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)是全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机还是人的公共全自动程序。设计的初衷是防止恶意破解密码、刷票、论坛灌水,实际上用验证码是现在很多网站通行的方式。验证码的基本假设是,由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。攻防是相生相伴的,针对验证码出现了大量的破解技术。

            常见的数字型验证码变种多样,比如某招聘网站验证码,字母周围有噪点,字体扭曲。某电商网站验证码,不同样式,字母阴影,字母粘连,背景色干扰。某社交网站,主体干扰线,背景色干扰,背景字母干扰,字体扭曲,字母粘连。

            本章主要以MNIST数据集为例介绍识别数字型验证码,介绍验证码识别使用的特征提取方法,包括一维向量、二维向量、使用的模型以及对应的验证结果,包括K近邻、支持向量机和深度学习。

    5.1 数据集

           验证码识别使用的数据集为MNIST数据集,MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片。该数据集也包含每一张图片对应的标签,告诉我们这个是数字几。数据集包含60000个图片训练数据集和10000个图片测试数据集。每一个MNIST数据单元由两部分组成:一张包含手写数字的图片和一个对应的标签。每一张图片包含28*28个像素点,可以把这个数组展开成一个一维向量,长度是28*28=784。

            文件读取方式为:

    1. import pickle
    2. import gzip
    3. def load_data():
    4. with gzip.open('./mnist.pkl.gz') as fp:
    5. training_data, valid_data, test_data = pickle.load(fp)
    6. return training_data, valid_data, test_data

    5.2 特征提取

    1.一维向量

            这也是MNIST默认的特征提供方式,将28*28的图片转换成了长度为784的一维向量:

    1. import tflearn.datasets.mnist as mnist
    2. X, Y, testX, testY = mnist.load_data(one_hot=True)

    2.二维向量

            为了适应特定模型,需要将原本的一维向量转换回原有的28*28的二维向量,具体方法使用数组的reshape函数即可:

    1. import tflearn.datasets.mnist as mnist
    2. X, Y, testX, testY = mnist.load_data(one_hot=True)
    3. X = X.reshape([-1, 28, 28, 1])
    4. testX = testX.reshape([-1, 28, 28, 1])

    5.3 模型训练与验证

    5.3.1 K近邻算法  

            使用K近邻算法,特征提取使用一维向量。

    (1)读取MNIST数据集数据。

    (2)按照文件划分为训练集和测试集。

    (3)使用K近邻算法在训练集上训练,获得模型数据。

    (4)使用模型数据在测试集上进行预测。

    (5)验证K近邻算法,特征提取方式使用一维向量,其中邻居数量n_neighbors设置为15。

    5.3.2 支持向量机算法

    5.3.3 深度学习算法之MLP

    5.3.4 深度学习算法之CNN

  • 相关阅读:
    Java语言知识大盘点(期末总复习)二
    LabVIEW使用Deskto pExecution Trace工具包
    如何实现快速的批量抓取拼多多商品数据?(包含价格销量详情等)
    linux的网络服务之DHCP
    Nacos 安装与部署
    【数据结构练习】二叉树相关oj题集锦三
    解决Android TextView 一行未完全显示就换行问题
    1.8 监督学习应用
    cad图片怎么转换成pdf格式
    javascript 原生操作子 cookie 的工具类
  • 原文地址:https://blog.csdn.net/lieslyang/article/details/127130121