当前位置: 首页 > news >正文

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

 

转载于:https://www.cnblogs.com/BlueBlueSea/p/9513701.html

相关文章:

  • 泛型的理解(1)
  • 使用阿里云接口进行手机号(三网)实名认证
  • unique()函数使用
  • Install MongoDB to Ubuntu 18.04
  • SpringCloud Gateway入门
  • 使用jQuery操作input的value值
  • tpl-angularjs Web端开发工程模板
  • [python] RRT快速拓展随机树
  • 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程
  • Clojure基础课程2-Clojure中的数据长啥样?
  • Spring Boot【快速入门】
  • 使用时间器区别网页上的单击和双击
  • css设置全局变量和局部变量
  • 宏观政策转向,消费金融行业能否送别“至暗时刻”?
  • vc code
  • [PHP内核探索]PHP中的哈希表
  • axios 和 cookie 的那些事
  • httpie使用详解
  • java8-模拟hadoop
  • mysql常用命令汇总
  • rabbitmq延迟消息示例
  • SpiderData 2019年2月13日 DApp数据排行榜
  • text-decoration与color属性
  • vue的全局变量和全局拦截请求器
  • vue总结
  • 技术胖1-4季视频复习— (看视频笔记)
  • 删除表内多余的重复数据
  • 双管齐下,VMware的容器新战略
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #FPGA(基础知识)
  • #pragma预处理命令
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)(1.11) SiK Radio v2(一)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (52)只出现一次的数字III
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)RocketMQ初步认识
  • (转)C#调用WebService 基础
  • @Service注解让spring找到你的Service bean
  • @Transactional 详解
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • []Telit UC864E 拨号上网
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [hive小技巧]同一份数据多种处理
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [Java][Android][Process] ProcessBuilder与Runtime差别
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [NOI2014]购票
  • [Oh My C++ Diary]内联函数
  • [Oh My C++ Diary]用cout输出时后endl的使用