吴恩达机器学习笔记之照片OCR

问题描述:

照片光学识别(Photo Optical Character Recognition),一般有如下几个步骤:

1.文字侦测(Text detection):将图片上的文字与其他环境对象分离开来。

2.字符划分(Character segementation):将文字分割成一个个单个的字符。

3.字符分类(Character classification):确定每一个字符是什么。

上面一个流程我们称之为机器学习流水线(Machine Learning pipeline),流水线中的每个模块可以交给不同的人或者团队去设计,也可以全部由一个人设计。

滑动窗口:

滑动窗口(Slides Windows)是一项用来从图像中抽取对象的技术。是计算机视觉中网络输入的一种重要的方法。

我们首先训练一个能识别字符的模型,然后用滑动窗口的方法对图片进行文字侦测,当我们侦测完之后,对识别区域进行一些拓展,然后将重叠的区域进行合并。

吴恩达机器学习笔记之照片OCR_第1张图片

经过处理之后得到如下所示的图片,绿色的区域被认为是文字区域,红色的区域是被忽略的:

吴恩达机器学习笔记之照片OCR_第2张图片

在进行文字侦测阶段之后,下一步是训练模型将文字分割成一个个字符,首先训练一个可以识别是否需要将字符分割的模型,之后仍然使用滑动窗口技术来进行字符切分,在完成字符切分之后,最后一个阶段是字符识别,利用神经网络、支持向量机、或者逻辑回归训练一个分类算法即可。

获取大量数据和人工数据:

人工数据合成(artificial data synthesis)

如果我们的数据是低偏差的,那么我们可以用更多的数据来训练模型,从而让模型达到一个更好的效果,但问题在于我们怎样获得更多的数据呢,下面有几种方法:

1.人工数据合成

2.手动收集、标记数据

3.众包(其实就是花钱找别人做数据)

在面对一个新的机器学习的问题时候,经常问自己一个问题:拥有现在数据的10倍数据需要花费多少努力。

天花板分析:下一步工作的pipeline:

在机器学习的应用中,我们通常需要通过几个步骤才能进行最终的预测,我们如何能够知道哪一部分最值得我们花时间和精力去改善呢?这个问题可以通过上限分析来回答。
回到我们的文字识别应用中,我们的流程图如下:

流程图中每一部分的输出都是下一部分的输入,上限分析中,我们选取一部分,手工提供 100%正确的输出结果,然后看应用的整体效果提升了多少。假使我们的例子中总体效果为 72%的正确率。
如果我们令文字侦测部分输出的结果 100%正确,发现系统的总体效果从 72%提高到了89%。这意味着我们很可能会希望投入时间精力来提高我们的文字侦测部分。
接着我们手动选择数据,让字符切分输出的结果 100%正确,发现系统的总体效果只提升了 1%,这意味着,我们的字符切分部分可能已经足够好了。
最后我们手工选择数据,让字符分类输出的结果 100%正确,系统的总体效果又提升了10%,这意味着我们可能也会应该投入更多的时间和精力来提高应用的总体表现。

总体来说,对于一个新的机器学习的应用,我们第一步做的是将系统的每个过程弄清楚,然后对每个流程都人为的提供100%正确的输出结果,看它对系统整体的性能影响,在对所有流程都这样做完之后,我们就可以知道哪个流程最值得我们花时间来提高它的性能,从而更好的提高整体系统的性能。

你可能感兴趣的:(机器学习笔记)