Problem Description and Pipeline
在图像文字识别应用中,我们希望从给定的图片中识别图中的文字,如:
为了实现图像文字识别,常采取如下步骤:
- 文字检测(text detection)
- 字符切割(character segmentation)
- 字符分类(character classification)
滑动窗口(Sliding Windows)
滑动窗口是一项用来从图像中抽取对象的技术。
滑动窗口技术也被用于文字识别,首先训练模型能够区分字符与非字符,然后运用滑动窗口技术识别字符,一旦完成了字符的识别,我们将识别出的区域进行扩展,然后将重叠区域合并。
第一步为文本检测:
下一步为字符切割:
最后一步为字符分类,利用神经网络、支持向量机或逻辑回归训练分类器即可。
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%。
从中我们可以得出结论,优化文本检测和字符识别对整个模型的正确率提升较大,这两部分是值得我们花费时间和精力优化的。
Coursera版Andrew NG的机器学习课程到此结束,课程编程练习源码及相关资料,可访问本人的Github。最后,感谢Ryan Cheung以及其它乐于分享的网友!