Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR
http://blog.csdn.net/l281865263/article/details/50278745
本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。内容大多来自Standford公开课machine learning中Andrew老师的讲解和其他书籍的借鉴。(https://class.coursera.org/ml/class/index)
第十四讲. 机器学习应用举例之——Photo OCR
=============================
(一)、Photo OCR Pipeline
(二)、滑动窗 Sliding Window
(三)、人造数据 Artificial Data
(四)、Ceiling Analysis
=====================================
(一)、Photo OCR Pipeline
算法流程:
Image ----> Text Detection ---->Character Segmentation ---->Character Recognition
有些还会有Spelling Correction,比如下图中当把“Clean”中的字母“l”识别成数字“1”时,可通过单词上下文纠正回来。
=====================================
(二)、滑动窗 Sliding Window
一、滑动窗概念
滑动窗是一种遍历图像从而获取正负样本的方法。可根据正样本的size,来选取不同尺度的滑动窗,如下图:
二、Text Detection
1、训练阶段
通过滑动窗,可获取如下图所示的Text Detection算法训练所需的正负样本。当滑动窗所采样本正中间位置是某个字符,就认为是正样本,否则为负样本。
2、测试阶段
如下图
首先,用滑动窗遍历图像,并用上面训练的classifer对滑动窗所选的样本进行二分类,会得到左下角的confidence map,每个像素的灰度值大小描述了该像素是字符的可能性/概率/confidence。但这并非我们要的输出,我们要输出的是表示字符边界的bounding box。
然后,为了得到上述bounding box,用到一个操作叫做expansion,扩张。目的是为了把断续的单个字符串联起来便于画bounding box,如右下图所示。举例一个简单的策略是,对于左下图每个白色的像素,将其周围5或10个pixel范围内的pixel全都染成白色。
最后,如右下图所示,将每个连通域标一个bounding box出来,规则是高度和宽度符合一行字符的大小,比如最下面两个case因为太窄而被去掉,最终输出三个box。
三、Character Segmentation
用滑动窗(只需要在一个维度上进行滑动)对上面输出的detection结果进行遍历,如下图所示,滑动窗中间可做字符分割的为正样本,否则为负样本。
四、Character Recognition
这个理解起来很简单,就不详述了。
=====================================
(三)、人造数据 Artificial Data
增加数据量是在模型具有low bias的前提下继续提高模型性能的一个有效方法。
增加数据量的办法:一是让人去标注更多的数据,二是产生一些人造数据。
人造数据又有两种生成方式,一是前景背景合成法,二是数据畸变扰动。
一、前景背景合成法
如下图所示,左边是真实数据,右边是由背景和前景合成的数据。所谓背景前景合成法,指的是拿真实的字符前景和真实的非字符背景,贴合在一起,就生成一个假数据。这个假数据看起来和左边的真数据并无太大差异,完全可以参与模型训练。
二、数据畸变扰动
如下图所示,对原始真实数据做一些类似旋转、缩放等畸变变换,增加数据扰动,也可以生成一些数据。这样做不仅可以增大数据量,而且可以让模型具有例如旋转不变的鲁棒性,从而对数据畸变具有很强的适应性。
一定要注意一点,所增加的数据扰动类型,一定要是测试数据中存在的,如果只是加一些随机的无意义的噪声,对模型性能的提高并无帮助。比如,测试数据中并没有字符上下或左右倒置的case,如果硬是人造出一些这样的训练数据做正样本,势必会让模型感到困惑confused(如果负样本中恰好有长得像倒置的字符的)。
=====================================
(四)、Ceiling Analysis
Ceiling Analysis,可以直观地将其等同于最优分析,即找到这件事情的最好情况,你就可以知道现在这种条件下能达到的上限。如果对上限满意,那么就优化当前的方案,逼近上限;如果对上限都不满意,那就不用在当前的方案上浪费时间了,另谋他路。
我们可以用Ceiling Analysis这种方法分析Photo OCR pipeline里的各个模块,发现系统的短板,以决定接下来做什么。下面说说Ceiling Analysis的分析思路,如下图所示。
首先要知道,每个模块都有自身的准确率,这个准确率是独立的,与其他模块无关。
当前整个系统的输出准确率是72%(character recognition)
1、首先,确保text detection模块100%的准确率(人为的标定好这是text文本区域),即该模块的输出就是ground truth。这时测试系统的准确率,即在最优的text detection模型的前提下,系统可以达到的准确率上限,为89%,上涨17%。说明当前的text detection模块性能还有较大的提升空间。
2、然后,确保character segmentation模块100%的准确率(人工给出正确的字符分割结果),同上。在最优的text detection模型和character segmentation模型的前提下,系统可以达到的准确率上限,为90%,仅上涨1%。说明当前的character segmentation模型就算优化到100%的准确率,也只对系统准确率造成1%的影响,可见系统短板并不在这里。
3、最后,确保character recognition模块100%的准确率,同上。当所有模块都输出ground truth时,系统输出准确率自然达到100%,上涨10%. 这说明当前的character recognition模型的性能也有着一定的提升空间。
分析完毕,那么接下来的工作,在text detection和character recognition这两个模块上下工夫就好了。
人脸识别:
1. 整个系统的准确性达到了85%;
2. 预处理,对前景和背景进行分割(手动把背景删掉),观察准确率提高多少==>0.1%===>说明即使你把背景分割做到极致,也只能提高一点点性能;
3. 再遍历测试集,给出正确的脸部检测区域,然后分别进行眼镜嘴巴和鼻子的分割,再给出最终正确逻辑回归分类====>100%
4. 随着给测试集提供的正确标签越来越多,整个系统的表现越来越好,也可以看出提高哪一部分的性能可以对整个系统性能提供最大化的价值。
Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR的更多相关文章
- SIGAI机器学习第二十四集 聚类算法1
讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
- 视觉slam学习之路(一)看高翔十四讲所遇到的问题
目前实验室做机器人,主要分三个方向,定位导航,建图,图像识别,之前做的也是做了下Qt上位机,后面又弄红外识别,因为这学期上课也没怎么花时间在项目,然后导师让我们确定一个方向来,便于以后发论文什么. ...
- 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/slambook 第二讲:初识SLAM 2.4.2 Hello SLAM(书本P2 ...
- 高博-《视觉SLAM十四讲》
0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...
- 《SLAM十四讲》个人学习知识点梳理
0.引言 从六月末到八月初大概一个月时间一直在啃SLAM十四讲[1]这本书,这本书把SLAM中涉及的基本知识点都涵盖了,所以在这里做一个复习,对这本书自己学到的东西做一个梳理. 书本地址:http:/ ...
- SLAM十四讲中Sophus库安装
Sophus截止目前有很多版本,其中大体分为两类,一种是用模板实现的方法,一种是用非模板类实现的,SLAM十四讲中使用的是非模板类库,clone Sophus: git clone http://gi ...
- 《视觉SLAM十四讲》第2讲
目录 一 视觉SLAM中的传感器 二 经典视觉SLAM框架 三 SLAM问题的数学表述 注:原创不易,转载请务必注明原作者和出处,感谢支持! 本讲主要内容: (1) 视觉SLAM中的传感器 (2) 经 ...
随机推荐
- TPO-17 C2 Reschedule part-time job in campus dining hall
TPO-17 C2 Reschedule part-time job in campus dining hall 第 1 段 1.Listen to a conversation between a ...
- Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
- day02——作业讲解
# 设定⼀个理想数字⽐如:66,让⽤户输⼊数字,如果⽐66⼤,则显示猜测# 的结果⼤了:如果⽐66⼩,则显示猜测的结果⼩了;只有等于66,显示猜测结果# 正确,然后退出循环 #升级版# 可以帮我们生成 ...
- Tree - Gradient Boosting Machine with sklearn source code
This is the second post in Boosting algorithm. In the previous post, we go through the earliest Boos ...
- PHP学习和使用总结
起因 学习和使用PHP也有不少年头了,而自己也在学习和使用其他许多语言.我想通过这个总结来给自己一个交代.另一方面也分享一下开发经验,如何用PHP开发和管理大型的项目. 闲聊 许多人说自己1天学会PH ...
- asp.net如何实现跟踪检查用户知否查看了邮件。
有时我们有这样一种需求场景,我们给很多用户发了邮件,需要一个反馈,用户是否查看了我们发送的邮件,百度了以下果然有方案. 我总结实践了下这个过程,同时有自己的一点使用感受.记录下希望对你有帮助. 有人想 ...
- caffe环境搭建笔记
首先安装以下库或软件 sudo apt-get install gitsudo apt-get install libprotobuf-dev libleveldb-dev l ...
- iOS-封装UIPickerView
创建类WJPickerView继承与UIView ProvinceModel是省市的model,包含属性 @property (nonatomic, strong) NSString *provinc ...
- delphi 中如何执行SqlParameter形式的SQL语句
procedure TForm1.Button1Click(Sender: TObject); begin ADOConnection1.Open('); ADOQuery1.Close; ADOQu ...
- ping不通的常见原因和解决办法
Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用“ping”命令可以检查网络是否连通.如果ping不通则可以通过以下方式寻找 ...