本节主讲人:Justin Johnson
Notes
本节主讲人:Justin Johnson,2017年的第三次CS231N的课程。 CS231N:Convolutional Neural Networks for Visual Recongnition.
CS231N是关于计算机视觉的课程,那么什么是计算机视觉呢?计算机视觉(顾名思义)就是针对视觉数据的研究;受益于各种视觉传感器,过去几年产生了非常多的的视觉数据;在思科2015年的研究中,互联网中80%流量是视频,这些实际上就是视觉数据,所以接下来的关键是如何用算法来开发这些可以利用和理解的数据。视觉数据存在的问题其很难被理解,所以其有时也会被成为互联网中的“暗物质”。例外有一个来自YOUTUBE的例子,大概每秒就有五小时的视频内容被传到youtube,所以很重要就是如何开发算法处理这些海量的视觉数据。
计算机视觉是一个跨学科的领域,其涉及到科学和工程技术的很多不同的领域;比如:Physics(物理)中的光学和成像原理,因为它牵扯到图像是怎样构成的;还有Biology(生物学)和Psychology(心理学),了解生理层面 动物大脑如何看到并处理视觉信息;当然还涉及到计算机科学、数学和工程学的技术,其构建实现计算机视觉算法的计算机系统。
上面是这门课和斯坦福其他课程的关系,建议有CS131深度学习的基础,本门课主要集中关注计算机视觉以及研究计算机视觉的出发点。CS231a是更全面的计算机视觉课程,其专注于3D重建、匹配和机器人视觉等方面。CS231N主要关注围绕神经网络的相关算法,特别是CNN。
下面是lifeifei录制的视频,讲解关于计算机视觉的历史:
这部分主要讲两个方面的内容:一是简要介绍一下计算机视觉的发展历程,二是讲解一下CS231N这门课的整体概况。先从历史讲起,谈一谈视觉从何而来,以及视觉现在发展到哪一步了。
物种大爆炸的一种理论是因为动物进化出眼睛,从而很快的演化;现在视觉是智慧动物最重要的感知系统,在人类大脑皮层中几乎有一半的神经元和视觉有关;前面讲的是生物的视觉,那么人类如何让机器获得视觉呢?下面简述了照相机的历史:
这是目前已知的最早的相机,17世纪文艺复兴时期,针孔成像原理。
同时,生物学家也开始研究视觉原理;其中最有影响力启发了计算机视觉的一项研究是:五六十年代使用店生物学的研究;他们关心哺乳动物的视觉处理机制是怎样的,他们选择了大脑视觉处理机制与人类似的猫进行研究;他们发现:视觉处理是始于视觉世界的简单结构,面向边缘,沿着视觉处理途径的移动信息也在变化,大脑构建更加复杂的处理机制直到它可以识别更为复杂的视觉世界。
计算机视觉的历史是从60年代开始的,Block world被认为是第一篇计算机视觉的博士论文,其中视觉世界被简化为简单的几何形状,目的是识别和重建这些形状。
1966年MIT暑期项目:构建视觉系统。
MIT David Marr70年代的书,关于“如何理解视觉,如何处理计算机视觉?”
David的书中提到:原始草图(包含大部分边缘、端点和线条)、2.5D的草图(表面、深度信息层和场景) 到之后的 3D 模型;这是一种非常理想化的过程,也是一种非常直观的过程考虑如何构建视觉信息。
上面是 广义圆柱体 和图形结构;如何用简单的块状表示或识别现实的物体。他们的基本思想:每个物体都由简单的几何图单位组成,这不就是我的世界吗/==。
通过边缘和线构建物体表示。
如果目标检测很难做,那就先做目标分割:这个任务就是把一张图片上的像素点归类到有意义的区域。(2D图像的聚类)
ML的方法实现人脸检测,上述是AdaBoost算法的效果。2000年的时候机器学习非常火热。
基于特征的目标检测,提取特征中表现性和不变性的部分。
空间金字塔匹配。
HoG:方向梯度直方图
PASCAL数据集只有20类。另一方面,随着时间的推移,图像质量越来越好。
大部分机器学习算法都很可能在训练过程中过拟合,部分原因是可视化的数据非常复杂,正因为其太复杂,所以我们的模型往往维数比较高,即输入是高维的模型,则还有一堆参数要调优;当我们的训练数据不够时,很快就会出现过拟合,ImageNet就是为了解决这个问题,整个项目花了三年;ImageNet利用WordNet字典进行排序。
2012年错误率下降的比较多时因为CNN的出现(AlexNet),人类的标准是5.1%,2010是林元庆。
图像分类的Input:Image,Output:从固定类别中选出所属的类别。
本节课介绍的目标检测和图像摘要生成都是建立在图像分类的基础上。
目标检测需要画出Boundingboxes(即标注出位置),图像分类只需要输出类别即可。图像内容摘要:给一幅图,需要生成一段句子描述这副图像。
2010年的获胜方法还是层次化的,它包含很多分层:首先计算特征,再计算局部不变特征,进行一些pooling操作,再经过分层处理,然后最终将结果的描述符传递给SVM。
2012是7层的AlexNet获胜;随后网络变得越来越深,2014年的GoogleNet和VGG有19层,2015年的ResNet有152层。
CNN并不是再2012年发明出来的。
上面两个框架非常相似,这个框架有很有卷积层和下采样以及全连接层;CNN重现的原因有:1计算能力,2标签数据(PANSCL,ImageNet)
语义分割:精准到每个像素。
这个数据集叫做视觉基因组。
上图是lifeifei在加州理工做PhD的工作,从图像到文字。
现在的计算机视觉算法要真正理解这个复杂的场景还有很长路要走!
Andrej Karpathy大佬退休了hhh,笔者时刻的前几天的新闻是他刚从特斯拉离任。
参考资料是花书,
真正理解深层算法原理,比如正向传播和反向传播,训练和测试。
Image Captioning:图像内容摘要;风格迁移。
很多包的软件源码用的还是C/C++。