机器学习第十周之照片光学字符识别

一,照片光学字符识别(Photo Optical Character Recognition)

照片光学字符识别是指让计算机读出图片中的文字信息

 

二,照片光学字符识别流水线(Photo OCR Pipeline)

1, 文字区域识别(Text Detection)

2,字符切割(Character Recognition)

3,字符分类(Character Classification)

 

这三个步骤也叫作机器学习流水线

 

二,滑动窗(Sliding Windows)分类器

1,行人检测

图片中每个行人虽然大小不同,但是宽高比是差不多的

训练行人检测的分类器

从图片左上角选定长宽比等于行人大小的矩形,监测是否有行人,检测完然后向右移动Step-Size,移到末尾时,再向下移动Step-Size,再从图片最左端开始

接着放大矩形,维持长宽比不变,读取矩形图片也要压缩成符合的行人训练器大小,如82*36

2,文字检测

我们也像行人检测一样,找到一些含有文字和不含有文字的图片来训练文字检测分类器

 对我们的图片的滑动窗口运行文字分类器,输出一幅是否在该区域检测到文字的灰度图,如果是输出白色,不是黑色,再扩展白色区域的轮廓5-10像素形成文字区域,再抛弃一些长宽比明显不是的文字的区域

再对提取出来的文字区域执行字符检测,训练字符检测分类器,分类器判断是否存在分割线,然后用滑动窗口判断图片是否存在分割线

 

三,人工合成数据和获取数据的成本效益分析

要获得一个比较高效的机器学习系统,其中一个比较可靠的方法就是选择一个低偏差的算法,低偏差的算法需要大量数据,可以通过人工合成已有数据来得到新数据

以之前的照片光学字符识别为例,可以对原有图片更换背景,更换字体,缩放,旋转等等变形

扭曲变形,

声音数据的叠加,把杂音加到原始数据上

人工合成的数据必须是在真实数据中可能出现的,对原始图片增加高斯或者无意义的噪声往往没什么用,当然最后还是以算法的准确值为准

在获取更多的数据之前确保自己的算法是随着数据的增多偏差会降低,可以通过绘制学习曲线来观察

估算自己获得更多数据以提高算法性能的时间,看是否值得,还可以雇人搜集数据

四,上限分析:流水线的哪一部分值得提升

开发机器学习系统的最宝贵的资源是时间,当开发出的机器学习流水线系统不符合你的要求时,接下来该做什么,可以使用上限分析来决策

以图片光学字符识别为例,

1),机器学习流水线的准确率72%

2),当使用100%准确率文字区域检测(Text Dectetion)时的准确率是89%,说明文字区域检测(Text Dectetion)可以提高的上限是89%-72%=17%

3),当使用100%准确率文字区域检测(Text Dectetion)和100%准确率字符分割(Character Segmentation)是90%时,说明字符分割(Character Segmentation)可以提高的上限是90%-89%=1%

4),当使用100%准确率文字区域检测(Text Dectetion),准确率字符分割(Character Segmentation)和字符识别(Charater Recognition)时,准确率当然是100%,字符识别(Charater Recognition)可以提高的上限是100%-90%=10%

由以上可以看出,文字区域检测有最大的提升空间17%

PS:在以上2),3),4)都是通过人工检测出训练数据,得以保证各模块的100%准确率

以下是人脸识别的另一个机器学习流水线的例子

 

posted @     阅读(1204)  评论(0编辑  收藏  举报
编辑推荐:
· 聊一聊 C#线程池 的线程动态注入 (下)
· 如何做好技术经理
· Kafka 的“无锁哲学”:高效消息流动的背后
· 时间轮在 Netty , Kafka 中的设计与实现
· MySQL 优化利器 SHOW PROFILE 的实现原理
阅读排行:
· 《HelloGitHub》第 105 期
· 一句话,我让 AI 帮我做了个 P 图网站!
· Solon v3.0.5 发布!(Spring 生态可以退休了吗?)
· 记一次 .NET某工业视觉软件 崩溃分析
· NetCore开源项目,适合新手学习
点击右上角即可分享
微信分享提示