本节介绍开发一个机器学习系统的具体例子,系统模块化后的性能分析及提升
介绍这部分内容的原因:
1、学习复杂的机器学习系统的如何组成
2、介绍机器学习流水线、资源分配、下一步的决策
3、机器学习的新理念
18.1 Problem Description and Pipeline
OCR流水线、复杂机器学习系统的模块化。
18.2 Sliding Windows
1、我们先来看行人检测:
滑动窗口检测:每次滑动多少?(1像素太慢 一般4像素or8像素)
窗口仅含人的部分?(逐渐放大窗口再遍历滑动)
2、每个分出来的小图片都扔到分类器中检测是否有行人:(分类器如何得到?)
3、我们把很可能是文字的区域高亮,较可能为灰色,否则为黑色。然后利用“扩张”使得高亮变大,之后利用高宽比过滤一些高亮区域,在最终留下的高亮区域画框。
4、以上是文字检测部分,接下来将进行文字分割:
利用分类器,滑动窗口进行分割。
最后可以利用神经网络、逻辑回归等等方法为基础的分类器进行字符识别。
18.3 Getting Lots of Data and Artificial Data
如何获取大量数据?从何种渠道?
1、人工合成数据:(首先前提是一个低偏差的分类器)
- 从网站上下载各种字体并搭配不同的背景;
- 对已有字体进行扭曲、旋转、模糊等等处理。
语音识别的样例扩充:增加各种噪声
注意:我们要知道加哪些噪声是有用的
2、手动标记/Crowd source
3、注意事项:
首先(可通过学习曲线)明确低偏差分类器;
其次要知道获得大量数据会花费的时间。
18.4 Ceiling Analysis:What Part of the Pipeline to Work on Next
之前我们把机器学习系统分为几个模块,如何知道哪一模块值得花时间和精力去改善呢?
通过ceiling 分析,每个模块的改进对系统性能的提升多大来决定。