版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(3573)
>
虫友互识
(430)
>
导师招生
(232)
>
休闲灌水
(164)
>
文献求助
(136)
>
招聘信息布告栏
(106)
>
考博
(104)
>
博后之家
(33)
>
硕博家园
(30)
>
基金申请
(24)
>
论文投稿
(19)
>
考研
(16)
>
外文书籍求助
(15)
>
论文道贺祈福
(14)
>
公派出国
(14)
>
绿色求助(高悬赏)
(11)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
MATLAB/Mathematica
»
基于Mathematica神经网络的验证码识别
1
1/1
返回列表
查看: 1048 | 回复: 0
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
hazheng
捐助贵宾
(著名写手)
应助: 0
(幼儿园)
金币: 252
散金: 38
红花: 9
帖子: 1967
在线: 46.9小时
虫号: 3782527
注册: 2015-04-02
专业: 光学
[交流]
基于Mathematica神经网络的验证码识别
人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。现代神经网络是一种非线性统计性数据建模工具,神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。
目前存在很多成熟的神经网络框架,比如Tensorflow、PyTorch、Keras、MXNet还有百度的paddle,matlab也有相对应的工具箱,而作为同是“3m”之一的Mathematica自然也是不甘于落后,于2016年引入相关的接口,并在2020年进行了主要的更新,本文假定读者已经拥有了深度学习的基础知识,将利用mathematica软件提供的接口来解决一类简单的验证码识别任务,以此来引导读者对mathematica的深度学习工具有一个大致的了解,希望能对大家有所启发。
数据集准备
目前许多网站的人机识别机制还是如下图的验证码形式,本体是由26个字母和10个数字组合而成再加以随机变换和噪声干扰的四个字符图片。这种人机验证的方式较为常用,在爬虫时我们可能经常遇到这种验证码,除了使用专业打码平台提供的接口外,我们也可以尝试自己构造人工神经网络来解决。
考虑到带标签数据集的获取难度,我们可以直接利用Python的CAPTCHA库来直接生成验证码的数据集,这里总共生成了60000张图片作为这次训练和测试的数据,每张图片的分辨率为140*80并同时导出了图片对应的正确标签。
有了数据集后我们需要在mathematica里导入数据集并进行相应处理,首先将60000数据集55200训练集和4800测试集,为了方便没有引入验证集,并将这些数据按找数据和标签一一对应,这里采用的方法是分别识别一张图片的四个字符,但是为了简化过程没有对图片进行分割,这将会极大的影响识别的效果。同时值得注意的是在mathematica里同时导入所有数据将占用很大的内存空间。我们需要利用File函数来制作生成器函数,这样可以极大的节约资源。我们处理好的数据集如下图所示。
构建卷积神经网络并训练
在处理好数据集后,我们可以着手神经网络的构建,mathematica的神经网络是动态图结构,可以用Netchain和Netgraph方便的添加网络层以及实现层与层之间的连接,与keras框架十分相似,图片识别任务一般使用卷积神经网络就能有很好的效果,我们可以照搬已有的网络架构例如VGG等,这种架构有着很好的性能,这里我使用的是改动后的架构,如下图所示,加入了批归一化和drop层来防止梯度爆炸和过拟合。最后训练采用的损失函数是分类任务常用的交叉信息熵和softmax,训练优化方法是“adam”,batchsize是32,训练在笔记本的GPU上进行的,可以直接设置Nettrain里的TargetDevice->GPU。
结果分析
原本设置的是训练所有是数据60轮,但考虑到时间成本在第3轮时就停止了训练,用测试集检验结果发现有87.4的准确率,部分结果如下图所示。在训练完成后我们可以将模型导出成wlnet文件保存。我们从结果可以发现主要的识别错误发生在一些难以区分的字符数字,比如0和‘o’、1和’I’,而另一方面我们并没有对数据进行字符分割,这也是降低准确率的原因之一,除此之外我们还能加大训练次数和动态调节学习率参数,这样增加时间成本也能带来准确率的提升。总而言之这也算是一个相对不错的结果,通过这个例子我们能够了解mathematica在深度学习领域的能力,对于熟悉wolfram语言的工作者,使用wolfram提供的深度学习接口来完成一些任务似乎也是一个不错的选择,希望这个例子能给大家一些启发。
最后,有相关需求,欢迎通过微信公众号联系我们。
微信公众号:320科技工作室。
回复此楼
» 猜你喜欢
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
高级回复
1楼
2021-04-05 10:50:38
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
hazheng
的主题更新
1
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定