引言
本系列是斯坦福大学李飞飞教授团队的公开课cs231n课程。本文记录的内容主要结合2017年的公开课以及2023年春季的最新ppt的一些个人理解(由于lecture_17和lecture_18没有ppt,因此不做介绍),仅供参考。
课程大体上分为以下4个部分:
- 课程和计算机视觉简史的介绍(lecture_1)
- 深度学习基础(lecture_2—lecture_4),包含一些使用线性分类器的图像分类算法,如k-最近邻算法(KNN),SVM等以及soft损失函数;正则化与优化算法;神经网络和反向传播。
- 感知和理解视觉世界(Perceiving and Understanding the Visual World, lecture_5—lecture_12): 主要内容为用卷积网络进行图像分类,卷积神经网络的结构,训练一个卷积神经网络,循环神经网络(RNN)、注意力机制和Transformer、视频理解(包含3D卷积网络和视频分类等)、目标检测和图像分割以及一些可视化操作等。
- 生成和交互视觉智能(Generative and Interactive Visual Intelligence):主要内容为自监督学习,生成模型,机器学习以及3D视觉等。
计算机视觉简史
视觉的历史大致可以追溯到很多年前,大约在5.3-5.4亿年前,那时候还是仅有的几个物种,在海洋中漂浮着。直到一千万年前,突然间有着许多的物种出现,这个现象称之为物种大爆发。后来,一位古生物学家,安德鲁·帕克发现,在那个阶段,动物开始形成了眼睛,可以看到其他东西。从此它们可以追捕食物,而相应的,有些动物也就得逃避追捕者,这个时候视觉的演变就已经开始了,因为只有这样,才能适应生存。
如今,我们所知道的最早的相机是16世纪文艺复兴时期出现的相机—暗箱,它是一台照相机,基于针孔相机的理论。它与早期动物的眼睛中有一个可以聚光的瞳孔非常相似。
在动物视觉和人类视觉中最有启发性的研究是Hube和Wiesel在50年代和60年代里使用电生理学完成的工作,他们想知道的是,处理视觉的机制是什么。因此,在哺乳类动物中,他们选择了猫来做实验,因为从视觉处理的角度来看,它们的大脑类似于人的大脑。他们在猫的后脑上面贴了一些电极,尤其是视觉皮层区域,主要是想看看是什么刺激让猫大脑初级视觉皮层中背部的神经元兴奋地做出反应。
之后,1963年,由Larry Roberts发行的block world,可能是第一位计算机视觉相关的博士论文。他将视觉世界简化为简单的几何形状,目的是能识别它们,并重建它们。
1966年,麻省理工的The Summer Vision Project试图构建视觉系统的重要组成部分。而该校的大卫·马尔(David Marr),编写了一本书《VISION》,书中的内容主要是关于视觉是什么、如何进行使计算机能够识别视觉世界的相关计算机视觉研究以及算法的研发。他提出了视觉最终变成3D物体表现需要经过primal sketch(边缘、条形、末端、虚拟线等组成)、2 ½-D Sketch(将局部表面定向以及深度和表面定向中的不连续拼接在一起)以及3 D Model Representation。
另一个非常重要的开创性工作是在70年代。那时候人们开始问:我们如何超越简单的块世界并开始识别或者表示现实的物体。为了解决这个问题,斯坦福和SRI研究生两组科学家提出了「广义圆柱体」和「圆形结构」。他们的基本思想都为:每个对象都由简单的几何组成。
之后,80年代的David Lowe开始尝试通过线和边来重新构建和识别物体。
此后,相关工作开始陷入寒冬。此前的一些工作仅止于例子或者一些例子,为了解决这个问题,Shi and Malik 提出:如果识别太过困难,那么可以先将其进行分割,这是一种将像素分组到有意义区域的任务,也许我们不知道组合在一起的像素称为人,但是我们可以从背景中提取出属于该人的所有像素,这就是图像分割。
1999 年, David Lowe 发表了 “SIFT” & Object Recognition文章,提出 基于SIFT的特征匹配。它首先在目标上确认关键特征,再把这些特征与相似的目标进行匹配,来完成目标识别。
1999年到2000年的机器学习技术开始蓬勃发展,尤其是统计机器学习技巧。出现了诸如支持向量机(SVM),boosting,图模型等。此时做出贡献最多的一项工作是Viola & Jones 使用 AdaBoost 算法进行实时人脸检测。这是第一个将机器学习成功应用在视觉上的算法之一。 1957年,Rosenblatt提出感知机,它是一种二分类的线性模型,是神经网络和支持向量机的基础。然而,在1969年,Minsky and Papert提出,感知机因为是线性模型,所以不能表示复杂的函数,如异或函数。这导致了机器学习领域有了很大的破灭。直到1980年,新的认知机(即神经网络初始)的提出,以及1986年,反向传播算法的提出,成功的训练了多层感知机。自此,神经网络开始获得更多的关注。
1998年,LeCun成功通过卷积神经网络来训练手写数字识别体,并被NEC部署在商业系统中,处理手写支票。
2000年之后,人们开始训练越来越深的神经网络,这在当时还不是一个主流的课题,同时,也没有足够的数据集去训练。因此,李飞飞团队组建了ImageNet数据集(此数据集的介绍详细情况可自查)。之后,神经网络开始广泛应用。
深度学习的发展与应用
从2012年到现在 ,深度学习开始蓬勃发展,每年发的论文数量也越来越多,这表面越来越多的科研人员开始关注这一块。
此外,深度学习也用在视觉的各类领域,如图像分类、图像检索、目标检测、图像分割、视频分类、动作识别、姿态识别、玩 Atari 游戏等。
CS231n课程情况
具体看文章开头引言部分。
注
文中所有图片来自于cs231n公开课的网站之中。