您的位置:首页 > 其它

斯坦福机器学习公开课笔记(十五)--[应用]照片OCR技术

2013-06-27 11:29 633 查看
公开课地址:https://class.coursera.org/ml-003/class/index

授课老师:Andrew Ng

1、problem description and pipeline(问题描述和流水线)

OCR是optical character recognition的缩写,翻译过来就是光学字符辨识。照片中的OCR技术其实就是识别中照片中存在的字符,例如下面这幅图:



关于过程,主要有以下几个步骤:



首先是检测文字,找到文字出现的区域,然后是对文字进行划分变成一个个单一的字母,最后是对字母进行识别,附加功能是对识别出来的字母进行拼接,对得到的单词进行拼写检查纠错。也可以用流水线的方式表示:



2、sliding windows(滑动窗口)

滑动窗口是一种从图像中提取出特定物体的技术,上面的文本检测使用的就是滑动窗口技术,这里换一个例子,从图片中检测出行人:



为了检测出行人,首先需要训练一个模型来判断什么是行人,为此可以把标记好的行人的图片和非行人的图片放在一起训练:



训练好了模型,然后再用滑动窗口在图像上面扫描,判断每个扫描区域内是否包含行人:



扫描时需要先指定窗口的大小,一般来说是先指定一个较小的窗口,在图上扫描一遍之后再换一个较大的窗口进行扫描。最终就能把所有的行人扫描出来:



回到最早提出的文本检测,通过滑动窗口扫描后的结果如下:



图中白色区域就是有文字的地方,找出这些区域后,对区域中的文字进行分割,这时依然是采用滑动窗口的方法,只不过这里不再是把字母当成正样本,而是把分割区域当成正样本:



3、getting lots of data:artificial data synthesis(获取大量数据-人工数据合成)

在上一讲中我们知道如果模型的偏差值较小,训练样本越多意味着模型效果越好。不过有时弄到数据不是那么简单的,尤其是大量的数据。如果没有足够的数据来训练,那么就该人工创造出一些数据,例如我们可以把原来正常的图片进行扭曲,就能得到新的数据,如果对于音频,可以增加背景噪声:



要注意的是如果加入无意义的噪声和变换,那对于增加数据是没有帮助的:



下面是关于获取数据一些讨论,例如必须要在偏差较小的前提下,在走入死胡同时可以问问自己如何获得10倍数据,也许会豁然开朗:



4、ceiling analysis:what part of the pipeline to work on next(上限分析)

可以说,机器学习的过程就像一个流水线一样由很多部分组成,显然每个部分都具有一定的误差,为了提高准确率,我们需要知道该对哪个部分进行进一步完善,这时就要用到上限分析方法,该方法依次假设流水线上的某个部分达到完美状态,这样输出的数据将会是完美数据,那下一个部分获取的是没有误差的完美数据,计算这个时候整个系统的准确率:



如上图所示,文本识别中有四个部分组成,我们现在求出针对每个部分优化后的系统准确率,现在的问题是如何提高整个系统的准确率?从表中可以看到,假设我们优化了文本检测这个部分,那么准确率将会从72%增加到89%,如果我们优化字符分割这个部分,准确率只不过从89%提高到90%而已,如果优化了字符识别,准确率从90%提高到100%,相比之下,优化文本检测带来的提升最大,其次是字符识别。这样分析得到的结果就是应该对文本检测和字符识别进行优化。再举一个人脸识别的例子:



可以看到,优化预处理(移去背景)带来的准度率提升最高。

-------------------------------------弱弱的分割线---------------------------------------

这一讲介绍了机器学习在日常生活中的应用-OCR技术,这个技术现在已经很常见了,很多路口识别车辆牌照的系统就是采用这个技术。作为机器学习十周课程的最后一讲,很高兴看到这里回到了具体应用的层面,我觉得这才是机器学习的魅力所在,期待机器学习更美好的未来。感谢Andrew
Ng教授,感谢Coursera
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐