转载自:https://zhuanlan.zhihu.com/p/40403014
首发于CS231n深度视觉笔记
CS231n笔记|1 引言
1 引言(Introduction)
历史、概述、重点图像分类
1.1 计算视觉历史
16世纪最早的相机:暗箱
1963年第一篇计算机视觉博士论文:Block world-Larry Roberts, ,视觉世界简化为简单的几何形状,识别它们,重建这些形状。
1996年MIT暑期项目“The Summer Vision Project”目的是构建视觉系统的重要组成部分。
1970s的MIT视觉科学家David Marr编写了《VISION》,内容有计算机视觉的理解、处理开发、识别算法,他提出了视觉表现的阶段,如原始草图的零交叉点,圆点,边缘,条形,末端,虚拟线,组,曲线边界等概念:
1973年后对于如何识别和表示对象,斯坦福科学家提出“广义圆柱体”和“圆形结构”,每个对象都是由简单的几何图形单位组成。
1987年David Lowe尝试用线和边缘来构建识别。
1997年Shi & Malik提出,若识别太难了,就先做目标分割,就是把一张图片的像素点归类到有意义的区域。
2001年此时的机器学习也快速发展了(尤其是统计学习方法),出现了SVM(支持向量机模型)、boosting、图模型等方法。Viola & Jones发表了使用AdaBoost算法进行实时面部检测的论文“Face Detection”,而后2006年富士推出可以实时面部检测的数码相机。
1999年David Lowe发表“SIFT” & Object Recognition,提出SIFT特征匹配,思路是先在目标上确认关键特征,再把这些特征与相似的目标进行匹配,来完成目标识别。从90年代到2000年的思想就是基于特征的目标识别。
2006年Lazebnik, Schmid & Ponce发表“Spatial Pyramid Matching”, 图片里的各种特征描述了不同场景,空间金字塔匹配算法的思想就是从图片的各部分各像素抽取特征,并把他们放在一起作为一个特征描述符,然后在特征描述符上做一个支持向量机。
2005年后来的研究方向梯度直方图和可变形部件模型,目的是将特征放在一起后,如何辨认人体姿态。
21世纪早期,数码相机快速发展,图片质量提高,也真正有了标注的数据集,它能够衡量目标识别的成果。数据集PASCAL Visual Object Challenge有20个类别,每个种类有成千上万张图片,供团队开发算法来和数据测试集做对抗训练,来看检测效果有没有优化。
而后普林斯顿和斯坦福提出怎么识别大部分物体,这个问题也是由机器学习中的一个现象驱动的,机器学习算法在训练过程中很可能会过拟合(只对现有的这些数据完美拟合,但对未知数据不一定完美)。部分原因是可视化的数据非常复杂(像是记住了每道题),从而模型维数比较高,输入是高维的模型,并且还有一堆参数要调优,当我们的训练数据量不够时很快就会产生过拟合现象,这样就无法很好的泛化。
因此有了两方面动力,一是单纯的识别万物,二是克服机器学习的瓶颈-过拟合问题。我们开展了ImageNet项目,从网上下载上亿张图片,用WordNet字典来排序,这个字典有上万个物体类别,不得不用Amazon Mechanical Turk平台来排序、清洗数据、给每张图片打上标签,最终得到的ImageNet有1500万甚至4000万图片分成了22000多类的物体或场景。它将目标检测算法的发展推到了新高度。http://www.image-net.org/
2009年为了推动基准测试的进展,ImageNet开始组织了ImageNet大规模视觉识别竞赛,筛选了更严格的测试集,140万目标图像,有1000种目标类别,分类识别来测试计算机视觉算法。下图为图像分类结果,纵轴为比赛结果的错误率,2012年的错误率下降的非常显著,这一年获头奖的算法是一种卷积神经网络模型。
1.2 课程概述
本课的首要重点就是图像分类,有许多与图像分类许多视觉识别问题,例如物体检测、动作分类、图像字幕。
卷积神经网络(Convolutional Neural Networks,CNN)已成为目标识别的重要工具。2010年的NEC-UIUC仍然用到了层次结构、检测边缘、不变特征。在2012年才有重大突破,多伦多的博士生和导师创造了7层的CNN,称为SuperVision现在叫做AlexNet。2014年谷歌的GoogLeNet和牛津大学的VGG有19层网络。2015年微软亚洲研究院发表了残差网络,有152层。
CNN早在1998年由Yann LeCun团队在贝尔实验室发明的,他们使用CNN进行数字识别,用于识别手写支票和邮件地址,他们的和2012年的CNN非常相似,输入是原始像素,有很多卷积层和下采样以及全连接层。
现在才发展起来是由于计算力的提升,像GPU这种图像处理单元具有超高的并行计算能力,这样人们可以开发出了更大的模型和架构,而在某种情况下只是扩大模型的规模,而依然沿用经典的方法和算法就能有很好的结果,这种增加计算的思想有着很重要的地位。还有数据的创新,现在有了很多标记的数据,我们可以实现更强大的模型。
对视觉智能的探索远远超出了物体识别的范围,如语义分割、知觉分组他们没有给整张图片打上标签,我们要理解的是每个像素。3D重构、动作识别、增强现实、虚拟现实等技术要探索。
如老师Johnson在2015CVPR发表的“Image Retrieval using Scene Graphs”,视觉基因组这个数据集,不仅框出物体还要描述图像,作为整个大图形语义相关的概念,不仅包括对象的身份,还包括对象关系、对象属性、动作等,视觉系统可以做很多事情。
当看到下面的图片时人们可以丰富的描述这个场景,借助于他们的储备知识和过往经验又可以详细描述每个人的身份历程等。这在某种程度上是计算机视觉领域的巅峰,以一种非常丰富而深刻的方式去理解一张图片的故事。我们仍有很长是路要走。
计算机视觉能改善我们的生活。推荐选读教材《Deep Learning》,当然不看它上完这门课也没问题。本课有3个习题集,一个随堂的期中考试,还有最终的课程项目,1到3人一组,确保遵循诚信守则。
教学目标:
深入而详细:理解如何从头开始编写、调试和训练卷积神经网络。
实用性:集中于大规模训练这些网络的实用技术,以及GPU(例如,将涉及分布式优化、CPU与GPU之间的差异等),还可以查看诸如Caffe、TensorFlow和 (Py)Torch等最先进的软件工具的现状。
艺术:大多数材料都是从过去的1到3年的研究世界中获得的。
乐趣:-一些有趣的主题,如图片标题(使用RNN),再如下图左边的DeepDream, 右边的风格迁移NeuralStyle等。
先修条件:
(1)要非常熟悉Python(并使用numpy),本课都用Python编写,如果要阅读理解软件包的源代码C++会有帮助。
(2)大学微积分(如求导),线性代数(了解矩阵)。
(3)有机器学习的背景,大概CS229水平,非常重要核心的机器学习概念会再介绍的,如果事先熟悉这些会对课程有帮助的,我们将制定成本函数,利用导数和梯度下降进行优化。
(4)有计算机图像基础大概是CS132或231a的水平最好,如果没上过课后需要稍微补补功课,不是非常严格。
下一篇CS231n笔记|2 图像分类流程
文章被以下专栏收录
斯坦福CS231n 2017 Spring用于视觉识别的卷积神经网络课程学习笔记,史上最详细。