Andrew Ng-ML-第十九章-应用举例:照片OCR(光学字符识别)
1.问题描述与 OCR pipeline

图1.图像文字识别流水线
首先是输入图片-》进行文字检测-》字符分割-》字符识别。
这些阶段分别需要1-5人这样子。
2.滑动窗口
主要讲滑动窗口分类器。

图2.滑动窗口检测
对于行人检测来说,矩阵框有长宽相同的比例,虽然具体的数值会变化,但比例不变;但是对于文字检测来说,文字酷块的比例大小是不同的。
对滑动窗口来说,首先有一个窗口从图片左上角开始检测,每滑动到一个地方就将图片切割,并调整为(82*36)并输入进滑动窗口检测器中;
每次移动的距离称为步长;直到将图片扫描完毕为止;
一次扫描完之后,增加矩形框大小,再次进行扫描分类。

图3.文字检测
对图像进行窗口扫描之后,有文字的部分会被标为白色,色度的高低表示是否有文字的置信度。
但图片中也有一些文字未被检测出来。
可将文字部分剪切出来,进行下一步的工作。

图4.一维滑动窗口进行字符分割
对于左边的样本,窗口中能够有一个直线,为正样本,即可以分割;进行有监督学习
对于右边的样本,y=0,不可分割。此时滑动窗口只遍历一行即可,直到将所有的字符分开。

图5.图像OCR流水线
1.首先 进行文字检测;
2.进行字符分割;
3.进行字符识别。
3.获取大量数据和人工数据

图6.人工数据合成
左图中是真实的从图片中获取的数据;右图是通过人工合成的,其中的字体是从网上下载的,并通过仿射等一系列技术形成图片。
但是如果合成的不好,那么会对其产生影响。

图7.对数据进行扰乱
左边的A是从真实图片中获取的,可以通过对A进行distortion来获取更多的数据集。
一个很好的例子就是语音识别,对同一个语音,加入嘈杂银、背景音、对音轨进行操作等,以此来扩充数据集,生成额外的标注样本。

图8.应该添加什么样的失真
对于可行的添加失真的方法,应该是具有代表性的,有可能在测试集中出现的。
并且给出了一个并不是可行的失真方法,比如对图像加入像素级的噪声,这通常对识别是没有帮助的。

图9.对获取更多数据的一些讨论
1. 首先在扩大数据集之前需要确定分类器是低偏差的,如果是高偏差那么就需要先增加特征数量或者是增加神经网络中隐藏层的单元数量。
2.如果要获得10倍的数据量需要多少工作呢?获取数据量的渠道 :
人工数据合成、自己标记数据、进行众包。
那么在解决机器学习遇到的问题时,重要的两点就是:
1.利用学习曲线判断增加数据量是否有用;
2.如果是需要增加数据量,那么就会想如果增加10倍的数据量需要花多少工作,
4.天花板分析:下一步工作的 pipeline
Andrew Ng-ML-第十九章-应用举例:照片OCR(光学字符识别)的更多相关文章
- Python之路【第十九章】:Django进阶
Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...
- 第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器
原文:第十九章--使用资源调控器管理资源(1)--使用SQLServer Management Studio 配置资源调控器 本系列包含: 1. 使用SQLServer Management Stud ...
- 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
原文:第十九章--使用资源调控器管理资源(2)--使用T-SQL配置资源调控器 前言: 在前一章已经演示了如何使用SSMS来配置资源调控器.但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展. ...
- 第十九章 Django的ORM映射机制
第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12翻译——第十九章. Gradle 守护进程
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第三十九章. IDEA 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- thinkphp5.0 获取请求信息
如果要获取当前的请求信息,可以使用\think\Request类,除了下文中的 $request = Request::instance(); 也可以使用助手函数 $request = request ...
- EventHandler 与常见的.Net预定义委托
看着下面这两句事件定义及激发忽然有点不明白了, public event EventHandler<ExternalDataEventArgs> Submit; Submit(null, ...
- jQuery事件处理(四)
看了几天,决定整理一下jQuery事件处理的整体设计思路 1.通过add方法给选中的元素注册事件处理程序(通过缓存系统将事件储存到cache,而不是绑定到元素上) a.在存储之前,会为事件处理程序增加 ...
- rsyslog local0-local7的用法
很多时候我们需要将一个服务的日志文件导向一个指定的文件,这个时候可以设置log-facility 如在dhcpd.conf中配置 1 : update log-facility in the dhcp ...
- NET的堆和栈04,对托管和非托管资源的垃圾回收以及内存分配
在" .NET的堆和栈01,基本概念.值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配.我们知道:当执行一个方法的时 ...
- 【BZOJ2658】[Zjoi2012]小蓝的好友(mrx) 平衡树维护笛卡尔树+扫描线
[BZOJ2658][Zjoi2012]小蓝的好友(mrx) Description 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的 ...
- quartz 任务时间调度入门使用
这一小节主要是针对cronschedule用法进行讨论,首先讲一下cronschedule基础知识点: 一个cronschedule至少有6个字符(或者7个字符),空格作为间隔,比如 0 * * * ...
- 纯CSS绘制的三角形箭头图案【原创】
参考:http://www.webhek.com/css-triangles/ 使用上下左右的三角形箭头标志,直接用css即可完成,直接附上代码. css: div#up { width: 0px; ...
- background-size:100% 100% 时 background-position: % 失效
背景知识: background-size background-position 难题: background-size 为 100% 100% 时,background-position 部分失效 ...
- MySQL InnoDB的存储结构总结
从物理意义上来讲,InnoDB表由共享表空间.日志文件组(redo文件组).表结构定义文件组成.若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_n ...