【项目10】python+flask搭建CNN在线识别手写中文网站

使用python+flask搭建的一个网站,然后从网页的写字板上获取鼠标手写的汉字经过转码后传回后台,并经过图片裁剪处理之后传入CNN手写中文识别的模型中进行识别,最后通过PIL将识别结果生成图片,最后异步回传给web端进行识别结果展示。中文总共50,000多汉字,常用的有3,755个。这里主要对常见的3755个汉字进行识别。
在这里插入图片描述
一、数据集
目前国内有很多优秀的中文手写识别数据集。例如:北京邮电大学模式识别实验室发布的数据(HCL2000),它是目前最大的脱机手写汉字库,共有1,000个人书写,除了汉字样本库外,还有一个对应的书写者信息库,记录了书写者的年龄、职业、文化程度等信息,用于研究相关影响因素。目前此数据库免费向研究者公开。本文使用的是中科院自动研究所的分享的中文手写数据集CASIA-HWDB(下载地址http://www.nlpr.ia.ac.cn/databases/handwriting/Home.html ),由187个人通过Wacom笔在线输入的手写汉字。

二、CNN结构:
用tensorflow库来实现【三个卷积层+三个池化层+两个全连接层】的卷积神经网络,结构如下图所示:

在这里插入图片描述

训练图片都修整成64x64大小,这里我只训练常见的3755个汉字,在CNN识别数字的模型结构上再添加了一个卷积层和池化层,其他结构差不多。

 将下载好的HWDB数据集解压处理好开始训练,这个训练过程比较长,我最终在GPU:GTX1050Ti上迭代了12,000次花费几个小时,最终取最可能的前三个预测值

三、加载模型
我训练模型迭代了12,000次之后,将训练参数保存在checkpoint文件夹中,不过因为单个文件大小的限制,训练好的模型文件从百度云上下载:
链接: https://pan.baidu.com/s/145R3lTMnl_3EALR6FQF4hg
提取码: 71n2

下载之后直接覆盖checkpoint文件夹。

四、环境
python 3.6.1;
flask 0.12.2;
tensorflow 1.3.0;
pillow 4.2.1;
pickleshare 0.7.4;
numpy 1.13.1;

五、运行
1、克隆项目,然后按照环境要求安装好相应的库(使用pip安装);
2、从百度云下载训练好的模型文件,放到相应的checkpoint文件夹下;
3、使用python run.py运行;
4、打开本地浏览器输入localhost:5000进行查看;

获取源码方式
微信扫码关注“AI与机器学习”,
后台回复:手写中文识别,即可获得源码。
在这里插入图片描述

往期精彩回顾

强烈推荐|【AI系列文章推送一】什么是人工智能?
强烈推荐|【AI系列文章推送二】关于人工智能见解之入门篇
【ML算法】常见的机器学习算法归类汇总
【ML算法】时序归整(DTW)算法的前世今生
【ML算法】随机森林算法的总结(一)
【ML算法】随机森林算法的总结(二)
【ML算法】随机森林算法的总结(三)
【AI项目】机器学习之视频行为识别(第一式)
【AI项目】机器学习之视频行为识别(第二式)
【AI项目】基于双流递归神经网络的人体骨架行为识别
【深度学习】图网络——悄然兴起的深度学习新浪潮
【计算机视觉】四大基本任务
【AI资讯】人工智能、机器学习和大数据领域覆盖最全的一份速查表

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DTW(Dynamic Time Warping)是一种用于比较两个时间序列相似性的算法,可以应用于语音识别识别等领域。在孤立字识别中,我们可以将每个孤立字的声音序列作为一个时间序列,利用DTW算法进行比较。 下面是一个用MATLAB实现DTW孤立字识别的简单步骤: 1.准备数据集 首先,需要准备一组包含多个孤立字的语音数据集。每个孤立字需要用一个独立的音频文件表示,并且每个文件应该是等长的。在这里,我们以数字0-9为例,每个数字的音频文件命名为“digit_0.wav”到“digit_9.wav”。 2.特征提取 对于每个数字的音频文件,我们需要提取一些特征来表示它。在这里,我们可以使用MFCC(Mel-frequency cepstral coefficients)来提取语音特征。MATLAB中有许多库可以实现MFCC的计算,如Voicebox和Auditory Toolbox等。 3.计算距离矩阵 对于每个数字的MFCC特征,我们可以计算一个距离矩阵,表示该数字与其他数字之间的距离。在这里,我们可以使用欧几里得距离或曼哈顿距离来计算距离。 4.计算DTW路径 使用DTW算法,我们可以计算两个数字之间的最优路径,即最小化它们之间的距离。MATLAB中有许多库可以实现DTW算法,如DTW库。 5.分类器训练 最后,我们可以使用训练集来训练一个分类器,例如KNN、SVM等,来对新的数字进行分类。 这是一个简单的流程,你可以参考这个流程进行实现,当然也可以根据自己的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值