【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别
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 应用实例:图片文字识别的更多相关文章
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测
Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统
Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维
Lecture 14 Dimensionality Reduction 降维 14.1 降维的动机一:数据压缩 Data Compression 现在讨论第二种无监督学习问题:降维. 降维的一个作用是 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类
Lecture 13 聚类 Clustering 13.1 无监督学习简介 Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机
Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计
Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议
Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念
目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning 无 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
随机推荐
- Exception.Data 为异常添加更多调试信息
我们抛出异常是为了知道程序中目前的状态发生了错误.为了能够知道错误的详细信息便于我们将来避免产生这样的错误,我们会选用合适的异常类型,在异常中编写易于理解的 message 信息.但是有时我们需要更多 ...
- ballerina 学习三 根据swagger 以及protobuf 生成code
备注: 基本环境安装就不用介绍了,swagger 以及grpc 同时也不用介绍了,都是比较简单的代码,就是一个简单的测试 1. 初始化项目 ballerina init 项目结构如下: ├── R ...
- RedHat6.5用ISO配置yum源
CentOS自带强大的yum功能,默认为从网上自动下载rpm包,对于网速不太给力或者没有网络的情况下需要用的话就不是很方便,很多软件尤其是服务器上的软件我们么有必要追求最新,稳定性最重要,这里我们用C ...
- Java类型强制转换
int intA = 10; String StrB = "12"; int c = Integer.parseInt(StrB); // 把String转换成int String ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料(下)
转载:http://www.jianshu.com/p/b73b6953e849 该资源的github地址:Qix <Statistical foundations of machine lea ...
- php-PSR
<?php/** * 符合psr-1,2的编程实例 */ namespace Standard; // 顶部命名空间// 空一行use Test\TestClass;//use引入类 /** * ...
- Tool:Visual Studio Code
ylbtech-Tool:Visual Studio Code Microsoft在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Ma ...
- angula的factory service provider
本人学了一段时间的angular的服务(factory.service.provider),有了自己的一些对于他们的见解,如果说的对,敬请赐教!!! 以后更新
- ApacheOFBiz的相关介绍以及使用总结(三)
Ofbiz中还提供了一些基础性服务,可以直接用来使用,下面就简单介绍说明一下. ofbiz邮件发送服务 ofbiz中提供发送邮件相关功能:sendMailFromScreen contex ...
- (转)使用 linux tar 命令压缩与解压文件
原文链接 http://www.cnblogs.com/qq78292959/archive/2011/07/06/2099427.html tar -c: 建立压缩档案-x:解压-t:查看内容-r: ...