热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机视觉(CV)发展简史

以下文章摘录自:《机器学习观止——核心原理与实践》京东:https:item.jd.com13166960.html当当:http:

以下文章摘录自:

《机器学习观止——核心原理与实践》

京东: https://item.jd.com/13166960.html

当当:http://product.dangdang.com/29218274.html

(由于博客系统问题,部分公式、图片和格式有可能存在显示问题,请参阅原书了解详情)

 

1.1    CV发展简史

我们首先来了解一下计算机视觉(CV)领域的发展简史。

从动物学家针对化石的研究中,人们发现生物的视觉系统大概起源于5亿4千3百万年(543 million years)前——在那之前,地球上只存活着非常少的一些物种。而之后短短的1000万年间,物种数量却呈现出了爆炸式的增长(也就是“Evolution’s Big Bang”。参见下面所示的Stanford cs231n的课件资料)。虽然人们还无法完全揭晓那一段历史时期内所发生的具体事情,但业界目前一个普遍的观点就是:视觉系统的出现和不断完善迫使不同物种间的竞争加剧,进而极大地缩短了它们的进化时间,最终导致了“Big Bang”现象的出现。

图 ‑ 543million years, B.C.

 

视觉系统对于哺乳动物,特别是人类的重要性是不言而喻的。经过漫长的进化过程,视觉已经成为了我们感知世界最为重要的一个神经系统了。

图 ‑ 人类视觉系统简图(wikipedia)

 

相对于生物视觉系统漫长的进化历程,计算机视觉(computer vision)显然是“非常年轻而且稚嫩”的——因为人们是从上世纪50年代才开始尝试赋予计算机系统这一重要的感知能力。而且这个学科的涉及面比较宽泛,它不光依赖于计算机科学知识,同时还需要我们在生物学、数学、神经科学等多个领域有所狩猎。

图 ‑ 计算机视觉是一门交叉学科

 

探索计算机视觉的道路可以说是非常曲折的,即便到了今天人们也不敢拍着胸脯说已经解决了这个领域的所有问题——甚至恰恰相反,我们认为计算机视觉仍然有很多障碍和瓶颈还未清除完毕。例如对于人类而言非常简单的图像识别任务,对于计算机来讲却困难重重(部分图片引用自stanford提供的材料),典型难点如下所示:

l  典型难点1:光照问题

可以看到,不同光照条件下的物体形态各异,这将大大增加计算机系统的识别难度

l  典型难点2:遮挡问题

遮挡在计算机视觉中也是一个常见的问题。对于人类而言,即便只能看到猫的身体的一部分(比如尾巴、头),他们也能够快速、准确地识别出来。

l  典型难点3:背景干扰

l  典型难点4:姿势形态

等等

 

当然,这并不代表人类在这个领域一无所获。应该说人们在多年的探索过程中,已经取得了不少阶段性的进展了,包括但不限于:

l  50年代:研究生物视觉工作原理

人们总是在探索着他们所处世界中的万事万物——这其中当然包括人类自身。上世纪50年代左右,生物学家们做了很多努力来试图理解动物的视觉系统,其中比较有名的是Hubel和Wiesel的一些研究成果。他们从电生理学(electrophysiology)的角度来分析猫(据说选择猫的原因在于它和人类的大脑比较相近)的视觉皮层系统,从中发现了视觉通路中的信息分层处理机制,并提出了感受野的概念。他们也因此获得了诺贝尔生理学或医学奖。

图 ‑ Hubel和Wiesel的实验示意图

 

l  60年代

严格意义上来讲,计算机视觉是在60年代逐步发展起来的。这个时期还诞生了人类历史上的第一位计算机视觉博士,即Larry Roberts。他在1963年撰写的论文《machine perception of three-dimensional solids》中将物体简化为几何形状(立方体、棱柱体等)来加以识别(参见下面的示意图)。当时人们相信只要提取出物体形状并加以空间关系的描述,那么就可以像“搭积木”般拼接出任何复杂的三维场景。人们的研究热情空前高涨,研究范围遍布角点特征、边缘、颜色、纹理提取以及推理规则建立等很多方面。

图 ‑ Block world

 

随后的1966年,MIT举办了一个名为“Summer Vision project”的活动,与会人员“雄心勃勃”地希望在一个暑假的时间里彻底解决计算机视觉问题。虽然这个活动没能达到预期的目的,但随后几十年人们对于计算机视觉的热情却在持续高涨,其影响范围也蔓延到了全世界

l  70-80年代

MIT的人工智能实验室在这一时期的计算机视觉领域中发挥了相当积极的推动作用。一方面,它于70年代设置了Machine Vision课程;同时AI Lab还吸引了全球很多研究人员参与到了计算机视觉的理论和实践研究中。

其中David Marr教授在计算机视觉理论方面做出了非常多的贡献。他融合了心理学、神经生理学、数学等多门学科,提出了有别于前人的计算机视觉分析理论,并在前后二十年的时间里影响了这一领域的发展。他的主要著作是《Vision: A computational investigation into the human representation and processing of visual information》(由于David在1980年不幸病逝,这本书据说是由其学生归纳总结出来的),书中将视觉识别过程划分为3个阶段,如下图所示:

图 ‑ David Marr所理解的计算机视觉表示

 

l  80年代

上世纪80年代,逻辑学和知识库等理论在人工智能领域占据了主导地位。人们试图建立专家系统来存储先验知识,然后再与实际项目中提取的特征进行规则匹配。这种思想也同样影响了计算机视觉领域,于是诞生了很多这方面的方法。例如David G. Lowe在论文《Three-Dimensional Object Recognition from Single Two-Dimensional Images》中提出了knowledge-based vision的概念。有兴趣的读者可以下载论文了解详情。

图 ‑ Knowledge-based vision

 

l  90年代

此时计算机视觉虽然已经发展了几十年了,但仍然没有得到大规模的应用。很多理论还处于实验室的水平,离商用要求相去甚远。人们逐渐认识到计算机视觉是一个非常难的问题,以往的尝试似乎都过于“复杂”,于是有的学者开始“转向”另一个看上去更简单点的方向——image segmentation。后者的目标在于运用一些图像处理方法将物体分离出来,以此做为图像分类的第一步。

另外,伴随着统计学理论在人工智能中的逐渐“走红”,计算机视觉在90年代也同样经历了这个转折。学者们利用统计学手段来提取描述物体的本质特征,而不是由人工去定义这些规则。这一时期产生的多种基础理论直到现在还有广泛的应用,例如图像搜索引擎

图 ‑ SIFT Descriptor

 

l  本世纪初

随着机器学习的兴起,CV领域开始取得一些实际的应用进展。例如Paul Viola和Michael Johns等人利用Adaboost算法出色完成了人脸的实时检测,并被Fujifilm公司应用到商用产品中;同时SPM、HoG、DPM等经典算法也如“雨后春笋”般涌现了出来

图 ‑ HoG

 

l  2010年之后:CNN大放异彩

大家有幸正在经历人工智能大爆发的这个历史阶段——包括计算机视觉在内的多项人工智能领域取得了长足的进步。从其它章节的学习中,我们知道这主要归功于如下几个原因:

1) 计算机运算能力呈现指数级的增长

2) ImageNet、PASCAL等超大型图片数据库使得深度学习训练成为可能(注:大型图片数据库虽然在2000年后期就已经出现了,但真正大放异彩还是在最近十年),同时,业界一些极具影响力的竞赛项目(例如ILSVRC)激励了全世界范围内的学者们竞相加入,从而催生了一个又一个优秀的深度学习框架

3) 模型算法的不断演进革新

 

本章后续内容中,我们将围绕视觉识别这个任务,有选择性地剖析业界的一些经典的CNN模型框架。


推荐阅读
  • 深入浅出解读奇异值分解,助你轻松掌握核心概念 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
author-avatar
心动心爱_342
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有