以下文章摘录自:
《机器学习观止——核心原理与实践》
京东: 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模型框架。