来自ng的ml-003中 18_XVIII._Application_Example-_Photo_OCR

这是ng2013年在coursera上最后的一课了。这一系列的几个视频还是相比前面有些难懂,。。。。。。

ng说拿这个做例子有三个原因:一、演示如何将复杂的机器学习进行融合;二介绍下机器学习的type line和当你决定做某事的时候如何的利用资源;三、这个例子能够说明更多有趣的机器学习idea(将机器学习用于计算机视觉,人工数据综合)

首先是图像中的文字识别

这是最简单的几部划分,(但是比如你之前的单词是cleaning,但是机器有可能会反馈给你c1eaning,会有少许的错误,简单的提下)

这里是一个OCR识别的管道图,下面是每个部分差不多需要这么多人的合作,但是(ng最后居然说其实一个人完成整个工作也是可以的,如果他知道怎么做的话,唉)

一、滑动窗口

相对应来说,行人检测中的窗口比较简单,因为他的背景较为单一,不像之前的文本识别,背景很是复杂,在行人检测中,要考虑到不同距离下不同人的窗口的高度和宽度等等。

这里是个简单的数据集的例子,通过观察采用这么大的窗口较为合适,行人检测的数据集一般都是1k或者10k等等的

从图的左上角开始一个82*36的窗口,然后分类获得这个是y=0,就是非行人的数据,然后将窗口右移这其中的移动的距离就叫做stepsize,如果stepsize等于1 的确可以抓取足够的数据,但是计算量太大,一半都是stepsize等于4 或者8.然后这里的窗口大小如果按照需要也是可以调的更大的。并不是完全的限定在一个数值上

这样就能够获得这样一个结果

通过这样的方法就能应用在文字识别上,通过不同的滑动窗口获得文本的位置

通过不同的滑动窗口最后就锁定了文字的位置,然后进行图片的放大来更清晰的显示字符串的位置

但是如果采用中间划分的方法,左边的明显是滑动窗口取到了两个字,而右边的是取到了一个完整的字

通过一种方法当滑动窗口滑倒完整的字的时候不采用切分,而滑倒两个字的时候采用切分。

二、人工数据结合

ng说见过的最好的机器学习算法都是采用一个low bias算法,然后再大量的数据上运行。对于文字识别来说。数据有一个是来自于真实的数据,一个是来自于众多的字体库

或者通过采用字体库的字体,在放到实际数据的背景上合成人工数据:

或者是在数据上加上扭曲等方法

在音频上:

对于数据添加噪声来说,添加的噪声是有意义的,比如上图中的扭曲是可以在test中真实找到的,(类似模拟test数据一样)。而下文中的椒盐噪声是无意义的,添加了也没什么帮助,因为在这个例子中,我们是想识别的文字而且文字的扭曲是真实世界中看得到的,而添加的椒盐噪声是除非你就是为了比如降噪这种噪音,能够在test中看到的,因为这里是为了识别不同形状的a,而不是为了降噪,

按照上图说的,在添加人工合成的数据的时候,一定要知道你的模型是不是过拟合的,如果模型是欠拟合的,那么增加再多的数据都是在浪费时间。其次,可以坐下来和团队的人员一起问问 想要这些数据的处理速度提升10x,需要做多少工作:1、人工合成;2、手动添加标签;3、寻找混合来源。

三、细胞级别分析

如上图来说,对于整个系统而言,每个地方都是需要做工作的,但是如何找到这个系统的瓶颈之处,通过提升这个系统的瓶颈来达到提升整个系统的效率,这是值得思考的,不然在其他表现很好的环节上大量的工作,最后还是在浪费时间

相比较而言,首先没有任何改变的情况下最好的精度是72%,然后通过修改第二项,让他的输出是100准确的,那么整个系统提升到89%的精度,有17%的改变,说明这部分值得我们花时间,然后再改动第二项的基础上,接着将第三项改动成完美情况下,整个系统只提升了1%,这说明第三项是很好的,差不多不需要花时间去完善。

这同样让我们知道每个部分的上限是多少,和在这个部分的上限上运行的时候整个系统的精度是多少

上面两个图就是一个人脸检测的模型过程。

通过与最原始的模型的效果相对比,先逐个部分的进行人工的修改(即将这个部分的精度提到上限),比如第一部分的背景移除,可以通过ps等软件人工的去除,然后将这个完美的模型代替第一部分的输出,观察整个模型提升的效果,这里第一个模型只提升了0.1%,说明这部分没什么可改善的地方。接着往下按照这种原理进行。找到整个模型的瓶颈之处。

就是用人工的小数据去验证模型的瓶颈,而不至于花了很久时间才发现其实都在浪费时间。

例子:照片的OCR识别的更多相关文章

  1. 深入学习OpenCV文档扫描及OCR识别(文档扫描,图像矫正,透视变换,OCR识别)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  2. AI时代的OCR识别技术浅析

    人工智能这个词可谓是耳熟能详,近几年人工智能热潮再次席卷而来,引起轰动的要数google的AlphaGo,相继打败了围棋界的韩国选手李世石以及世界冠军柯洁,见证了人工智能发展的里程碑式的变革,人工智能 ...

  3. 基于Tesseract的OCR识别小程序

    一.背景 先说下开发背景,今年有次搬家找房子(2020了应该叫去年了),发现每天都要对着各种租房广告打很多电话.(当然网上也找了实地也找),每次基本都是对着墙面看电话号码然后拨打,次数一多就感觉非常麻 ...

  4. 微信公众号开发调用摄像头、拍摄或选择图片、OCR识别

     一 .准备工作       <1> 域名认证准备工作 在需要调用摄像头的接口页面引入微信的js,具体地址为:(支持https):http://res.wx.qq.com/open/js/ ...

  5. Atitit  ocr识别原理 与概论 attilax总结

    Atitit  ocr识别原理 与概论 attilax总结 1.1. Ocr的过程与流程1 1.2. OCR不同技术细分略有不同,但大概原理是一样的. 即主要技术过程是:二值化(又叫归一化)----- ...

  6. 基于Python实现对PDF文件的OCR识别

    http://www.jb51.net/article/89955.htm https://pythontips.com/2016/02/25/ocr-on-pdf-files-using-pytho ...

  7. OCR识别-python版(一)

    需求:识别图片中的文字信息环境:windows系统 开发语言:python 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.pyocr 网络通直接使用命令:pip ...

  8. 汽车Vin码识别——可以嵌入到手机里的新OCR识别技术

              汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码 ...

  9. 汽车Vin码识别—— 一款二手车行业值得拥有的OCR识别软件

    一.汽车Vin码识别产品描述 汽车Vin码识别系统,主要应用在智能手机IOS与Android两个平台中.前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的Vin码(车架号),即可轻松识别出车辆 ...

随机推荐

  1. python学习之老男孩python全栈第九期_day001知识点总结

    1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...

  2. CSS十大选择器

    CSS十大选择器:   1.id选择器 # 2.class选择器 句号 . 3.标签选择器 标签名称 4.相邻选择器 加号 + 5.后代选择器 空格 6.子元素选择器 大于号 > 7.多元素  ...

  3. Vue中改变对象的注意事项

    数组更改注意事项 Vue无法检测到以下方式变动的数组 当你利用索引直接设置一个项时,例如:vm.items[index] = newValue 当你修改数组的长度时,例如:vm.items.lengt ...

  4. C# Newtonsoft.Json反序列化为dynamic对象之后的使用

    通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...

  5. 安装ArcGIS Enterprise WebGIS (Portal ArcGIS Server DataStore ) 系统后如何应对网络环境的配置修改

    客户往往在部署完ArcGIS WebGIS系统后,由于需要满足业务或者网络管理的要求,需要修改系统的网络环境的配置,下文将从常见的几个场景来讲述如何去应对这些变动. 1.网络IP地址变动 由于在部署W ...

  6. zigzag方式编码

    按以下公式转换: ParameterInteger = (value << 1) ^ (value >> 31) 参数值不支持大于pow(2,31) - 1或-1 * (pow ...

  7. 使用GitHub-Pages创建博客和图片上传问题解决

    title: 使用GitHub Pages创建博客和图片上传问题解决 date: 2017-10-22 20:44:11 tags: IT 技术 toc: true 搭建博客 博客的搭建过程完全参照小 ...

  8. windows10如何打开vhd文件

    本人电脑安装了Visual Studio 2017,但是由于项目需求需要Core SDK(2.0)的版本支持,也就是2017最新版.所以现在需要利用visual Studio 2017最新版本的安装包 ...

  9. NXlog配置

    NXlog文档: http://nxlog.org/docs/nxlog-ce/nxlog-reference-manual.html https://nxlog.org/documentation/ ...

  10. PHP 定界符

    双引号和单引号是常用的字符串定界符,在php4.0以后 还可以使用字符串定界符<<<,功能和双引号差不多,用法如下 <<<标识符 字符串 标识符 其中最后的标识符必 ...