下你所需,载你所想!
汇集开发技术源码资料

深度学习的图片验证码的解决方案支持99%验证码

:525.551KB :1 :2019-12-24 11:53:55

部分简介

该项目基于 TensorFlow 1.14 开发,旨在帮助中小企业或个人用户快速构建图像分类模型并投入生产环境使用,降低技术应用门槛。

面向算法工程师:提供了可拓展的结构支持,允许通过源码灵活方便的添加自己设计的网络结构及其他组件。

面向零基础用户:有需求?但是不会编程?时间就是金钱,学习成本太高我想白嫖。它简直为你而生!

面向需求频繁者:同样的类型的需求一天10个,它的复用程度让您无需一份代码一个需求,一套服务全部搞定。

其使用的网络结构主要包含三部分,从下至上依次为:


输入OP: input , 输出OP: dense_decoded

卷积层:从输入图像中提取特征序列;

循环层,预测从卷积层获取的特征序列的标签(真实值)分布;

转录层,把从循环层获取的标签分布通过去重整合等操作转换成最终的识别结果;

1. 可视化模型配置

为每个图像分类任务创建一个独立的项目,每个项目拥有完全独立的管理空间,方便多任务切换和管理。全程无需修改一行代码,根据模板生成模型配置,生成的配置文件可直接用模型部署服务。

本项目对应的部署服务支持同时部署多套模型,模型支持热拔插,版本迭代等,业务层可拓展颜色提取,算术运算等常见的验证码解决方案。

2. 特性
1.目前支持Windows平台的GPU编译版,无需安装环境,0基础建模。
2.项目化管理,适合容易被任务优先级安排的程序员们,同一份代码,不同的项目,随心切换,互不干扰。
3.新增样本集无需重新打包,可直接增量添加新的样本集,每个训练任务支持加载多个TFRecords文件。
4.解除循环层依赖的必须性,支持CNN5/ResNet50/DenseNet+CrossEntropy的怀旧组合模式。
5.提供智能建议性配置功能,选择样本源路径时可根据样本特性自动推荐字符集,设置尺寸,标签数等。
6.支持不定宽[-1, HEIGHT]的网络输入,在样本尺寸多样的场景下自动按比例缩放。
7.支持训练中的数据增广,如:指定范围的二值化/模糊/旋转/椒盐噪声等。

采集标注样本

笔者这个项目的初衷其实是爬虫遭遇各种验证码,验证码无处不在且需求堆积如山,由此,懒诞生了创造力。

图像分类问题,以验证码为例,用深度学习来解决无非就是训练标注样本。那么样本从何而来?这就是建模流程的第一步。

采集样本: 一般可以通过抓包得到对方网站的接口请求及参数,通过构造请求采集样本。

标注样本: 标注渠道是有一定讲究的,一般采用多个渠道组合,因为现在大多是机器识别,导致保存过滤下来的正确样本可能存在特征缺失,举个例子,这个渠道把所有的b都识别成a,为了避免这种情况建议通过多个渠道组合采集样本,以此保证图片特征的覆盖率。

验证样本:如何提交验证?比如如何从登录页面中获取样本,其实大多时候后端设计都会为了避免过多恶意的数据库访问而先验证验证码的准确性,例如可以提交明显错误的信息,输入不存在的用户名,将对方网站返回的“用户名不存在”作为验证码正确性的判断条件,当验证码错误时如返回“验证码错误”,则验证样本的流程便成立了。

打包样本

本框架喂数据只接收从TFRecords中读取,也就是样本需要先打包成TFRecords文件格式,样本打包的源目录路径关联的参数为:
SourcePath:
Training: {SourceTrainPath}
Validation: {SourceValidationPath}

打包完的TFRecords文件的路径关联的参数为:
DatasetPath:
Training: {DatasetTrainsPath}
Validation: {DatasetValidationPath}

项目配置好之后 ,可通过两种方法进行打包

?make_dataset.py 打包

运行python make_dataset.py 项目名 方式打包,则需要加启动参数指定训练项目,请确保 projects/项目名 路径下存放各个项目的 model.yaml 配置文件。

?app.py训练:

在界面中选择欲使用的网络结构,输入项目名并[回车]或者点击空白处 创建一个新项目 或者 选择一个已有的项目 ,通过 [Browse] 选择训练集路径 后,点击 [Make Dataset] 开始打包 ,中途若终止进程文件将损坏,需要手动至项目路径中删除其未打包完成的样本集,[Validation Path] 可以不选,如若不选,系统将根据 [Validation Set Num] 配置的参数自动分配该数量的验证集,


注意:手动配置训练集的时候请保证验证集的随机性以及特征覆盖率,如若不明笔者所语,请勿手动配置

2.3 设置训练配置

使用app.py运行的界面化配置生成器在选择样本源的时候会自动进行基本的配置如:[Resize],[Size],[Label Num] 等。至于 [Label Num] 只在使用CrossEntropy为损失函数时有效。

Resize的使用

因为网络为多标签而设计,卷积层的输出 outputs 经过了以下变换:
Reshape([label_num, int(outputs_shape[1] / label_num)])

深度学习的图片验证码的解决方案支持99%验证码

热门推荐

相关文章