吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR

系列文章:


吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础

吴恩达《Machine Learning》精炼笔记 5:神经网络

吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议

吴恩达《Machine Learning》精炼笔记 7:支持向量机 SVM

吴恩达《Machine Learning》精炼笔记 8:聚类 KMeans 及其 Python实现

吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

吴恩达《Machine Learning》精炼笔记 10:异常检测

吴恩达《Machine Learning》精炼笔记 11:推荐系统


本周主要是介绍了两个方面的内容,一个是如何进行大规模的机器学习,另一个是关于图片文字识别OCR 的案例

  • 大规模机器学习
  • 图片文字识别OCR


大规模机器学习(Large Scale Machine Learning)


在低方差的模型中,增加数据集的规模可以帮助我们获取更好的结果。但是当数据集增加到100万条的大规模的时候,我们需要考虑:大规模的训练集是否真的有必要。获取1000个训练集也可以获得更好的效果,通过绘制学习曲线来进行判断。


image.png


随机梯度下降法Stochastic Gradient Descent


如果需要对大规模的数据集进行训练,可以尝试使用随机梯度下降法来代替批量梯度下降法。随机梯度下降法的代价函数是

image.png

具体算法的过程为

  1. 先对训练集进行随机的洗牌操作,打乱数据的顺序
  2. 重复如下过程:


image.png

  1. 随机梯度下降算法是每次计算之后更新参数θ,不需要现将所有的训练集求和。


算法可能存在的问题

不是每一步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全 局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。

image.png

小批量梯度下降 Mini-Batch Gradient Descent


小批量梯度下降算法是介于批量梯度下降算法和梯度下降算法之间的算法。每计算常数b次训练实例,便更新一次参数θ。参数b通常在2-100之间。

image.png

随机梯度下降收敛


随机梯度下降算法的调试和学习率α的选取

  • 在批量梯度下降算法中,可以令代价函数JJ为迭代次数的函数,绘制图表,根据图表来 判断梯度下降是否收敛;大规模的训练集情况下,此举不现实,计算代价太大
  • 在随机梯度下降中,更新θ之前都计算一次代价,然后迭代X后求出X对训练实例的计算代价的平均值,最后绘制次数X和代价平均值之间的图像


image.png


随着不断地靠近全局最小值,通过减小学习率,迫使算法收敛而非在最小值最近徘徊。

image.png


映射化简和数据并行Map Reduce and Data Parallelism


映射化简和数据并行对于大规模机器学习问题而言是非常重要的概念。如果我们能够将我们的数据集分配给不多台 计算机,让每一台计算机处理数据集的一个子集,然后我们将计所的结果汇总在求和。这样 的方法叫做映射简化。


如果任何学习算法能够表达为对训练集的函数求和,那么便能将这个任务分配给多台计算机(或者同台计算机的不同CPU核心),达到加速处理的目的。比如400个训练实例,分配给4台计算机进行处理:


image.png


图片文字识别(Application Example: Photo OCR)


问题描述和流程图


图像文字识别应用所作的事是从一张给定的图片中识别文字。


image.png


基本步骤包含:

  1. 文字侦测(Text detection)——将图片上的文字与其他环境对象分离开来
  2. 字符切分(Character segmentation)——将文字分割成一个个单一的字符
  3. 字符分类(Characterclassification)——确定每一个字符是什么 可以用任务流程图来表


每项任务可以有不同的团队来负责处理。


image.png


滑动窗口Sliding windows


图片识别


滑动窗口是一项用来从图像中抽取对象的技术。看一个栗子:


image.png


如果我们需要从上面的图形中提取出来行人:

  • 用许多固定尺寸的图片来训练一个能够准确识别行人的模型
  • 用上面训练识别行人的模型时所采用的图片尺寸在我们要进行行人识别的图片上进行剪裁
  • 剪裁得到的切片交给模型,让模型判断是否为行人
  • 重复循环上述的操作步骤,直至将图片全部检测完。

文字识别


滑动窗口技术也被用于文字识别。

  • 首先训练模型能够区分字符与非字符
  • 然后运用滑动窗口技术识别字符
  • 完成字符的识别,将识别得出的区域进行扩展
  • 将重叠的区域进行合并,以宽高比作为过滤条件,过滤掉高度比宽度更大的区域


image.png


上述步骤是文字侦察阶段,接下来通过训练出一个模型来讲文字分割成一个个字符,需要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。


image.png

训练完成之后,可以通过滑动窗口技术来进行字符识别。该阶段属于字符切分阶段。


image.png

最后通过利用神经网络、支持向量机、或者逻辑回归等算法训练出一个分类器,属于是字符分类阶段。


获取大量数据和人工数据


如果我们的模型是低方差的,那么获得更多的数据用于训练模型,是能够有更好的效果。


获取大量数据的方法有

  • 人工数据合成
  • 手动收集、标记数据
  • 众包


上限分析Ceiling Analysis


在机器学习的应用中,我们通常需要通过几个步骤才能进行最终的预测,我们如何能够 知道哪一部分最值得我们花时间和精力去改善呢?这个问题可以通过上限分析来回答。


image.png


回到文字识别的应用中,流程图如下:


我们发现每个部分的输出都是下个部分的输入。在上限分析中,我们选取其中的某个部分,手工提供100%争取的输出结果,然后看整体的效果提升了多少。

  • 如果提升的比例比较明显,可以考虑在这个方向投入更过的时间和经历
  • 如果提升的效果微乎其微,意味着某个部分已经做的足够好了

image.png

相关文章
|
24天前
|
存储 人工智能 文字识别
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
本文介绍了纸质档案数字化的技术流程,包括高精度扫描、图像预处理、自动边界检测与切割、文字与图片分离抽取、档案识别与文本提取,以及识别结果的自动保存。通过去噪、增强对比度、校正倾斜等预处理技术,提高图像质量,确保OCR识别的准确性。平台还支持多字体识别、批量处理和结构化存储,实现了高效、准确的档案数字化。具体应用案例显示,该技术在江西省某地质资料档案馆中显著提升了档案管理的效率和质量。
|
2月前
|
机器学习/深度学习 存储 算法
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)(下)
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)
38 0
|
2月前
|
机器学习/深度学习 存储 数据可视化
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)(上)
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)
59 0
|
2月前
|
机器学习/深度学习 算法 API
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
|
4月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
4月前
|
机器学习/深度学习 Ubuntu Linux
【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)
【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)
|
5月前
|
文字识别 API 开发工具
印刷文字识别使用问题之如何提高OCR的识别率
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
4月前
|
机器学习/深度学习 文字识别 算法
百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用
百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用
280 0