最后一章内容,主要是OCR的实例,不少都是和经验或者实际应用有关;看完了,总之,有始有终,继续加油!!算法
1、图像识别(店名识别)的步骤:网络
图像文字识别应用所做的事是,从一张给定的图片中识别文字。这比从一份扫描文档中
识别文字要复杂的多。性能
为了完成这样的工做,须要采起以下步骤:
1.文字侦测(Text detection)——将图片上的文字与其余环境对象分离开来
2.字符切分(Character segmentation)——将文字分割成一个个单一的字符
3.字符分类(Character classification)——肯定每个字符是什么 字体
能够用任务流程图来表达这个问题,每一项任务能够由一个单独的小队来负责解决:大数据
2、滑动窗口优化
滑动窗口是一项用来从图像中抽取对象的技术。假使咱们须要在一张图片中识别行人,
首先要作的是用许多固定尺寸的图片来训练一个可以准确识别行人的模型。而后咱们用以前
训练识别行人的模型时所采用的图片尺寸在咱们要进行行人识别的图片上进行剪裁,而后将
剪裁获得的切片交给模型,让模型判断是否为行人,而后在图片上滑动剪裁区域从新进行剪
裁,将新剪裁的切片也交给模型进行判断,如此循环直至将图片所有检测完。spa
一旦完成后,咱们按比例放大剪裁的区域,再以新的尺寸对图片进行剪裁,将新剪裁的
切片按比例缩小至模型所采纳的尺寸,交给模型进行判断,如此循环。3d
滑动窗口技术也被用于文字识别,首先训练模型可以区分字符与非字符,而后,运用滑
动窗口技术识别字符,一旦完成了字符的识别,咱们将识别得出的区域进行一些扩展,而后
将重叠的区域进行合并。接着咱们以宽高比做为过滤条件,过滤掉高度比宽度更大的区域
(认为单词的长度一般比高度要大)。下图中绿色的区域是通过这些步骤后被认为是文字的区域,而红色的区域是被忽略的。component
以上即是文字侦测阶段。 下一步是训练一个模型来完成将文字分割成一个个字符的任
务,须要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。对象
模型训练完后,咱们仍然是使用滑动窗口技术来进行字符识别。
以上即是字符切分阶段。 最后一个阶段是字符分类阶段,利用神经网络、支持向量机
或者逻辑回归算法训练一个分类器便可。
3、获取大量数据和人工合成数据集(这里主要指字母识别中的数据集)的两种方法:
一、没有已有样本:一般有不少字体库,咱们能够采集同一个字符的不一样种类字体,而后将这些字符加上不一样的随机背景。
二、少许已有样本:使用已有的样本,选取一个真实的样本,而后添加将此样本扭曲、旋转(人工变形)的数据,以此来扩大数据集。
注:在决定扩大数据集以前须要考虑的问题:
① 须要先有一个低误差的分类器,若是没有,能够经过增大特征数或者在神经网络中增大隐藏层单元数来解决
② 首先估计增长样本须要的工做量
有关得到更多数据的几种方法:
1.人工数据合成
2.手动收集、标记数据
3.众包
4、上限分析
回到咱们的文字识别应用中,咱们的流程图以下:
流程图中每一部分的输出都是下一部分的输入,上限分析中,咱们选取一部分,手工提
供100%正确的输出结果,而后看应用的总体效果提高了多少。
总结一下上面的意思,即经过人工干预,使某一个component的准确率人工达到100%,再使用这些数据训练,若是这一component的变化致使总体系统的系统变得很好,那么说明这个component值得花时间优化。
反之,咱们将某一component达到100%,系统性能仍没有提高不少,则说明这一component不值得咱们花费精力改进。