吴恩达机器学习[19]-应用举例:照片OCR、人工数据合成、上限分析

引入:展示一个复杂机器学习系统是如何背组合起来的;讨论机器学习流水线的相关概念以及如何分配资源来对下一步计划做决定;通过照片OCR的案例展示机器学习的很多有用的想法和概念(如:如何将机器学习算法应用到计算机视觉问题中,人工合成数据)

问题描述与OCR pipeline

照片OCR,即照片光学字符识别(photo Optical Character Recognition)。关注如何让计算机读出图片中的文字信息。它首先扫描图片、照片图片中的文字,然后进行文字识别。
在这里插入图片描述
总之,照片OCR的计算步骤如图。这种系统称为机器学习流水线(Machine learning pipeline)
在这里插入图片描述
具体来说,下图展示照片OCR的流水线,包括三个模块。
如何将问题分为不同的模块,是流水线设计的关键问题。
在这里插入图片描述

滑动窗口 sliding windows

引入:上部分介绍了OCR流水线及其工作原理,下面展示每个独立组件的工作原理。这涉及到滑动窗口分类器(sliding windows classifier)。

照片OCR的第一步为文字识别,即找到文字所在区域。这个问题比较复杂,因为矩形区域具有不同的长宽比。于是我们先从行人检测的问题入手,讲述图片检测特定事物的思路。
在这里插入图片描述
为了建立一个行人检测系统,我们需要先定义行人所在矩形区域的长宽比(如82*36)。
然后收集一些正例、负例样本数据。之后用监督学习算法训练样本,实现图片是否有行人的判断。
在这里插入图片描述

假设有如图的测试集图片,需要从其中找到行人。
于是设置82*36的矩形依次识别出8236的图块,然后传递给分类器用于判断是否有行人。矩形每次移动的长度称为步长(step size)或者滑动参数(slide parameter),比如一次移动一个像素(pixel)则步长为1。
在这里插入图片描述
之后用更大的矩形依次圈出图块,传递给分类器。其中,更大的矩形指的是:识别出更大的图块,再调整为82
36的图片,将调整后的82*36的图片传递给分类器。
在这里插入图片描述

慢慢加大矩形的大小,重复上一过程。最终识别出行人所在位置。
这就是使用**监督学习分类器和滑动窗口分类器(滑动窗口检测器)**实现图片行人检测的原理。
在这里插入图片描述

回到文字检测的例子,它与图片检测的原理类似的,只不过把行人改为文字。
在这里插入图片描述

首先还是使用一个固定比例的滑动窗口,可以得到左下图,白色表示检测出文字的区域,灰色表示分类器预测出可能有文本但概率不高的区域,黑色为未检测到文字的区域。
但我们的需求是在有文字的区域绘制矩形,因此还需要将分类结果(左下)应用到放大算子(expansion operator)上。放大算子将识别出左下图的白色区域,然后扩大这些白色区域。数学上来讲,即检测白色区域的一定范围内是否存在白色像素,有的话便将整个区域都变成白色,得到右下图。然后舍弃掉不符合正常文字区域矩阵长宽比的白色区域(过高过窄)。
这就是使用滑动窗口的文本检测系统
在这里插入图片描述

下面进行流水线的第二步:文字分割。
与文字检测类似,需要使用滑动窗口和监督学习算法进行训练,实现正确字符分割是否的判断,从而得到单个字符的图块。其中,这里使用的是一个一维的滑动窗口。
在这里插入图片描述
总之,这就是图片ORC的过程(最后的字符分类也是使用监督学习)。用到了监督学习算法和滑动窗口算法。
在这里插入图片描述

获取大量数据: 人工数据合成 getting lots of data: Artificial data synthesis

引入:根据经验可知,得到高性能机器学习系统的方法是:使用低偏差的计算和庞大的数据进行训练。但如何获得庞大的数据量呢?这可以通过人工数据合成(Artificial data synthesis)获得。但它不适用于所有的问题,实际使用时需要考虑方法的适用性。

人工数据合成(Artificial data synthesis)包括两种形式,1、从零开始创造新数据。2、已有小的带标签训练集,通过某种方法扩充训练集

首先用字符识别的例子引出人工数据合成。
在这里插入图片描述

假如收集到以下数据(图左),为了简化问题将图片设置为黑白色。那么如何通过已有的数据集获得新的数据集呢?

  • 方法一:从零开始创造数据。用不同的字体生成字符,然后将其粘贴到任意不同的背景中,从而得到图右的数据集。
    在这里插入图片描述

方法二:使用现有的样本生成数据。比如有一张包含"A“的图片,首先用网格线分割它,然后进行人工拉伸(或人工扭曲),从而获得16个新的样本。
在这里插入图片描述

那么人工数据合成在语言识别问题中将如何表现呢?
以语言识别为例,需要识别出语言中包含的单词。假设已有带标签的训练样本,如何扩充数据集呢?可以加入额外的语音失真到数据集(如杂音)。
在这里插入图片描述

引入噪音到数据集,从而合成新的数据是合理的。因为现实中确实会拥有上述包含噪音的数据,此时的加入的噪声需要是典型的
在这里插入图片描述

总之,进行人工数据合成前需要考虑以下问题
在这里插入图片描述

天花板分析:下一步的pipeline Ceiling analysis:What part of the pipeline to work on next

引入:机器学习相关工作从事者最重要的资源是时间,因此合理规划每一步的工作是非常重要的。本部分将讲述上限分析(Ceiling analysis)的内容,它往往能给机器学习工作者提供很有价值的信号,帮助确定工作的重点所在。

下面借助照片OCR的例子,讲解上限分析(Ceiling analysis)。那么哪个模块最需要花最多地时间关注呢,如何分配资源呢?
下面展示上限分析的思路,为了决定如何开发这个系统,有效的办法是:对学习系统使用数值进行评价度量。所以需要首先对系统总体进行度量,然后对每个模块在相连模块完全正确时的准确率(或其他指标),从而得到右下表。此时可以得到每个模块的上升空间,以及每个模块的提升对总体系统的提升有多大影响,从而确定最值得花大量时间提升的模块。
在这里插入图片描述

下面再用一个更复杂的例子-人物识别,来讨论上限分析。图中给出了简化后的人物识别的工作流。
在这里插入图片描述

此时,如何进行上限分析呢?跟之前相似,还是首先对系统总体进行度量,然后对每个模块在相连模块完全正确时的准确率(或其他指标)。从而得到每个模块的上升空间,以及每个模块的提升对总体系统的提升有多大影响(右下表)。
在这里插入图片描述

参考文献
网易 吴恩达机器学习
网易版吴恩达机器学习课程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值