应用示例:图像文字识别

Problem Description and Pipeline

在图像文字识别应用中,我们希望从给定的图片中识别图中的文字,如:

应用示例:图像文字识别_第1张图片

为了实现图像文字识别,常采取如下步骤:

  • 文字检测(text detection)
  • 字符切割(character segmentation)
  • 字符分类(character classification)

应用示例:图像文字识别_第2张图片

应用示例:图像文字识别_第3张图片

滑动窗口(Sliding Windows)

滑动窗口是一项用来从图像中抽取对象的技术。

应用示例:图像文字识别_第4张图片

应用示例:图像文字识别_第5张图片

滑动窗口技术也被用于文字识别,首先训练模型能够区分字符与非字符,然后运用滑动窗口技术识别字符,一旦完成了字符的识别,我们将识别出的区域进行扩展,然后将重叠区域合并。

第一步为文本检测:

应用示例:图像文字识别_第6张图片

下一步为字符切割:

应用示例:图像文字识别_第7张图片

最后一步为字符分类,利用神经网络、支持向量机或逻辑回归训练分类器即可。

Getting Lots of Data and Artificial Data

如果我们的模型出现欠拟合问题,那么利用更多的数据训练模型是能得到更好的效果。然而,我们如何获取数据呢?

以文字识别为例,我们可以从字体网站上下载各种字体,然后利用这些不同的字体配上各种不同的随机背景图片,人为地构建训练数据。

另一种方法为,利用已有的数据对其进行修改,如:扭曲、旋转和模糊处理等。

获得更多数据的几种常用方法为:

  • 人工数据合成
  • 手动收集、标记数据
  • 众包
Ceiling Analysis:What Part of the Pipeline to Work on Next

在机器学习的应用中,我们通常需要通过几个步骤才能进行最终的预测,那么我们如何能够知道那一部分最值得我们花时间和精力去优化呢?因此,我们引入上线分析法。

我们仍以文字识别为例,其流程图如下:

现假设文字识别的正确率为72%,如果我们令文本检测(Text detection)部分的正确率为100%,则发现整个模型的正确率提升至89%;如果我们令字符切割(Character segmentation)部分的正确率为100%,则发现整个模型的正确率提升至73%;如果我们令字符识别(Character recognition)部分的正确率为100%,则发现整个模型的正确率提升至82%。

应用示例:图像文字识别_第8张图片

从中我们可以得出结论,优化文本检测和字符识别对整个模型的正确率提升较大,这两部分是值得我们花费时间和精力优化的。


Coursera版Andrew NG的机器学习课程到此结束,课程编程练习源码及相关资料,可访问本人的Github。最后,感谢Ryan Cheung以及其它乐于分享的网友!

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