【手写识别计算器】项目总结和介绍

一 、项目的总体思路

 

        小组实现了一个基于手写识别的计算工具。其基本功能如下:

        ①实现多个数字的手写识别

        ②实现加减乘除符号的识别

        ③输出手写识别的应用程序

        起初,微软的工程师为我们提供了Mnist数据集和单个手写数字的窗体程序。尽管如此,小组仍面临着一些挑战。一是多个数字的分割识别,另一个是运算符号的识别(因为原数据及相关开源网站的资源都难尽人意)。对于第一个难点,从微软工程师那学习了分割算法的大致思路后,组员结合已有的图像处理知识,编写了相关函数。对于第二个难点,团队成员做了一个头脑风暴,整理出了两种方案:

    ①由于没有很多的字符数据集,所以另辟蹊径,使用了工程师们提供的在线训练模型的平台。(https://www.customvision.ai/projects)这个平台中,所训练的数据集无需很多,且能够简单地下载获取离线模型。

        ②利用tensorflow中的例程 mnist.py ,手工绘制运算符图片,编程扩充数据集,然后转换成符合 mnist.py 要求的数据集进行训练,得到一个可以识别数字和运算符的 model ,然后直接对分割后的图像进行识别。

 

二 、项目的时间进度

         第一周周四:开始项目,小组组员挑选合适的课题并从软件工程师那里得到相关建议。

         第一周周六:成功实现了图像分割算法,并能输入模型得到较为满意的识别结果。

        第一周周日:小组成员并行地开展工作:一方面,用简单的数据集在云平台上反复训练,并取得了较为理想的训练效果。另一方面,将手工绘制的图像按照要求格式并入mnist数据集,改进原有的模型。

        第二周周一:增加表达式的后续处理算法。两种模型都能较好地完成任务。

 

三 、过程中遇到的困难

方案一:

①并未找到 api 的 confidence index 接口,只能得到概率最大的tag;

②模型对部分字符识别率偏低,存在过拟合和欠拟合的问题,需要反复训练。

方案二:

①mnist数据集的解析和扩充有一定的难度;

②数据集的大小难以控制。原有的mnist数据集中包括了上万个数字,故而运算符数据也需要有一个合适的量。此外,数据集并非随机收取到的,降低了模型的普适性。

 

四、 数据集处理代码

①从28*28的图片生成mnist数据集:

【手写识别计算器】项目总结和介绍_第1张图片

②用来还原生成的mnist数据集

【手写识别计算器】项目总结和介绍_第2张图片

 

五 、项目的成果展示

(见附录)

 

六、AI工具的反馈

①模型的预测概率对外是不可见的,难以通过设置阈值增加程序的鲁棒性。

②mnist训练模型需要的数据集庞大,给扩充带来了一定的困难。

 

七 、项目总结

①利用开源api可以实现功能丰富的应用程序。

②在处理大量数据时,要有备份数据的习惯。

③在生成大量数据时,要先写几个测试一下看看是否可用,避免生成大量不可用的数据。

(附:解决方案访问https://github.com/Handwrite/Handwrite_caculator)

④小组得分评价:(岳锴:21,耿子钢:20,袁靖松:19)

【手写识别计算器】项目总结和介绍_第3张图片

【手写识别计算器】项目总结和介绍_第4张图片

你可能感兴趣的:(【手写识别计算器】项目总结和介绍)