Lecture 18—Photo OCR 应用实例:图片文字识别

18.1 问题描述和流程图 Problem Description and Pipeline

图像文字识别需要如下步骤:


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

如果用任务流程图来表达这个问题,每一项任务可以由一个单独的小队来负责:

18.2 滑动窗口 Sliding Windows

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

假使需要在图片中识别行人,首先用许多固定尺寸的图片来训练一个能够准确识别行人的模型。

之后使用训练模型时用的图片尺寸对预测图片进行剪裁,将切片交给模型判断其是否为行人,然后滑动剪裁区域,剪裁切片后再交给模型判断,直至将图片全部检测完。
然后按比例放大剪裁的区域,以新的尺寸对图片进行剪裁,将新剪裁的切片按比例缩小至模型采纳的尺寸,交给模型判断,如此循环。


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

接着以宽高比作为过滤条件,过滤高度比宽度更大的区域(因为单词的长度通常比高度要大)。下图中绿色区域是识别出的文字区域,红色区域是被忽略的。

下一步是训练模型分割字符,需要的训练集为单个字符的图和两个相连字符之间的图。模型训练完后,仍然使用滑动窗口技术来进行字符识别。

最后是字符分类阶段,利用神经网络、支持向量机或者逻辑回归算法训练一个分类器即可。

18.3 获取大量数据和人工数据 Getting Lots of Data and Artificial Data

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

另一种方法是,对已有的数据进行修改,例如将其进行扭曲、旋转、模糊处理。只要认为实际数据有可能和处理后的数据类似,便可以用这样的方法来创造大量的数据。

某些处理起不到增加数据集的作用,例如加入高斯噪声、将单个图片复制多份等

在增大数据集之前,必须确保当前训练的已经是一个低偏差的模型。不然增大数据集也没有用

有关获得更多数据的几种方法: 1.人工数据合成;2.手动收集、标记数据;3.众包

18.4 上限分析 What Part of the Pipeline to Work on Next

如何知道哪一部分最值得花时间和精力去改善呢?可以使用流程图进行上限分析,流程图中每一部分的输出都是下一部分的输入。

在上限分析中,我们选取一部分,手工提供 100%正确的输出结果,然后看应用的整体效果提升了多少。假使当前总体效果为 72%的正确率:
1) 如果让文字检测部分100%正确,系统的总体效果从 72%提高到了89%。这意味着很值得投入时间精力来提高我们的文字检测的准确度
2) 接着让字符切分结果100%正确,系统总体效果只提升了 1%,这意味着字符切分部分可能已经足够好了
3) 最后让字符分类100%正确,系统总体效果又提升了10%,这意味着我们可能也会应该投入更多的时间和精力到分类这部分

另一个上限分析的例子,人脸识别:

其中最值得优化的是:脸部检测Face detection,眼部分割Eyes segmentation 和 逻辑回归Logistic regression 三个部分。

建议不要根据直觉,而是使用上限分析判断应该改进哪个模块。当把精力花在最值得优化的那个模块上,会让整个系统的表现有显著的提高。

【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别的更多相关文章

  1. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测

    Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法 ...

  2. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

  3. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维

    Lecture 14 Dimensionality Reduction 降维 14.1 降维的动机一:数据压缩 Data Compression 现在讨论第二种无监督学习问题:降维. 降维的一个作用是 ...

  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类

    Lecture 13 聚类 Clustering 13.1 无监督学习简介  Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...

  5. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机

    Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计

    Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议

    Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念

    目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning  无 ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

随机推荐

  1. C#飞行棋游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. webpack libray 参考例子

    备注:   使用webpack 进行模块导出,方便进行通信 1. 项目初始化 ├── main.js ├── package.json ├── show.js ├── webpack.config.j ...

  3. VS2010单元测试入门实践教程

    单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...

  4. 如何查看你的 FastAdmin 服务器是否开启了 gzip br 压缩

    如何查看你的 FastAdmin 服务器是否开启了 gzip 压缩 gzip br 压缩的好处不用多说了. 但是怎么方便的知道网站到底有没有开启或使用了 gzip 呢,其实只要在浏览器就可以看到. 按 ...

  5. 关于SQL的几道小题详解

    关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...

  6. Fuel9.0安装openstack过程中所踩过的坑2018最新版

    坑一,安装好后,无法访问Web UI画面 访问https//10.20.0.2:8443无法打开UI画面.首先我们不管以后的步骤,打不开是很不爽的. 解决方法:把下面网卡1,网卡2,网卡3的界面名称都 ...

  7. bzoj 1927 [Sdoi2010]星际竞速——网络流

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1927 每个点拆点保证只经过一次. 主要是如果经过了这个点,这个点应该向汇点流过去表示经过了它 ...

  8. Spring Boot 入门之持久层篇(三)

    原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 ...

  9. sphinx-1.3.0扩展在pPHP 7.0.7版本编译不通过

    在这个网友也是在php7上面编译插件不通过 https://bugs.php.net/bug.php?id=71586 下php7对应的扩展文件即可 http://git.php.net/?p=pec ...

  10. O/R映射及OID方案

    一.O/R映射层基本介绍 O/R映射层是持久层的一个特例,它的数据模型是对象模型(Object),存储模型是关系模型(Relational),cmp和Hibernate是对象模型到关系模型之间转换的两 ...