文章目录

  • 第16章:应用实例:图片文字识别
  • 16.1 流水线
  • 16.2 滑动窗口
  • 16.3 获取大量数据和人工数据
  • 16.4 上限分析


第16章:应用实例:图片文字识别

16.1 流水线

在设计机器学习项目的时候,通常会制定一条流水线(数据预处理、特征提取…之类),根据流水线完成项目。

在完成项目的时候,通常对其精确率进行优化,可采取上限分析(Ceiling analysis),分析最有可能提高精确率的地方。

深度学习文字识别可以什么模型 文字识别算法原理_文字识别


为了识别一张图片中的文字,需要采取如下步骤:

  • 文字侦测(Text detection)——将图片上的文字与其他环境对象分离开来
  • 字符分割(Character segmentation)——将文字分割成一个个单一的字符
  • 字符分类(Character classification)——确定每一个字符是什么

如下图所示,为OCR(光学字符识别)的流水线:

深度学习文字识别可以什么模型 文字识别算法原理_滑动窗口_02

16.2 滑动窗口

滑动窗口是一项用来从图像中抽取对象的技术。假使我们需要在一张图片中识别行人,首先要做的是用许多固定尺寸的图片来训练一个能够准确识别行人的模型。然后我们用之前训练识别行人的模型时所采用的图片尺寸在我们要进行行人识别的图片上进行剪裁,然后将剪裁得到的切片交给模型,让模型判断是否为行人,然后在图片上滑动剪裁区域重新进行剪裁,将新剪裁的切片也交给模型进行判断,如此循环直至将图片全部检测完。

一旦完成后,我们按比例放大剪裁的区域,再以新的尺寸对图片进行剪裁,将新剪裁的切片按比例缩小至模型所采纳的尺寸,交给模型进行判断,如此循环。

深度学习文字识别可以什么模型 文字识别算法原理_机器学习_03


滑动窗口技术也被用于文字识别,首先训练模型能够区分字符与非字符,然后,运用滑动窗口技术识别字符,一旦完成了字符的识别,我们将识别得出的区域进行一些扩展,然后将重叠的区域进行合并。接着我们以宽高比作为过滤条件,过滤掉高度比宽度更大的区域(认为单词的长度通常比高度要大)。以上便是文字侦测阶段。 下一步是训练一个模型来完成将文字分割成一个个字符的任务,需要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。

深度学习文字识别可以什么模型 文字识别算法原理_机器学习_04


模型训练完后,我们仍然是使用滑动窗口技术来进行字符识别。

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

如果我们的模型是低方差的,那么获得更多的数据用于训练模型,是能够有更好的效果的。问题在于,我们怎样获得数据,数据不总是可以直接获得的,我们有可能需要人工地创造一些数据。

以我们的文字识别应用为例,我们可以字体网站下载各种字体,然后利用这些不同的字体配上各种不同的随机背景图片创造出一些用于训练的实例,这让我们能够获得一个无限大的训练集。这是从零开始创造实例。

另一种方法是,利用已有的数据,然后对其进行修改,例如将已有的字符图片进行一些扭曲、旋转、模糊处理。只要我们认为实际数据有可能和经过这样处理后的数据类似,我们便可以用这样的方法来创造大量的数据。
有关获得更多数据的几种方法:

  1. 人工数据合成
  2. 手动收集、标记数据
  3. 众包

16.4 上限分析

上限分析作用是在于发现流水线中哪个步骤优化以后,会给整个模型带来最大的优化。

如下图所示:

深度学习文字识别可以什么模型 文字识别算法原理_机器学习_05


在上述例子中,整体的精确率为 72% ,如果人为进行文本识别(将文本识别的精确率提高至 100% ),则整体精确率为 89% ,提高了 17% ,如果继续人为进行字符分割(将字符分割的精确率提高至 100% ),则整体精确率为 90% ,提高了 1% ,如果继续人为进行字符识别(将字符识别的精确率提高至 100% ),则整体精确率为 100% ,提高了 10% 。由此可见,优化文本识别,会给整个模型带来最大的优化。