1.相关课程
- CS131:从未接触过计算机视觉的
- CS224n:机器学习、深度学习、计算机视觉、自然语言处理等
- CS231a:更全面的计算机视觉课程,专注于3D重建、匹配和机器人视觉等方面
2.课程介绍
2.1 计算机视觉的历史
- 一种很有说服力的理论:视力的出现,促使了物种大爆发,这是动物拥有视觉的开端
- 17世纪文艺复兴时期的暗箱:最早的相机
- 人类对视觉系统的研究:视觉处理是始于视觉世界的简单结构,面向边缘,沿着视觉处理途径的移动,信息也在变化,大脑建立了复杂的视觉信息,直到它可以识别更为复杂的视觉世界
- 计算机视觉的历史是从上世纪60年代初开始
-
最开始的Block World(Larry Roberts, 1963)是计算机视觉的第一篇博士论文,其中视觉世界被简化为简单的几何形状,目的是能够识别它们,重建这些形状是什么
-
1966年,非常有名的MIT暑期项目,目标是:试图有效地使用暑期工作时间来构建视觉系统的重要组成部分,所以最终目标是在那个夏天,解决大部分视觉系统中的问题;五十年过去了,计算机视觉领域已经从那个夏季项目发展到全球数千名研究人员的领域,并且仍然处理一些最根本的问题,虽然我们还没有弄清楚人类视力的原理
-
David Marr 70年代后期撰写了一本非常有影响力的书,内容包括:他是如何理解视觉的、我们应该如何处理计算机视觉、开发甚至如何使计算机识别视觉世界的内容;他在书中指出为了拍摄一副图像并获得视觉世界的最终全面的3D表现,我们必须经历几个过程
- 第一个过程就是“Primal Sketch”,大部分边缘(the edges)、端点(the bars)、虚拟线条(the vritual lines)、曲线(the curves)、边界(the boundaries)等都被其他元素来表示
- 第二个过程是“2.5-D Sketch”(2.5维草图),我们开始将表面、深度信息、层或场景的不连续性拼凑在一起,最终将所有内容放在一起,并在表面和体积图等分层组织了一个3d模型
-
七十年代的另一个重要的开创性的工作组提出了一个问题,我们如何越过简单的块状世界开始识别或表示现实世界的对象—一个被称为广义圆柱体(generalized cylinder),一个被称为图形结构(pictorial structure),他们的基本思想是每个对象都由简单的几何图单位组成
-
从60-80年代,非常多的工作去思考计算机视觉的任务是什么,并且要解决物体识别的问题是非常难,但是所有的工作仅仅停留在简单样本的阶段或者很少的样本,没有产生很大的进展,输出可以在现实世界有用的东西
-
所以人们开始思考,如果目标识别太难了,我们也许首先应该做目标分割,这个任务就是把一张图片中的像素点归类到有意义的区域
-
另一个先于其他计算机视觉问题有进展的是面部识别(face detection),大约在1999-2000年机器学习技术,特别是统计机器学习方法开始加速发展,出现了一些方法:SVM、Boosting、图模型,其中AdaBoost算法进行实时面部识别是其中一项贡献很大的工作(这个时期计算机芯片还是非常慢的,但是仍可以进行实时的面部识别)
-
如何才能够做到更好的目标识别,这是一个可以继续研究的领域,在90年代末到2000年有一个非常有影响力的思想方法:基于特征的目标识别,其中一个影响深远的工作就是:SIFT特征。整体思路就是去匹配整个目标。
-
另一个进展是识别整幅图的场景,其中一个典型的算法是:空间金字塔匹配,背后的思想是:图片里面有各种特征,这些特征可以告诉我们这是哪种场景、到底是风景还是厨房,或者是高速公路等,这个算法从图片的各部分、各像素抽取特征,并把他们放在一起作为一个特征描述符,然后在特征描述符上做一个SVM。另外两个是HOG和DPM
-
随着图片质量的不断提升,21世纪出现了有标注的数据集,其中典型的是PASCAL VOC数据集,在差不多时候,普林斯顿和斯坦福中的一批人开始向这个领域提出一个更困难的问题:我们是否具备了识别真实世界中国每一个物体或者大部分物体的能力,这个问题也是由机器学习中的一个现象驱动:就是大部分机器学习算法,无论是图模型,还是SVM,或者是AdaBoost都很可能会在训练过程中过拟合。部分原因是可视化的数据非常复杂,而真实因为它们太复杂了,我们的模型往往维数比较高,输入是高维的模型,还有一堆参数需要调优,当我们的训练数据量不够时,很快就出现过拟合现象,这样我们就无法很好的泛化,因此就有了两方面的动力,一是我们单纯就是想识别自然世界中的万物,二是要回归机器学习,克服机器学习的瓶颈:过拟合问题,所以开展了一个叫ImageNet的项目。汇集了所有能找到的图片,组建一个尽可能大的数据集,将目标检测领域推到了一个新高度
-
2.2 CS231n overview
- 图像分类问题
- 目标检测
- 图像摘要:给定一张图像需要生成一段句子来描述这副图像
首先介绍ImageNet大赛的历年获胜算法
- 1.2010年Lin et al提出的方法仍然是层次化的,包含很多分层,首先计算一些特征,然后计算局部不变特征、一些池化操作,再经过多层处理,然后最终将结果描述符传递给线性SVM(a linear SVM)
- 2.2012年的七层卷积神经网络AlexNet(取得了突破性的进展,虽然卷积神经网络是在2012年取得了突破,但是不是在2012年发明的,其中一项很重要的基础工作是1998年LeCun et al的工作)
- 3.2014年GoogleNet和VGG网络
- 4.2015年ResNet
- 注:深度学习的发展的两个重要因素:一是计算机计算性能的增长,正是计算机计算性能的提升,深度学习才能发展的如此之快;二是数据。
2.3 课程需要的预备知识
- Python
- 微积分基础,至少会求导(感觉不仅仅是对函数求导,可能还要会对矩阵进行求导)
- 线性代数基础,矩阵、矩阵乘法(不仅仅是会用,还需要对矩阵乘法的本质有了解)
- 计算机图像的基础(大概CS131或231a的水平)
- 机器学习的背景(大概CS229的水平)