工夫可过得真快,本周小Mi的更新便是咱们机器学习系列的最初一期啦!说了那么多实践,总该来点案例对不对!废话不多说,让咱们开始吧~
定义
那么什么是图片文字辨认呢?其实对应的英文全称为Photo Optical Character Recognition,也能够翻译为图片光学字符识别。
随着智能手机拍照性能的成熟,OCR技术重视的是如何让计算机读取图片中的文字信息,从而不便当前的主动查找,而不是从成千上万的照片中用鼠标一张张照片点开查问,再一一敞开(是不是想想都头大呢)。当然啦,从一张给定的图片中辨认文字必定比从一份扫描文档中辨认文字要简单的多。
操作流程
依照咱们失常的了解,图片文字辨认的话通常会先将图像扫描一遍,而后找出图片中的文字信息,并重点关注这些文字区域,同时对区域中的文字进行辨认,当正确读出这些文字当前,将这些文字内容显示并记录下来。听起来如同很简略,毕竟光学文字辨认对于扫描文档来说,曾经是一个比较简单的问题了,然而对于罕用的图片、照片来说,还算是一个较难的机器学习问题。
因而,实现图片OCR技术须要采取如下步骤:
1.文字探测(Text detection)——扫描图像并找出有文字的图像区域,将图片上的文字与其余环境对象拆散开来;
2.字符切分(Character segmentation)——进行文字拆散,将文字宰割成一个个繁多的字符;
3.字符分类(Character classification)——确定每一个字符是什么。
流程图也可能十分直观地表白这个学习问题,每一项工作都能够独自拆解开来进行解决:
如果胜利解决了这样的问题,不仅能够帮忙计算机更好地了解图像中的内容,还能够做一些更有意义的事件,比方能够为盲人提供一种相机,该相机能够辨认出盲人后面的各种潜在危险路障。
滑动窗口
滑动窗口是一项用来从图像中抽取对象的技术。倘若咱们须要在一张图片中辨认行人,首先要做的是用许多固定尺寸的图片来训练一个可能精确辨认行人的模型。而后用之前训练辨认行人的模型时所采纳的图片尺寸在咱们要进行行人辨认的图片上进行剪裁,将剪裁失去的局部交给模型,让模型判断是否为行人,继而一直地在图片上滑动剪裁区域从新进行剪裁,同样将新剪裁的局部交给模型进行判断,如此循环直至将图片全副检测完。
一旦实现后,按比例放大剪裁的区域,再以新的尺寸对图片进行剪裁,将新剪裁的局部按比例放大至模型所驳回的尺寸,交给模型进行判断,如此循环。
滑动窗口技术也被用于文字辨认,首先训练模型可能辨别字符与非字符,而后使用滑动窗口技术辨认字符,一旦实现了字符的辨认,咱们将辨认得出的区域进行一些扩大,而后将重叠的区域进行合并。接着便能够以宽高比作为过滤条件,过滤掉高度比宽度更大的区域(默认单词的长度通常比高度要大)。下图中绿色的区域是通过这些步骤后被认为是文字的区域,而红色的区域是被疏忽的。
下一步是训练一个模型来实现将文字宰割成一个个字符的工作,须要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。
模型训练完后,咱们依然是应用滑动窗口技术来进行字符识别。
最初一个阶段是字符分类阶段,利用神经网络、反对向量机或者逻辑回归算法训练一个分类器即可。
数据获取
如果咱们的模型是低方差的,那么取得更多的数据用于训练模型是可能有更好的成果的。问题在于,怎么取得更多的数据,可能还须要人工地发明一些数据。
以文字辨认利用为例,能够从字体网站下载各种字体,而后利用这些不同的字体配上各种不同的随机背景图片发明出一些用于训练的实例,这将会帮忙大家取得一个无限大的训练集。
同时,还能够利用已有的数据对其进行批改,例如将已有的字符图片进行一些扭曲、旋转、含糊解决。只有理论数据和通过解决后的数据仍旧类似,那么便能够发明大量的数据。
因而,取得更多数据能够通过如下形式:
1.人工数据合成
2.手动收集、标记数据
3.众包
部分剖析
在机器学习的利用中,通常须要通过几个步骤能力进行最终的预测,那么如何晓得哪一部分是最值得咱们花精力去欠缺的呢?
大家能够跟着小Mi再仔细观察一下文字辨认利用的流程图:
流程图中每一部分的输入都是下一部分的输出,选取某一部分手动提供100%正确的输入后果,而后看最终的整体成果晋升了多少。(倘若总体成果为72%的正确率)
令Text detection局部输入的后果100%正确,发现零碎的总体成果从72%进步到了89%。这就意味着须要在Text detection局部多花些功夫啦。
接着手动抉择数据,使得Character segmentation局部输入的后果100%正确,发现零碎的总体成果最终只晋升了1%,也就是说Character segmentation局部曾经足够好啦。
同样Character recognition也是这样的测验办法啦~输入后果100%正确,零碎的总体成果又晋升了10%,示意欠缺Character recognition局部能够使得整体零碎有较大的晋升。
尽管整个系列小Mi只在最初介绍了机器学习相干的一个案例,然而曾经足够能够展示一个简单的机器学习零碎是如何被组合起来的,同时也介绍了机器学习操作流程的无关概念以及如何分配资源来以作出更好的决定,心愿能够帮忙到大家学习如何本人开发一个简单的机器学习利用呦。
好啦,相聚总会有离别的时候,却仍旧期待着下次的美妙相遇,小Mi还记着当初跟大家的约定,后续肯定会带来更多的学习系列!
PS:再次感激吴恩达老师!通过观看老师的视频,小Mi也从新对机器学习有了更多更深的了解,感激大佬!!!
好啦,咱们,下个系列,再见呦!(挥手24h,太舍不得啦~)