请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 注册

QQ登录

只需一步,快速开始

第六章 手写识别 — 创建一个邮政分拣办公室,可以识别手写的邮政编码

时间:2018-09-01 阅读:2466 回复:0
本帖最后由 GaleaWong 于 2018-9-1 16:06 编辑

第六章手写识别 — 创建一个邮政分拣办公室,可以识别手写的邮政编码

6.1 邮局分拣


课程活动:创建一个邮政分拣办公室,可以识别手写的邮政编码
信封。

课程目标:教电脑辨认手写文字。
•学习计算机如何被训练来识别笔迹
•了解如何使用“光学字符识别”自动化任务,如识别邮政编码的信件

话题:光学字符识别,手写识别,图像分类,监督学习


在这个项目里你会制作一个进行文字分类的软件。这软件要会进行信件分类,这样才能进入当地的分拣邮局。
用邮件编码来分信件下一个目的地是一个好方法,你应该使用它
你要训练系统识别不同的手写邮编,然后进行信件分类


手写识别
1994年,美国BellSouth公司和IBM联手推出了世界上第一台触屏手机Simon PDA手机时,人们控制手机的方式不只有按键了,可以拿着触屏笔在屏幕上书写短信,收发邮件了。
在触屏上书写文字的过程就是手写识别。

Important:
主要模块介绍
模块
类别
功能


数据
积木中要求输入的参数(包括数字、字符串、下拉列表等)。而完成一个相对复杂的程序,需要存储、访问、修改数据才能完成一个特定任务。Scratch中使用变量和链表来管理数据。
变量还分为局部变量和全局变量,新建变量的时候,系统会询问变量的范围,适用于所有角色的即全局变量,适用于当前角色的即局部变量。





外观
角色有时候需要控制大小或者隐藏,比如游戏开始时的说明文字放大显示,游戏开始后把说明文字隐藏等。
角色的放大或缩小使用积木将角色的大小设定为或将角色的大小增加为。前者的参数是一个百分比,100则是原始大小,后者根据角色当前的大小进行调整。显示/隐藏角色使用积木显示或隐藏


6.2 教学
训练系统


点击“+Add a new project”按钮,创建一个项目名为“Mailman Max”,识别内容为“images”图像的项目




点击“Train”训练按钮进入训练页面,点击file:///C:\Users\Administrator\AppData\Local\Temp\ksohtml\wps5C0A.tmp.jpg,添加名为“Oxford”牛津的标签


点击“Oxford”牛津标签下的,打开一个手写画板,这里有3个工具,“Draw”写,“Erase”擦除和“Reset”清除。
这里我们选择“Draw”写,在空白处写上“OX”,“OX”是牛津地区邮编的开头,尽量使用整个空白处,如图所示。
点击添加这张图像


为这个标签重复写10个“OX


按照同样的操作,为项目添加2个标签“Gulidford”吉尔福德和“Southampton”南安普顿,为“Gulidford”吉尔福德画出10个“GU”例子,为“Southampton”南安普顿画出10个“SO”例子




返回“项目页”,点击“Learn & Test”训练与测试按钮,点击“Train new machine learning model”训练一个机器学期模型按钮,进行生成模型


当系统训练完成后,会有一个测试框可供测试,这里可供3个图像素材上传方式
1.是通过网络摄像头来拍摄测试图像
2.通过画笔自己画出测试图像
3.通过网络图片地址测试图像
每次输入内容,下方都会有系统的判别,并有置信度数值查看
到目前为止你做了什么?
你已经开始训练电脑来识别手写牛津、吉尔福德或南安普顿地区邮政编码的图片。
你通过收集你写出来自己完成的。这些例子被用来训练机器学习的“模型”。
手写识别能够使用户按照最自然、最方便的输入方式进行文字输入,易学易用,可取代键盘或者鼠标。
计算机将从你绘制的每个示例的形状中学习模式。这将被用来识别邮政编码,我们将写在信封上进行排序。


返回“项目页”点击“Scratch”按钮再点击“Open in Scratch”进入我们的Scratch编程界面


这时更多模块处会出现你机器学习模型生成的5个积木块,每个积木块与“智能教室”项目含义一致。
如果你给文本内容,它将根据你给计算机的培训返回“Oxford”牛津、“Gulidford”吉尔福德、“Southampton”南安普顿三个标签之一


Scratch的“Project templates”项目模板中选取我们这堂课要学习的项目——邮局分拣“Mailman Max


Scratch导入项目后,选择“数据”按钮,点击“新建变量”并创建一个名为“answer”答案的变量,该变量适用于所有角色


取消前的选项框,使其不再舞台上显示。
点击“letter,“letter”信件的“造型”内有15个造型


程序大致思路:当点击绿旗时,“letter”信件角色隐藏回到坐标x0y70的位置,并将大小设定为100%,抽取15个造型中的一个,显示出来。
达到随机抽取信件的功能


程序大致思路:当“letter”信件角色被点击时,广播“start sending”。
当接收到广播“start sending”,角色移动到x30y70的位置,并将大小设定为30%
达到投信件的功能


程序大致思路:接收到广播“sorted”时,执行判断,如果电脑判断这个回答是属于“Oxford牛津地区的话,将“letter”信件角色移动到x-170y-60的为位置,“Guildford吉尔福德地区和“Southampton南安普顿地区
达到信件分类和信件派送到正确地点的功能


点击“postcode邮政编码


与“letter”信件角色编程思想一样
程序大致思路:当点击绿旗时,“postcode邮政编码角色隐藏回到坐标x-95y20的位置,并将大小设定为23%,显示出来


下面的脚本使计算机尝试并识别在信封上写的邮政编码


将手写的邮政编码与信封的其余部分一起,送到邮车上,送到正确的地区邮局


选择“造型”,使用线宽滑滑块,这样我们可以写一条粗黑线



用画笔工具写一个邮政编码的前两个字母。
填满空间,就像你练习的例子一样。
你也应该看到它出现在信封的正确位置
为了识别准确,这里需要“造型”的背景是要白色
Ps
每次更换邮编,如果点击了“清除”或使用“橡皮擦”都需要重新使用白色的“油漆桶”



点击绿色旗子开始程序,点击舞台上的信件,此时信件会缩小
电脑会试图识别你写的邮编
一旦电脑有了答案,就会移动到相对应地区的小车上,这里移动的地区是“Southampton”南安普顿地区
我们项目也基本完成了!

你已经训练了一个机器学习模型,能够进行笔迹识别。这简称为“光学字符识别”或“OCR”。
你通过收集笔迹的例子来训练计算机,使之能够识别它。
你建立了一个简单而简单的例子,只使用前两个字母为三个邮政编码区域。
想象一下,在国家的每个邮政编码区域做同样的事情。你必须创造更多的训练桶来覆盖全国邮政编码地区。你需要收集数以千计的训练样本,有很多不同的人的笔迹,这样电脑就能很好地识别它们。
这就是邮政分拣如何在现实生活中分类信件的方法

创意与延伸
既然你已经完成了,为什么不尝试一下其他的想法呢?


试试别人的手写字迹
你已经训练系统能够识别你的手写字迹,但你能不能是它识别别人的字迹
找个朋友来测试它,看看能不能工作
如果没有,你需要得到一些他们的写作例子来添加你的训练数据。你能得到更多的训练实例,电脑就能更好地识别各种笔迹


试试更多的邮编
我们只给了前两个字母,使计算机更容易
我们项目里用的都是网站作者的所在地——英国的邮编
但是我们怎样才能让它认识到像“广州:510000、东莞:523000、深圳518000”这样的中国邮政编码呢
如果你收集了各种不同的实际完整邮政编码(不只是前两个字母)的训练实例,你应该能够训练它来识别它们。这可能需要超过10个例子

快速回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

反馈意见:296755806@qq.com

客服电话:13232932772

关注我们
登录 发布 快速回复 返回顶部 返回列表