【吴恩达机器学习笔记】十六、应用实例:图片文字识别

本文涉及的产品
教育场景识别,教育场景识别 200次/月
文档理解,结构化解析 100页
自定义KV模板,自定义KV模板 500次/账号
简介: 【吴恩达机器学习笔记】十六、应用实例:图片文字识别

十六、应用实例:图片文字识别


1. 问题描述和流程图

我们希望可以通过扫描图片从提取关键字,这样当我们输入关键字时机器就能帮我们正确找到对应的照片,而不用我们煞费心思去找一些图片,接下来我们就来讲讲**照片OCR流水线(pipeline)**的处理。

a2e535bf30e743c08a3ddd5780b07b5e.png



我们首先会对图片中含有文字的地方进行检测并提取出来,然后自动将其分割成不同字符并进行分类,正如下面流程图:

dbd530cefc0e42b99e585c3cd9645bc2.png



2. 滑动窗口

在讲字符检测的具体方法之前,我们先看看是如何对行人进行检测的。

d5d26b6e58a440a1a474ec509f930120.png



比如我们会从数据集中收集一些82×36的照片即正负样本,其中有包含行人的即y=1,其中有不包括行人的即y=0,然后给机器学习,接下来我们就可以利用滑动窗口对图片进行检测了。

d506dc712af1479d9c50190beb5f45eb.png



我们会用一个82×36的窗口在图片上滑动,每次滑动的距离就是步长,每次会将窗口中的信息传递给分类器去判断是1还是0,对整张图片检测完后,会换一个更大的窗口再进行滑动检测。这里要注意的是,使用更大的窗口时,要将窗口中的图片转化成82×36的再传入分类器,这样就能找出所有行人了。

e07c47c5858b4d69b984f8279befcdd3.png



所以,我们就可以用检测行人的方法,去检测字符。



90a8d65e9afb49bbad3ff66f0d65e2f2.png

我们同样从数据集中找一些正负样本,然后让机器进行学习。

e7555f6a70a04f388693e100f1efa7eb.png



我们在检测文字时同样也用到滑动窗口对图片进行扫描,然后得到上面黑白的图像,区域越白说明这个地方有字符的概率越大。最后在此基础上,使用放大算子,将有白色的地方周围一部分也变为白色,然后舍弃那些白色区域长宽比例与文字不配的地方,将没舍弃的地方框起来即可。接下来,我们再进行字符的分割。


35cf16df90634f52b0cef273faa5d199.png


还是同样的方法,从数据集中收集正负样本让机器学习,然后在我们上面框出来的字符中再次进行扫描,将字符分割出来。要注意的是,这里的滑动窗口是一维的。


3. 获取大量数据和人工数据

我们前面知道,一个最可靠去得到高性能机器学习系统的方法是使用一个低偏差高方差的机器学习算法,并且使用庞大的数据集去训练它,但是我们要从哪得到这么多的数据呢,这就要引入人工数据合成概念了。



cb8cb63c002048448d5b4c448289b795.png

其中一种方法是,网上有庞大的各种各样的字体库,然后可以从这些字体中剪切一小块字体出来,粘贴到不同的背景上,最终得到一个人工合成的数据集。


1f600ac40dc940e9b1d6eb515d93ff8d.png


另一种方法是,可以从真实的样本中演变出更多的样本,例如可以对其进行图像拉伸等失真操作,得到更多的数据。这种操作也可以用于语音识别应用中,我们可以将一段语音通过失真合成数据例如加一些噪音之类的,从而扩充样本。


153b2ab388d04460b0f03a86a84a7325.png


当然,进行失真操作时,也要选取有效的失真,比如扭曲图像,但是像上图下面那个通过增加高斯噪声扩充样本的方法不可取,只是改变了每个像素的亮度,跟原来的样本几乎没什么两样。


学完上述内容,你应该静下心好好想想,如果我要获得我现在数据十倍的数据量,我需要花费多少时间,有时候你自己思考一会或者和你的小组成员讨论一会后都会发现,其实所花费的时间并不多,可能就几天时间,但是这样做却能让你的算法性能提高很多。当然,如果你觉得自己做这些工作浪费时间的话,也可以去网上找一些廉价但质量高的网站去帮你进行一些标签标注工作。


4. 上限分析:哪部分管道的接下去做

在你日后的研究中,不希望出现的是当你花了几周或几月之后,才发现某些模块对你的算法性能提升没什么帮助,所以接下来我将为你介绍上限分析(ceiling analysis),指导你哪些模块是值得去花时间研究的。


0abc52c4dbeb4dcc8f97ed141bdfd121.png


我们来看看上面这个例子,如果让我们去决定每个部分该投入的精力是多少,这时候就可以引入一个数值标准,例如图像识别的准确率。


假设正常通过机器完成识别的整个系统准确率为72%,接下来我对每个部分接连进行人工处理,先人为选择文本框,再人为分割字符,最后再人为的判断字符,这样我们就分别得到89%、90%和100%的准确率。


然后,我们就可以进行上限分析,每个部分提升的性能有多少,如果提升的高例如人为处理文本框能提升17%的性能,我可以花更多精力在这部分上面,如果提升的少我就不用花太多精力再这上面了。


接下来,我们再看一个人脸识别的例子。

4ca1f1645802413d8a42a2e7d456bef1.png



我们首先将图片进行去背景处理,然后利用滑动窗口检测到人脸,再进行眼睛、鼻子和嘴巴的分割,再将这些得到的信息归总于逻辑回归分类器,得到最终的标签。


a0905ac535434457aaff8889709d0311.png


然后我们同样的对每个模块接连进行人工处理,得到不同的准确率,再通过上限分析,得到哪些模块值得我去花时间,例如上面的人脸处理,提升了5.9%,哪些不值得去花时间,例如去除背景,只提升了0.1%。



目录
相关文章
|
6天前
|
机器学习/深度学习 人工智能 物联网
通义灵码在人工智能与机器学习领域的应用
通义灵码不仅在物联网领域表现出色,还在人工智能、机器学习、金融、医疗和教育等领域展现出广泛应用前景。本文探讨了其在这些领域的具体应用,如模型训练、风险评估、医疗影像诊断等,并总结了其提高开发效率、降低门槛、促进合作和推动创新的优势。
通义灵码在人工智能与机器学习领域的应用
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
探索机器学习在图像识别中的创新应用
本文深入分析了机器学习技术在图像识别领域的最新进展,探讨了深度学习算法如何推动图像处理技术的突破。通过具体案例分析,揭示了机器学习模型在提高图像识别准确率、效率及应用场景拓展方面的潜力。文章旨在为读者提供一个全面的视角,了解当前机器学习在图像识别领域的创新应用和未来发展趋势。
|
1月前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
68 11
|
16天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
42 4
|
17天前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
46 5
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
61 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
|
1月前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
67 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
【机器学习】大模型驱动下的医疗诊断应用
摘要: 随着科技的不断发展,机器学习在医疗领域的应用日益广泛。特别是在大模型的驱动下,机器学习为医疗诊断带来了革命性的变化。本文详细探讨了机器学习在医疗诊断中的应用,包括疾病预测、图像识别、基因分析等方面,并结合实际案例进行分析。同时,还展示了部分相关的代码示例,以更好地理解其工作原理。
50 3
【机器学习】大模型驱动下的医疗诊断应用
|
24天前
|
机器学习/深度学习 数据采集 人工智能
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
50 3