基于Python使用SVM识别简单的字符验证码的完整代码开源分享

关键字:Python,SVM,字符验证码,机器学习,验证码识别

1   概述

基于Python使用SVM识别简单的验证字符串的完整代码开源分享。

因为目前有了更厉害的新技术来解决这类问题了,但是本文作为初级入门方法,还是具有一定的学习意义的,所以就将源码和相关的素材开源出来。

本文虽然已经不具备太强的实战性和迁移性,但是主要希望能够是以一个有趣的应用点来让对机器学习有兴趣的同学找到入门点。

上面提到的 “更厉害的新技术” 是指 “CNN 卷积神经网络”,这个工具基本上免去了本文介绍的繁杂的图片预处理工作, 而且通用性更强,换一种验证模式,基本上不需要修改任何代码,就可以训练出想要的模型。 但是这部分入门门槛会稍微高一些,后续有机会,会逐渐开一个专题来讲此类高级方法。

总之,最后会有一个结论:传统的字符验证码是完全没有防御自动化的能力了。

输入图片:

输出字符串:

6937

2   详细原理

完整的识别的源码项目:

https://github.com/zhengwh/captcha-svm

代码有些丑,但是结合原理文档,应该还算是比较清晰的。

关于原理文档请参考博客:

《字符型图片验证码识别完整过程及Python实现》

http://www.cnblogs.com/beer/p/5672678.htm

效果:可以对简单的可分割的验证码达到99%以上的识别率。

3   代码环境

  • python 3.5
  • libSVM 自己到官网下载安装
  • ubuntu 16.4或者mac-os下都能正常搭建和运行
  • 其它的依赖关系没有特别要求,缺啥就装啥

4   数据解释

  • origin 原始数据集。
  • bin_clear 二值化且去噪后的图片集。

因为数据包比较大,就不放上来了

  • demo-6937 以6937为例子进行的图像处理效果展示
  • cut_pic 把处理后的图片切割成单位字符后,再进行分类标记的结果值
  • svm_train 和svm训练相关的文件
    • train_pix_feature_xy.txt 用于做训练的SVM特征文件
    • last_test_pix_xy_8.txt 用于做简单检测的SVM特征文件(为了图简单,只包含数字8的特征)
    • svm_model_file 训练完成后保存的模型文件

5   代码解释

  • lib 直接从libSVM官网下载的py库文件,可以使用python调用相应的 .so文件
  • cfg.py 一些全局配置文件
  • img_tools.py 图像素材的预处理工具和库文件
  • svm_features.py 将图像进行特征化的相应工具
  • svm_train.py 对特征文件进行训练和测试,并保存模型
  • predict.py 训练完成后,将整个流程串起来的工具流

6   方案思路

整个学习的过程,主体数据处理部分是一个不断的把信息降维处理的过程。

以图片 6987 为例子:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

实战 | BERT fine-tune 终极实践教程

AI科技评论按:从 11 月初开始,google-research 就陆续开源了 BERT 的各个版本。google 此次开源的 BERT 是通过 tensor...

5605
来自专栏人工智能的秘密

用机器学习来预测天气Part 1

  本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度。该...

4049
来自专栏小詹同学

人脸识别(二)——训练分类器

这是关于人脸的第②篇原创!(源码在第三篇) 上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 ...

5639
来自专栏SDNLAB

SDN应用路由算法实现工具之Networkx

SDN(Software Defined Networking)是一种新型的网络架构,通过集中式的控制平面管理数据层面的转发等操作。网络的连通性是最基础的需求,...

3419
来自专栏石瞳禅的互联网实验室

【TensorFlow实战——笔记】第1章:TensorFlow基础

TensorFlow是Google公司开源的分布式机器学习框架。它的前身是DistBelief,在Google大规模内部使用。TensorFlow最早由Goog...

1291
来自专栏大数据文摘

目标检测必须要OpenCV?10行Python代码也能实现,亲测好用!

本文作者和他的团队构建了一个名为ImageAI 的Python库,集成了现今流行的深度学习框架和计算机视觉库。本文将手把手教你构建自己的第一个目标检测应用,而且...

1916
来自专栏机器学习算法工程师

史上最详细的XGBoost实战(上)

作者:章华燕 编辑:祝鑫泉 零 环境介绍: · Python版本:3.6.2 · 操作系统:Windows · 集成开发环境:PyCharm 一 安装Pyt...

6474
来自专栏AI研习社

使用 SKIL 和 YOLO 构建产品级目标检测系统

在本文中,我们采用最新的神经网络实现目标检测,使用SKIL平台构建产品级目标检测系统。

1391
来自专栏AI研习社

让 TensorFlow 估算器的推断提速百倍,我是怎么做到的?

TensorFlow 估算器提供了一套中阶 API 用于编写、训练与使用机器学习模型,尤其是深度学习模型。在这篇博文中,我们描述了如何通过使用异步执行来避免每次...

1282
来自专栏大数据挖掘DT机器学习

R语言关联规则可视化:扩展包arulesViz的介绍

关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules。然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则。...

5418

扫码关注云+社区

领取腾讯云代金券