week_11
Andrew Ng 机器学习笔记 ---By Orangestar
Week_11(the Last Week!!!!)
Congratulations on making it to the eleventh and final week! This week, we will walk you through a complex, end-to-end application of machine learning, to the application of Photo OCR. Identifying and recognizing objects, words, and digits in an image is a challenging task. We discuss how a pipeline can be built to tackle this problem and how to analyze and improve the performance of such a system.
1. Problem Description and Pipeline
这周要学习的是机器学习应用实例---照片OCR技术的应用实例
- 展示一个复杂的机器学习系统是如何被建立起来的
- 介绍机器学习流水线(machine learning pipeline)
- 决定下一步做什么的时候,如何分配资源
- 告诉你机器学习的诸多有意思的想法和理念
- 如何将机器学习应用到计算机视觉问题当中
- 人工数据合成(artificial data synthesis)
首先我们先了解 the photo OCR problem
就是把图像中的文字识别出来
有3步:

流水线表示:

这就是 流水线的一个应用
2. Sliding Windows(滑动窗)
这节我们将关注一种叫做滑动窗的分类器
比如:识别行人:

用小窗来移动。每次都移动一个step。
每次都返回分类器去收集并处理。
然后,处理完后,用更大的小窗去执行同样步骤
最后,用滑动窗分类器去处理
当然,文字识别也差不多。

这意思就是白色的区域会有更大的概率有文字。但是还没完。我们实际上想做的是:在图像中有文字的各个区域都画上矩形窗。
所以,进一步,我们取出分类器的输出,然后输入到一个叫展开器(expansion operator)的东西里
展开器的作用就是:它会取过这张图片,对每一个白色的小点,都扩展为一块白色的区域。

这样,我们就可以直观的判断哪里可能有文字。
当然,即使是这样,也可能会漏掉一些文字。
流水线的第二步是字符分割:

分割!!!!
移动窗好像一个算法,貌似也叫移动窗
如图:这样操作,看到可以分割就分割

最后,是字符分类。可以用一种标准的监督学习来识别字母。

3. Getting Lots of Data and Artificial Data
我们知道,要想得到一个比较高效的机器学习系统,其中一个最可靠的方法是,选择一个低偏差的学习算法,然后用一个巨大的训练集来训练
但是,如何得到巨大的训练集呢?
------ 人工数据合成!(artificial data synthesis)
如何得到一个更大的数据集?

例如上图,我们可以将这些样本加上不同的背景图片!
或者将样本做一些处理,模糊或者旋转什么的。
这样你会发现,这和真实的数据集十分相近。
这表示人工合成数据的一个实例
如图:

由一个样本可以合成出另外16个样本
但是,扩大的方法要慎重选择!
还有一种就是声音样本!

将一个样本加上背景噪音可能是一个很好的扩大训练样本的方法。或者将声音延长?

所以,选择扩大的方法的时候,我们要根据实际要求来选择。但是,在你的数据中添加一些纯随机的噪声,通常来讲是没有什么用的。所以,人工数据合成的过程并没有什么技巧可言。有候你只能一遍遍地尝试 然后观察效果但你在确定需要添加 什么样的变形时 你一定要考虑好 你添加的那些额外的变形量 是有意义的 能让你产生的训练样本 至少在某种程度上 是具有一定的代表性 能代表你可能会在测试集中看到的某种图像
所以,原则和前提如图:

笔记说的是,我们也要想想或者计算一下,我们如果是手动扩充数据集的话会花多长时间!有时候会比你猜的远远要小!****不要太过依赖人工合成数据!

4. Ceiling Analysis: What Part of the Pipeline to Work on Next
时间是最宝贵的!
所以,我们要用 上限分析ceiling canalysis
来避免无畏的劳动!要将团队的时间最大效率化

好,这是一个字符识别的流水线
然后:




懒癌。。。。。但是老师讲的应该比我总结的清楚得 多。而且这节也比较简单。
简而言之,就是不断去看,如果前面的是完美运行,看看总的会不会提高很多的准确度。如果是,就有值得改进的价值。反之,就不太值得被改进。


另一个例子::

人脸识别
一样,我们用上限分析:

week_11的更多相关文章
随机推荐
- 改善C#程序的方法-3 比较器和LINQ排序
一 创建对象时考虑实现比较器 假设有这样的场景,有一个40个人的学生列表,业务中需针对学生的成绩来进行排序. 可以考虑用IComparable接口和ICompare接口实现: class Progra ...
- 浅谈 Golang 插件机制
我们知道类似 Java 等半编译半解释型语言编译生成的都是类似中间态的字节码,所以在 Java 里面我们想要实现程序工作的动态扩展,可以通过 Java 的字节码编辑技术([[动态代理#ASM]]/[[ ...
- Sentinel安装教程【Linux+windows】
一.Sentinel的简介 Sentinel是阿里巴巴出品的一款流控组件,它以流量为切入点,在流量控制.断路.负载保护等多个领域开展工作,保障服务可靠性. 如果你学过netflix公司旗下的Hystr ...
- 作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
作用域通信对象:session session对象基于会话,不同用户拥有不同的会话.同一个用户共享session对象的所有属性.作用域开始客户连接到应用程序的某个页面,结束与服务器断开连接.sessi ...
- React魔法堂:size-sensor源码略读
前言 echarts-for-react在对echarts进行轻量级封装的基础上,额外提供图表尺寸自适应容器尺寸的这小而实用的功能,而这功能的背后就是本文想介绍的size-sensor了. 源码介绍 ...
- JavaScript Array对象的splice方法 数组的添加和删除
Splice方法 :拼接 splice() 方法用于添加或删除数组中的元素. var index = Array.indexOf(value); //可以匹配value在Array中的索引,匹 ...
- Vue router简单配置入门案例
{ 注意驼峰命名法,不然会报错 } 1.在Views文件夹下创建Vue路由文件,例如: <template> </template> <script> </ ...
- ES6 学习笔记(十二)代理器Proxy的简单使用
1.前言 以前在学习react时做了个仿手机端的QQ音乐项目.当时的数据是通过proxy代理的QQ音乐数据接口,直接写在package.json里面.Proxy 对象(Proxy)是 ES6的特性,只 ...
- mysql 子查询 联结 组合查询
子查询 SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='T ...
- C#自定义控件(3)—PanelHead控件
有时候我们会需要这样一种控件效果,上面是标题,下面是另外一个区域,且分别需要设置不同的颜 色等,当然我们可以使用splitContainer控件来制作,也可以直接使用自定义控件来,这样可以减少一 定的 ...