【含课程pdf & 测验答案】吴恩达-机器学习公开课 学习笔记 Week11 Application Example: Photo OCR

11 Application Example: Photo OCR 课程内容

此文为Week11 中Application Example: Photo OCR的部分。

11-1 Photo OCR

Problem Description and Pipeline

照片OCR表示照片光学字符识别(photo optical character recognition)。这种照片OCR技术主要解决的问题是让计算机读出照片中拍到的文字信息。
在这里插入图片描述
首先,给定某张图片,首先我们可以通览图像并找出有文字的图像区域。
接下来要做的就是,通过得到的文字区域的矩形轮廓,我们可以进行字符切分。
最后,在成功将字段分割为 独立的字符后,我们可以运行一个分类器,输入这些可识别的字符,然后试着识别。
在这里插入图片描述
那么像这样的一个系统,我们把它称之为机器学习流水线(machine learning pipeline)。
在这里插入图片描述
这种流水线形式都非常普遍。在流水线中会有多个不同的模块,比如在本例中,我们有文字检测、字符分割和字母识别。其中每个模块都可能是一个机器学习组件,或者有时候这些模块也不一定是机器学习组件,只是一个接一个连在一起的一系列数据,最终得出你希望的结果。

如果你要设计一个机器学习系统,其中你需要作出的最重要的决定就是你要怎样组织好这个流水线。

Sliding Windows

滑动窗(sliding windows)的第一个步骤是文字检测(text detection) 。

文字识别是计算机视觉中的一个非同寻常的问题,因为取决于你想要找到的文字的长度,这些长方形区域会呈现不同的宽高比。
在行人检测中,行人都比较相似,因此可以使用一个固定宽高比的矩形来分离出你希望找到的行人。
在这里插入图片描述
对文字检测的问题,高度和宽度的比值对不同行的文字就是不同的。在行人检测的问题中,行人可能会与相机处于不同的距离位置,因此这些矩形的高度也取决于他们离相机的距离远近,但这个比值应该是一样的。

这一步实际上是一个监督学习,你通过一个图像块然后决定这个图像块里有没有行人。
在这里插入图片描述
首先对这个图像取一小块长方形,将这个图像块通过我们训练得到的分类器来确定这个图像块中是不是有行人。如果没问题的话,我们的分类器应该报告这个图像块 y=0 因为没有行人。
在这里插入图片描述
接下来,我们把这个绿色的长方形图片滑动一点点,然后得到一个新的图像块并同样把它传入我们的分类器,看看这里面有没有行人。
每次滑动窗口的大小是一个参数,通常被称为步长(step size) 有时也称为步幅参数(stride parameter) 。
直到最后你滑动小窗遍历图片中的不同位置,从一开始在第一行滑动,然后到图片中的下面几行,你会逐渐地以某个步长或步幅把这些图像块全部放入你的分类器并运行。
在这里插入图片描述
但这个矩形是非常小的,只能探测到某种尺寸的行人。接下来我们要做的是看看更大的图像块。
“用更大一些的图像块” 的意思是:当你用这样的图像块时,你先取出这个图像块,然后把这张图像块重新压缩到82×36的尺寸。就是取一个大一点的图然后重新把大小调整到小的尺寸,或者说调整到可以传入确定图片中是否有行人的分类器应该使用的尺寸。
在这里插入图片描述
最后,你可以做一个更大的矩形,同样滑动窗口到最后完成整个过程以后,你的算法应该就能检测出图像中是否出现行人了。
在这里插入图片描述
因此整个步骤就是,你先训练一个分类器。然后用一个滑动窗分类器,或者叫滑动窗检测器来找出图像中出现的行人。

对于照片 OCR 流水线中要检测出文字:

先收集一些带标签的训练集,包括正样本和负样本,分别对应文字出现的区域。正样本就表示图像中有文字的那些图片,而负样本表示没有文字图像的图片。
在这里插入图片描述
我们用一个固定的比例来运行滑动窗,用 许多很小的矩形图片来运行矩形窗算法。 白色的区域来表示分类器在原图这一块区域发现了文字,并且不同的灰度就表示分类器给出的输出结果的概率值。
我们取出分类器的输出,然后输入到一个被称为**“展开器”**(expansion operator)的东西。展开器的作用就是:它会取过这张图片,对每一个白色的小点都扩展为一块白色的区域。根据,右边的这张图锁定那些连接部分,也就是这些连续的白色区域,然后围绕着它们画个框就行了。
在这里插入图片描述
找到这些有文字的长方形以后,我们现在就能够剪下这些图像区域,然后应用流水线的后面步骤对文字进行识别。
我们应该怎样分割出图像中的单个字符呢?同样地,我们还是使用一种监督学习算法,用一些正样本和一些负样本。因此我们要做的就是训练一个分类器,可以用神经网络也可以用别的学习算法,来试着对这些正负样本进行分类。
训练好这个分类器以后,我们就要把这个分类器应用到我们文字中,这是文字检测系统的输出。我们要依次向右 滑动矩形窗,每一步都运行分类器。
这就是用于字符分割的一维滑动窗。
在这里插入图片描述
流水线的最后一步是字符分类。可以使用一种标准的监督学习算法,比如神经网络或者其他方法,输入这样的图像,然后将图像按字母分类化为26个字母A到Z中的一个,或者我们也可以有36种字符,如果你算上数字字符的话,这就是一个多元分类问题。
在这里插入图片描述

Getting Lots of Data and Artificial Data

构建一个出色的机器学习系统的最可靠方法之一是:采用 一个低偏差的算法,并在一个庞大的训练集中训练它。

但是你从哪里获得这么多的训练数据呢?机器学习中有一个有趣的想法叫做**“人工数据合成”**,这并不 适用于每个问题。人工合成数据的想法包含两个主要的方面:第一个是我们基本上从头开始创造新的数据,第二个是如果我们已经有了 一个小的带标记的训练集,然后我们设法放大这个训练集,或者把一个小的训练集变成一个更大的训练集。

光学图像识别(ocr)工具中字符识别里,我们想输入图像识别出它是什么字符。可以就从不同字体中选择字符,粘贴在不同的随机背景上,然后也许施加一点模糊操作、变形操作等,会获得一个合成的训练集。这种合成数据,你基本上有无限的带标签数据来创建监督的学习算法以解决字符识别问题。
在这里插入图片描述
另一种主要的人工数据合成方法是,你选一些你现有的例子,然后你创造另外的数据用来扩大你的训练集。向这个字母,这个字符加入人工弯曲或者叫人工扭曲,所以可以把a的图像变成 16个新的例子。
在这里插入图片描述
但在另一个不同但机器学习应用中也许其它的变形会更合理。关于语音识别,向数据集加入语音扭曲,加入一些背景声音,自动生成了这些额外的训练样本。

你加入的变形需要能代表在测试集中可能遇到的变形或者噪声***。加入完全无意义的随机噪声通常是没有用的。
在这里插入图片描述
创造人工训练样本之前最好
确保你真的有一个低偏差的分类器
*,这样有更多训练数据会有用的。标准做法是绘制学习曲线以确保你真的有一个低偏差的分类器。如果你没有,可以试试增加你的分类器所拥有的特征的数量,增加你的网络中的隐藏单元,直到你获得一个低偏差的分类器。
第二个建议是,当面对机器学习问题时,一个我经常问我的团队、我的学生的问题是,得到10倍现在的量的数据需要多少工作。如果有10倍的数据,我觉得你会得到好很多的表现。有好几个获得更多数据的方法。
在这里插入图片描述

Ceiling Analysis: What Part of the Pipeline to Work on Next

上限分析(ceiling analysis)通常能提供一种很有价值的信号或者说很有用的导向,告诉你流水线中的哪个部分最值得你花时间。

文字检测、字符分割、字符识别,这每一个方框都可能需要一个小团队来完成。应该怎样分配资源呢? 为了决定 要开发这个系统应该采取什么样的行动,一个有效的方法是对学习系统使用一个数值评价量度。所以假如我们用字符准确度作为这个量度。
假设整个系统的估计准确率为72%。
下面是上限分析的主要思想:首先我们关注这个机器学习流程中的第一个模块,模拟如果是100% 正确地检测出 图片中的文字信息,准确率提高到89%。然后我们继续进行接着执行流水线中的下一模块,遍历测试样本,人工地给出正确结果。
进行上限分析的 一个好处是,我们现在就知道了如果对每一个模块进行改善,它们各自的上升空间是多大。
在这里插入图片描述
另一种认识这种分析方法的角度是,通过这样的分析,你就能总结出改善每个模块的性能,系统的上升空间是多少,或者说如果其中的某个模块变得绝对完美时,你能得到什么收获。这就像是给系统表现加上了一个提升的上限值。

假如说你想对这张图像进行人脸识别。
在这里插入图片描述
第一步要做的是图像预处理,把背景去掉 。
在这里插入图片描述
下一步我们希望检测出人脸的位置,通常通过一个学习算法来实现,运行一个滑动窗分类器,人脸周围画一个框。继续识别脸上其他重要的部位,比如分割出鼻子、分割出嘴巴,这些都是非常有用的特征。这些特征可以被输入给某个 逻辑回归的分类器,这个分类器的任务就是找出我们认为能辨别出这个人是谁的最终的标签。
在这里插入图片描述
那么对这个流水线怎么进行上限分析呢?我们还是每次关注一个步骤,观察系统准确率的提高。
在这里插入图片描述

测验 Application Example: Photo OCR

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

课程总结

在这里插入图片描述
在这里插入图片描述

课程链接

https://www.coursera.org/learn/machine-learning/home/week/11

课件

课件链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值