没法当面听计算机视觉大师授课?现在课堂笔记来了

编者按:还记得「Computer Vision Mini Course」的读者福利吗?被选中的幸运星Robert Li在听课的过程中也做了一份课程观察笔记。PingWest摘录了其中一部分内容供感兴趣的读者阅读。

大家好,我是Robert. 非常幸运被选为PingWest中文网的观察员参与上海依图组织的计算机视觉迷你课程当中。在此我将尽己所能将对这次课程的观察记录下来,适时脑补自己的想法;同时我也将涉及到的外围知识以提供链接和外部资料的形式介绍给PingWest中文网的网友。由于本人姿势水平有限,Alan Yuille讲授的内容又有很多很前沿的内容,所以记录难免有不准确甚至错误的地方,还请大家见谅,同时请当时在场的同学看到后及时指出。另外,为了帮助读者理解,我也提供了一些我自己之前搜集的私货。

让我们开始吧!

我们的主讲嘉宾Alan Yuille是UCLA(加州大学洛杉矶分校)统计系的教授,同时在心理学系,计算机系,精神病学和生物行为学系任客座教授。Alan Yuille还是 UCLA 视觉识别与机器学习中心主任。这位牛人在剑桥拿到数学专业的学士学位之后,师从霍金拿到了理论物理学位(Alan说当年因为觉得不会 quantize gravity而认为自己很笨,同学物理的捂脸走……)。而后,Alan加入MIT的人工智能实验室,哈佛计算机系等,最后来到UCLA。Alan Yuille 获得过2003年的 Marr Prize,这是CV领域的最高奖了。

Alan yuille and Leo Zhu

左侧Alan Yuille,右侧Leo Zhu

上海依图网络科技有限公司的创始人之一 Leo Zhu(朱珑)Alan YuillePhD学生,这位稀有的拥有茂密黑发的前PhD回国之后创立了依图,进行基于计算机视觉的创业,建立了依图。他邀请Alan Yuille来给同学们上课的原因是Alan Yuille代表了计算机视觉领域世界一流水平的研究工作,他的讲授将bridge国内教学和国际先进的差距。

Ok,言归正传。首先介绍一下Alan Yuille课程的主要内容,课程共分四次,周六(20日)和周日(21日)两天,除了周日下午Alan Yuille讲授了一些关于研究生学习、论文阅读和写作方面的内容之外,其他的大部分内容都涵盖在了他的这一门课里:Vision as Bayesian Inference. 想要完整了解Alan Yuille课程内容的同学可以直接访问他的主页。

第一天第一次课开始。周六上午的课程包括了对CV的介绍和Low-level图像处理的一些知识,包括filter和边缘检测(edge detection)等。Alan Yuille认为计算机视觉之所以困难是因为它是一个十分复杂的学科:图像本身具有复杂性;图像同时具有歧义性;解读图像内容是多目标的,这一任务也具有复杂性。在这些问题上,人眼具有巨大的优势,比如我们可以轻易地发现场景中的一些特定物体(段数不够的去玩“找你妹”…)以及根据单帧场景进行逻辑推理,同时把握大局和细节,比如资深球迷可以根据一副足球比赛中的抓拍来判断比赛球员采用的技战术等等。但是有的时候人眼也会犯错误,比如下图

cv1

看这两张图,是不是感觉图中的女士和船都是飞起来的?但实际上这只是人脑的一种错觉而已。

在Alan看来,计算机视觉之所以困难是因为它是一个十分复杂的学科:图像本身具有复杂性;图像同时具有歧义性;解读图像内容是多目标的,这一任务也具有复杂性。

虽然人脑可能会产生上面的错觉,但在分析上述图像时,计算机一般不会犯人犯的错误,因为它还不具有人类所拥有的那么多先验经验,也没有尝试去解读所有情况的,了解所有图片信息的能力——后一描述就是大名鼎鼎的计算机视觉中的图灵测试:计算机可以从图像中获得人可以获得的所有信息。

为了让读者对计算机视觉有个大概的了解,我们先简单说一下计算机视觉三个层次的主要任务:

Low-level:经典图像处理,滤波,去噪,图像加强,边缘检测等等

Middle-level:表面检测,grouping, occlusion等等

High-level:物体识别,场景解读等等。

很多低层次的任务是十分容易有歧义的。比如对于跑在枯草中的狐狸,人可以轻易地判断出来狐狸和草的边界,但是对于计算机而言,就很难判断草和狐狸皮毛的边界,因为二者的颜色和纹理都很像。Alan举了另外一个例子,一个很小的图片,让同学们猜是什么;事实证明那是一条船的很小的一部分,不了解全图没有希望才出来。这便是Local ambiguity in image。想要解决这样的问题,需要求助于上层high-level的操作,比如下层提出多个建议,然后上层再进行判断和分类,接受或者否定下层的建议。

Alan对深层神经网络的理解

神经网络的发展经过了一个十分有趣的历史。从最早的感知机(perceptron)到玻尔兹曼机(Boltzmann machine),再到目前流行的深层卷积神经网络(deep convolutional neural network),神经网络经历了五六十年代,八九十年代和今天三个时代的发展。Alan认为当前研究和几十年前研究最大的的区别是” better machines and better data”。从2006年开始,神经网络的研究开始突破Boltzmann Machine的限制,去除了sideway connection,开始进入“深层“的领域,在学习效果和计算时间上都得到了很大的提升,尤其是GPU计算的兴起,使得很多原来因计算十分耗时而不实用的算法或应用获得了新生。

cv2

上图是一个最简单的含隐含层的神经网络,相比于Boltzmann machine,同一层的节点之间没有直接相连;但是在反向传播的过程中,之前一层的参数会通过后一层的结果而受到影响;间接地,同一层的节点相连了。

神经网络的结构和图形的hierarchical representation(分层表示)很好的结合。Alan说没有人确切的知道动辄十几层的神经网络的中间层的输出是什么,只是笼统地知道它们大概是feature’s feature’s feature’s feature, 也就是特征的特征的特征…训练完成的神经网络输出的是上千维的一个特征向量,对这些向量在高维空间中进行聚类等处理就可以得到我们的分类或者物体识别结果。

非科班同学如何入门

cv3

Alan是一个十分和蔼可亲的人,在讲完学术内容后他还在不厌其烦地回答同学们的问题。我咨询了它对于非计算机科班的同学,如果对这一领域感兴趣应该如何入门。我想这也是很多读者想知道的答案。

Alan了解了我的物理背景之后(其实严格来说Alan本人就是半路出家,不过早了40年),Alan给了我如下三个建议。第一,夯实编程基础;第二,充分利用在线课程,Alan直接拿吴恩达的课程举了例子;第三,参加一些暑期学校。听闻此言我觉得前两点都可以靠一台电脑一根网线解决,第三点难度有些大,还希望能有更多像依图一样的公司能够为学子搭建这样和国际一流学者交流的平台,造福牛人的同时也能造福我这样的小白。

对清华大学2014年特奖候选人施天麟同学的采访

1.你觉得相比最前沿的研究,这次课程的内容大概属于什么层次?

这次课程从计算机视觉的最底层概念(像素,边)讲起,涵盖了中层表示,高层的类别,其中也穿插了用来求解视觉问题的机器学习算法。所以,课程量还是比较大的。课程的有一部分内容是Alan Yuille (讲课的教授)自己提出的概念。例如,课程中讲到了compositional model,递归地表示图片中物体的结构,属于最前沿的研究。

2.你觉得这次课程的形式如何?有没有更好的建议?

课程的形式和大学里教授讲课的方式类似。我觉得改进可以有两点。一是适当地减少课程内容或是增长课时。很多同学觉得两天内接受的知识量巨大,很难消化。二是加强课堂的互动性,让更多的同学问问题,参与讨论。

3.你对PingWest对这一领域感兴趣的读者有何关于学习这一领域知识的建议?

可以利用MOOC学哈。

4.你个人对机器学习和计算机视觉未来的看法和发展是怎样的?

Alan讲到机器学习和计算机视觉本质上依赖的是复杂现象的建模能力。我认为,当计算机越来越强大的时候,我们所希望借助计算机解决的问题也会越来越纷繁复杂。视觉可以说是这一类问题的代表。当然还有其他的诸如生物信息学、经济学中的问题。可以说,未来设计解决这些问题的算法时候,会借助于机器学习中发展的工具,让计算机自动地识别模式、完成建模。

订阅更多文章