您的位置:首页 > 大数据 > 人工智能

应用实例:照片识别 机器学习基础(10)

2016-03-04 21:42 549 查看
照片识别
问题描述与机器学习流水线

滑动窗

获取大量的数据与人工数据
文字识别

语音识别

获取大量数据的讨论

上限分析流程线上的下一步工作是什么
照片识别

人工智能人脸识别

总结
总结主要主题

在一张图片中发现并识别目标、文字、数字是一项具有挑战性的任务。本周将讨论处理该问题的途经与分析如何改善该系统性能。

照片光学字符识别,OCR,Photo optical character recognition。

照片识别

问题描述与(机器学习)流水线

开发一个复杂的机器学习系统,我们需要了解如何配置资源。

Photo OCR 流水线:(包含多个模块)



1) 文本检测



2) 字符分割



3) 字符分类



4) 字符串校正
例如 C1eaning → Cleaning; (1 → l)

滑动窗

滑动窗的高宽比可以用于寻找照片中的行人。



行人的高宽比特征明显,通过分类方法很容易方法;

两个窗体间的距离为步长,或被称为步幅参数(stride parameter);

窗体的大小是可调整的,取较大的窗体并压缩至分类器规格的大小,在进行识别;

分类器:

y=1⇒h×lpixels 有行人照片

y=0⇒h×lpixels 无行人照片

文字识别:

文字检测:(y=1⇒ 文字区域;y=0⇒ 无文字区域)

滑动窗获取有文字的窗体像素

像素扩展将相近的文字窗体合并为块

筛选不像正常文字区域的窗体(可能会漏去一些文字)

字符分割:(y=1⇒ 字符分割区域;y=0⇒ 非字符分割区域)



滑动窗去照片

用窗口照片作为识别对象

确定分割线

字符分类:(y=1,2,…,A,B,…etc⇒ 对应的文字信息)

获取大量的数据与人工数据

“人工数据合成(Artificial data synthesis)”是一种获取大量数据的方法。

人工数据合成:
1.“从无到有”(例如从计算机已有的文字库生成文字)

2. 从少量有标签的训练集扩充为一个大的训练集

数据的合成一般是基于一个低偏差(高方差/需要大量训练集)的机器学习系统(分类器)。针对2个典型应用文字识别语音识别,我们介绍一些人工数据合成的详细内容。

文字识别

“从无到有”生成字符训练集的方法



从已有训练集扩充为一个大的训练集



语音识别

训练集的合成方法:
原声音 + 噪声(不同)= 新的声音

获取大量数据的讨论

以后的分类器是一个低偏差的,通过增加训练集有助于提高分类器性能(降低方差),绘制学习曲线是一种有效的方法。

获取多于 10 倍已有数据的工作量(“头脑风暴”来讨论想法),合成的方法有:

1 人工数据合成

2 手工收集与标记

3 众包“Crowd source”(找人帮你做)

上限分析:流程线上的下一步工作是什么

上限分析可以告诉项目团队,流水线的哪一部分最值得花时间。接下来,我们将通过照片识别与人脸识别 2个应用讲解 上限分析

照片识别



上限分析用于调整系统的整体性能。



值得注意的事,要使某一模块的准确率达到 100%,可以通过人工的方法替代该模块的工作,使之达到 100% 的准确率。

人工智能:人脸识别

我们以简单的人脸识别应用为例,讨论它的上限分析。





总结

总结:主要主题

监督学习:线性回归、逻辑回归、神经网络、支持向量机;

无监督学习:K 均值、主成分分析、异常检测;

特殊的应用:推荐系统、大规模机器学习(并行、映射化简);

开发一个机器学习系统的建议:偏差/方差分析、正规化,决定下一步工作的学习算法评估、学习曲线、误差分析、上限分析。

到了这里,机器学习的基础更新到此为止了,接下来将是进入实战阶段,网上有很多关于数据挖掘与机器学习相关的竞赛,例如 kaggle;同时,有一篇博文中提到的学习轨迹感觉挺不错,我想沿着它走走。最后,我的 MATLAB 也许会止步于此,机器学习方向上,我会开始接触 Python,或者 JAVA,当然,MATLAB 永远是一款数值计算强大的软件,I like it so much.

相关链接:

kaggle:数据挖掘竞赛

学习轨迹:“大数据文摘”推荐的博文

Python:sklearn 是机器学习的宝库呀

JAVA:Weka,Java 语言开发机器学习系统的利器

MATLAB:强大的数值分析软件,好像已经能和硬件结果了,还包含”统计与机器学习工具箱”(Statistics and Machine Learning Toolbox)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息