【将门创投】商汤徐立:计算机视觉的完整链条,从成像到早期视觉再到识别理解
以下内容整理自4月20日由将门主办的“计算机视觉”主题技术专家微信群分享嘉宾实录。
分享嘉宾:SenseTime(商汤科技)CEO 徐立。
300多位来自谷歌、Facebook、微软、Nvidia、滴滴等公司的技术人士、以及MIT、Stanford、CMU、清华、北大等高校的计算机系优秀学生听取了本次分享。
期待你的加入!参与方法请见文章末尾的介绍。
我是从03年开始就接触视觉这个领域,也就是从本科三年级开始做这个方向,到现在十几年了,所以我对计算机视觉的整个链条,从成像(Imaging)到早期视觉(Early Vision)以及识别(Recognition)都有些涉猎。
我感觉现在业界比较热的或者最近大家讲的计算机视觉的内容,只是视觉方面的很小的一部分。计算机视觉的整个范畴其实更大更美一些。从传统CV的内容来看,大致可分为:
一.成像(Imaging)。从视觉整个链条上来说,最早的部分讲的是相机的成像原理,以及从它延伸出来的更多的一些美妙的应用。按照人的视觉系统,可以理解为对应的人眼睛的能力。 第一层次可以归结为看的能力(SEEING)。这些算法帮助延伸人眼的能力,使得人眼可以在某种程度上有所突破,是计算机视觉的输入。
二.早期视觉(Early Vision)。这个词我觉得也比较有意思。为什么称之为Early Vision呢?它解释是反映人脑视觉感知里面中间的这一层,比较早期的视觉感知,实际上大家可以理解为视觉系统所生成的中间结果,其实并没有什么X用(-_-b)。它是一个对于视觉场景来说的一些中间结果。这些结果必须得存在,但是又没有直接带来我们所谓的理解和识别,所以做视觉的人就形成了“Early Vision”这么一个中间的形态。Early vision的内容主要包含图象分割、边缘求取,运动和深度的估计这些方面。
Early Vision做的事情其实是我们看不到的部分,比如说物体的边缘、深度、场景以及分割的形态,并不是眼睛能够直接能看到的,我理解这是第二个层次,感知(PERCEIVING)的部分这个层次带来了一些中间的一些状态和结果,同样它可以影响到我们后面很多的视觉应用。
三.识别(Recognition)。这部分是现在业界很火的内容。对应人的理解(UNDERSTANDING)。过去数年中人脸识别、物体识别,以及从各个图象整体进行识别,包括最近相对来说比较火的图象和文字的结合(image captioning),这些应用其实都是属于我们认为第三部分。
另有一种比较笼统的分类是把Imaging 和Early Vision部分都称为Low-level vision,对应的Recognition部分就是High-level vision。
计算机视觉这门应用其实它是很美的,我认为本身计算机视觉不能作为一个单独的学科来看,因为它并不像数学的某个领域有一套统一的理论,它是为了解决一个个特殊的问题,它是一系列的应用学科集合,只是它讨论的主题讲的是我们眼睛所能看到的、感知到的,包括和视觉输入相关的理解,和视觉相关的内容。所以我并不认为“计算机视觉”这个词,或者说这块的内容是一个理论体系很完整的一门学科。但我自己去加入这个领域完全是因为我觉得计算机视觉有很多很漂亮的内容,它其实是一个很美的研究方向。
我稍微讲一下我当时选视觉的一个原因,我在上交的时候也有很多很尊敬的老师,包括过几天要分享的马利庄老师。我在大三的时候选毕业设计的时候做的相关内容叫自然语言处理(人工智能的另一个分支),但我总觉得文字上的变换,在那个点没有大量的突破性、爆发性的应用。第二它并没有引发我自己内心的认同感,很多结果都只是以字对字的,并没有一些特别满足的内容。所以当时在选方向的时候,我就做了计算机视觉方面的选题,加入戚飞虎教授的视觉实验室(CVLAB),当时做的是自然场景下的文字检测和识别。
我相信大家如果做计算机视觉会有一个感觉,如果在处理视频、图象或者各种内容的时候,当你把这些内容处理完,有一个直观的、对应的视觉结果的时候,你就会觉得这个应用会带来一种满足感。我进入这个行业是因为视觉很美,从而才开始接触了各种各样的视觉方面的一些应用,只不过在现在工业界的讨论,忽略了视觉的美的因素。我见了很多工业界的朋友,或者一些合作伙伴,其实很少真正从视觉中这几个领域、方向来探讨我们现在的视觉技术的发展,更多把视觉当成一个统一的学科名词。其实忽略了它的精髓。
中间分享一个故事,我和我博士导师(贾佳亚教授)的导师(CK)去希腊开会的时候他指着一个学者问我是否认识,我想在这个领域出名的老年学者特别多,并不认识。他说这是他导师的导师。也就是我导师的导师的导师的导师,我立马有种学术圈不好混的感觉,因为从辈份上来说我可能到处碰到师叔,太师叔……所以还是先进工业界吧(LOL)。
接下我就讲一下从我理解的计算机视觉三个方向,来看看我们在行业当中有什么样的落地。
成像(Imaging)
成像其实是和相机的镜头、人眼的构成有非常大的关系,这块的内容最早是从模拟相机原理开始。解决怎么样把拍摄照片的质量进行提升,包括我要去除一些相机带来的畸变,分辨率问题,把相机的一些噪声、各种复杂的相机成像的元素带来的损失进行一些复原。
在我们这个行业的前10年,整个视觉在工业界并不是那么火,不像现在的状态,现在的这个行业确实到了很热的阶段,有很多工业界的应用。但是在十年前我们的视觉通常会被大部分的人认为并没有到一个真正工业成熟的阶段,它的几个原因:
原因一:我们整个的视觉基础都是建在统计学习推理的这套逻辑之上,这套逻辑通常它会依赖于对于世界的先验假设,这类假如如果做的好,通常带来一个新的突破和变化,但是如果做的不好的话,在真实世界当中的应用就会产生问题。
为什么要用这些统计学习推理的框架去做这样的视觉问题,有一个很重要的点就是,当时的数据其实并没有达到一定足够的量,所以我们在十几年前研究很多的视觉问题,都是在一些小数据集问题,先验变得尤为重要。其中有一个相对来说对数据量的依赖小一些,或者对这方面不是那么关键的一个方向,就是成像(Imaging)这块。
这里我想讲我另外的一个观点,我认为什么时候是真正地可以用做技术创业或者技术带来工业界颠覆性变化——就是一个技术方向它既是学术的热点又是工业的热点。因为只有这两个热点都同时具备的时候,这个技术方向才能真正地作为一个使能者,工业级的应用能在先进学术成果催化下行程颠覆性突破。
如果它单纯是一个学术热点的话,发展只是学术上的一些理论,一些数学模型演进,在实际的工业场景当中的应用它可能并没有带来实质性变化。反之,如果单是工业热点的话,它也会有另外的问题,可能工业界觉得这个技术的变现以及它商业的前途会很好,但是学术认为它已经不是学术最前沿的东西,那么它的技术迭代就不会有这么快,这样的话想要以技术去做创业或者用技术去做改变的话比较难,因为大公司或者巨头会有更多的资源和应用场景,它用已经成熟的技术就能够完成同样的事情。
为什么讲到成像这块我会有这个感触呢?因为在前十年当中我们的视觉并不是工业热点和学术热点的结合点,反之,有另外一个行业,其实是满足了工业热点和学术热点结合的趋势,那就是我们称之为计算机图形学(Computer Graphics)。
这个行业当时像SIGGRAPH这样一些顶级会议有一些比较特殊的现象,就是不到100篇的文章,但是会有2-3万的人去参加。而这些人都是来自于工业界的。原因也很简单,当时任何一个新兴的图形学技术如渲染技术能够取得一定的突破的话,就会带来一些电影行业的突破,以及一些实际上商业的价值,所以在当时那个行业其实是非常地有活力。
我们在做视觉成像或者图象的增强、变化当中,其实是和图形这块有一定交集,叫做计算成像学(Computational Photography),就是在做Imaging成像的时候,可以通过一些计算的辅助,使得成像质量更好。所以那个时候我们在做研究的时候,会去蹭图形学的会议。
最近的趋势在视觉方面的工业热点和学术热点渐渐地match,当然也是因为大家都众所周知的深度学习突破的原因,在视觉领域取得了重大的突破,同时形成了真正行业级的应用,所以现在真的是做视觉的一个黄金时代。
回过头来说,做我们的成像和Imaging是解决什么样的问题?是解决让大家看清,甚至是说超越人眼睛视觉的这么一个问题,我给大家看一张图片。
这个例子是为了说明我们在做图像的增强或者成像的处理,解决的是什么样的问题——即我们想要通过算法的计算,使得这张黑的照片能够被大家看清。在视觉做这件事情的时候其实你就会很享受,你就可以把一些本身看不见的东西变得很漂亮,可以真正呈现他的内容。
另一个例子是这张明信片,拍摄过程中因为光线不好等问题会存在手抖的现象,看不清上面的文字。同样我们视觉解决的问题就是从这些模糊的照片当中恢复出原来的内容(单张照片)。所以我想说视觉成像部分在很大的一个程度上,它是帮人眼做延伸,使得人能够看清本身看不清的内容。恢复的结果虽然不能说是一张很漂亮的图片,但是它确实是可以能够把上面的一些结构都恢复的比较清楚。
当我第一次把一张非常模糊的照片去恢复出来的时候,其实我也很兴奋,觉得视觉这样的东西,其实带来的不光是说解决数学上的问题,更多的是带来感官上的刺激。
再给大家分享一个例子,这也是当时我摆在桌面上的几个小玩具,通过算法来恢复出来的,比如有意思的是这类恢复除了可以把清晰的照片能够得到之外,它还可以得到下面的东西(右图),我们称之为“核图像”,它可以反映出来相机振动轨迹,也就是说相机是通过这张核图像的轨迹振动之后,形成了上面的这张模糊照片(左图)。
下面左边这张是北京的一张雾霾照片,理论上如果我们想要得到的会是一张比较清晰的照片,这也是我们计算机视觉的范畴——“去雾霾”。开始我的观点是,计算机视觉它不是一套非常完整地体系型的学派,但是它里面诸多的诸多应用本身(包括我说的暗光增强、去模糊、去雾霾),都会让人觉得是一个完整的应用体系,有一个特殊的数学问题去描述它,然后大家就会觉得比较有意思。
右边这张是我们通过算法把上面这张照片进行一定的恢复之后形成的照片,大家还可以见到微弱的蓝天。现在这个算法在微博相机里面已经被嵌入使用了,如果说你用微博相机在北京、在国内的一些城市拍照的话,其实都会得到一个比较好的效果,这样再发微信、发微博,我相信政府都会感谢我们,因为发出来的照片都是蓝天白云。所以蓝天白云也是可以通过算法合成的。
当然视觉不光是说做成真实的复原,它其实可以生成更多的我们称之为更浪漫的内容(Non-photo Realistic),也是通过计算来完成。比如说刚刚那张雾霾的照片,我们可以生成像是油彩画的一样结果。
下面那张雾霾可能比较难一些,因为场景会比较复杂一些,不可能把带深度的雾霾完全去除,如果去除不了的情况下,我们觉得不妨可以生成更有意思的艺术照片,这也是我觉得视觉另外一个美妙的地方,就是它可以通过计算来形成一些让人觉得有美感的内容。
早期视觉(Early Vision)
刚才说这个词可能是做计算机视觉的人忽悠出来的,因为计算机视觉会有一些大部分的叫“中间结果”,你生成图象的分割,生成一些边缘,生成一些运动矢量,这些东西其实并没有什么直接用途,而这样的一些中间结果同时也会带来很多的学术上新的问题,所以就会生成这么一个中间状态,套上一个人类视觉感知早期过程的解释。
举一个有意思的例子。这是一个很传统的问题,我们称之为“光流场”或者是运动估计。就是说我有两张图,或者我一个视频中的很多帧,我要获得这个视频当中的任何一个点的运动,运动本身是稠密场,所以它是可以用一个颜色的图来表示出来的。颜色越深的就表明运动得越大,颜色代表了它的方向,比如红色可能是代表了某一个往右的方向,所以整张颜色图就能够恢复出来真实的运动。
这就是早期视觉的一个经典的问题。大家可以看出来,即使把运动恢复得非常准确、非常到位,但后面还是要带上一些研究课题,才能使它能够转换成真实的应用性的价值。所以我们在做这方面研究的时候,一个重点就是怎么样真正地用这些结果,从而生成有价值的应用。
实际上我觉得我做了Optical Flow(光流)这么多年,有很长的一段时间曾在Middlebury的测试库上排名第一,我的光流应该也是最早OpenCV考虑收录进去的一个flow算法之一。但我一直在纠结的是,怎么样用这种中间的结果去得到更好的应用,至今来说觉得这都是一个比较难回答的问题。
所以在早期视觉的很多问题就是出现一个尴尬状态:第一,早期视觉的问题不能做到非常地精准,肯定会有一些缺陷(图像分割就是一个例子),但是早期视觉的问题和直接的应用结果又不能完全挂钩。后续应用直接依赖于早期视觉结果直接影响系统稳定性。现在考虑端到端的训练方法是一种解决方案。
其中有一块可能算是落地比较好的就是深度计算,通过单张图加结构光也好,通过我们称之为TOF扫描也好。或者通过两张图算Stereo Matching(立体匹配)也好,这个是我们能够在一定范围内看到有比较多的应用,我们看到Xbox的Kinect,以及英特尔的RealSense,以及很多ADAS(高级驾驶辅助系统)相关的应用,要用双目来做这方面的事情,其实都是基于我们称之为“深度的中间结果”,它也是属于早期视觉一个非常大的部分。
现在讲人工智能、计算机视觉的范畴,对这两块的熟悉程度其实并不高,因为大家关注的是和识别相关的内容,但是我想说从早期的Imaging成像也好,从中间的Early Vision也好,其实都是视觉非常重要的一些环节,这两部分的内容其实需要一个比较长的时间知识积淀。
这里想补充一点的是传统当中我们认为做这两部分,一定需要相当长领域知识积累,也就是说你做图象增强的、视频增强的,和你做深度的、做运动的,其实必须是有不同的知识。当然背后肯定是一套相对比较完整的数学统计学习的理论。最近行业上发现的趋势变化是说,这些对于领域知识,或者说先验知识依赖较强的应用(如依赖图自然图像统计先验)渐渐也被数据驱动的方法取代了。也就是说我们在做这些问题的时候,也有一个可能性,是用数据驱动的方法,比如说在做去模糊,或者说去雾霾,或者说图片超分辨率等。可以看2013年、2014年有很多的文章,已经可以通过大量的数据,我告诉机器它输入输出对的关系,从而满足把成像中一些应用如超分辨率(super resolution)这些操作都变成一个通过机器学习完成的一个过程。
这样的事情同样也发生在我们说的早期视觉这个领域,比如我们在做深度计算、运动分析,其实2013年、2014年的CVPR都有文章说怎么样通过一个深度神经网络,来完成刚才我在图片中展示的深度结果、运动结果。在某种的意义上有一定的好处,就是不太需要太多的领域上的背景知识干扰,可以通过大量的数据来弥补对于真实场景理解的缺陷。比如说深度计算有一些应用场景是马路上的场景,会有特殊的纹理特征等,如果我们要去做的话,可能对于这些场景要有一些特殊的先验知识。从数据驱动的角度来说,它其实可以通过收集足量的数据,使得这种先验知识融合到到现有的深度网络学习当中去。
所以我认为下一个阶段,在早期视觉、在成像这块的内容会有一个趋势,就是我们称之为从统计学习来的生成式模型(Generative Model)和深度学习Bottom-up、数据驱动模式的结合。
识别理解(Recognition)
工业界的应用突破,大多都是基于这部分。我们讲最终的识别理解,其实之前提到视觉问题当中,做的事情,是需要把一张(输入)图对应到一张(输出)图,或者说一张(输入)图对应到一个中间结果。识别更多的就是把一张图对应到这样的一个文字或标签。所以这也是为什么我们真正地机器学习也好,大数据分析也好,最早肯定是从识别开始入手,因为文字到标签的matching,其实得来更自然,并且容易。比如说对于人脸识别,我们要做的事情我给机器两张人脸,告诉它这两个人“是”同一个人,或者“不是”同一个人,给出这二者的标签。
从2010年之后深度学习在语音当中取得了一定地突破之后,在视觉领域的突破,最早就是从这样的图片(或视频)到文字的匹配(matching)来完成的,其中最著名的是Hinton参加了ImageNet挑战赛取得了突破之后,深度学习以及大数据的方法,在视觉识别当中的各个领域展开。
在一些我们公司涉猎的垂直领域,只要把图片和这种标签定义得足够好,数据量足够大,数据够完善的话,它有非常大的可能在垂直领域上,能够超越现有人类的识别准确率。这点在工业应用上尤为重要,我们认为有一个叫“game-changing line”,就是改变这个游戏的这么一条线,其实就是人的准确率。
一旦当某一个应用它已经达到了人识别的准确率,那么这样的一个工具就会替代现有的人力来完成这样的任务。这种应用从图像当中包含的我们最传统的车牌识别、文字识别、车型识别,在公安交通当中应用比较广泛的。另外,从人的角度出发,对于人脸、人体、人群的识别,这些细分领域只要我们定义了一个比较清楚的图到文字的Mapping(描绘)的话,识别就变得可行,工业应用也很广。
最后,我讲两个非常简单的例子,我们怎么样去定义这样的matching,在某些应用当中变得可行。
例子一:年龄识别
年龄识别看上去是比较主观的,人看上去年纪轻、年纪大,其实是比较难的,怎么样用大数据的方法最后把年龄识别来完成呢?其实我们现在有这样的一个小窍门在里面,去定义这些标签。
举例子说,从手机收集来的照片一般会有手机上的时间,同时如果像有身份证号码,它是可以通过身份证的号码,把这个人的出生年月给算出来。又有现在的照片,又有出生年月,其实它的这么一个从一张照片,到一个人的岁数matching就能做成这样一个对。有了足够多的对的时候,就能够自然而然地完成年龄识别的训练,这是我们在数据收集当中最后发现一个比较有意思的例子。
例子二:颜值的识别
这看上去是一个比较主观问题,那怎么样去定义一个人的颜值漂亮不漂亮,其实相对来说是比较难的事情,我们也用了讨巧的方法,就是在有一些社交网站、交友网站上对于别人是有这样的一个打分。另外就是大家普遍认可明星的颜值会比较高一些,普罗大众的颜值会比较低一些。所以通过一些现有的网络数据,我们可以完成这样的一个分数大致的范围设定,给一个人定义“漂亮”、“不漂亮”标签,完成颜值打分。
Q&A环节
问题1:目前CV领域都是朝着DL(深度学习)方向发展,不可否认在一些应用场景下取得了很好的效果,但是我的疑问是,这是真正的计算机视觉么?之前学习某大学的CV课,看见说三维重建(Reconstruction)、重组织(Reorganization)、认知(Recognition)才是CV的核心思想,所以我对CV的发展方向不是清楚,或者说DL的发展方向,目前都是海量数据驱动训练模型,但是这真的是真正的智能么?还是人脑智能的机制才是真正的智能呢?
徐立:我认为传统过去十年当中比较流行的人工智能的概念其实叫做人工指导智能,是那种在统计学习推理框架下做的事情。比如说我们做研究,都会有一个统计学习的模型(如最大似然估计、MAP最大后验概率等)作为一个指导,指导的意义就在于说我们已经对这个世界有这样的假设。现在视觉这个领域的发展,为什么深度学习会火呢?因为深度的神经网络其实是没有对世界做任何的假设,是纯粹从数据中来,这样当数据量足够大,当问题的这种描绘Mapping定义得很清晰的时候,它真的会在一定的程度上,去超越原始对这个世界有先验假设的这么一波算法,这也是为什么工业界为什么会比较火的原因。
CV这几个方向现在渐渐都有趋势说这种纯数据驱动方法,已经开始替代传统的统计学习框架,或者说generated model生成式模型的框架。这个替换是越来越多了,就是从刚才说的早期视觉、图象增强以及识别这几块,都有这样的一个变化。
反过来来说,我觉得学术上更多的热点,现在的神经网络的设计其实还没有办法完全用到传统二三十年视觉上生成模型的知识。那怎么样把更多的模型知识嵌到现有的深度学习框架当中,怎么从生成式模型和深度学习的这么一些网络结构做一些结合的话,可能是会带来下一个阶段的突破。
而人工智能其实是另外一个概念,我觉得60年前达特茅斯会议(Dartmouth Conference)上讲的“人工智能”,其实是通过人的工程使得第三方主体具有人的意识,这也是普罗大众的理解。但我们现在做的事情是machine intelligence(机器智能),机器智能其实并不是说实现全人工智能,使得它具有意识,更多地我觉得机器智能是在于利用这些大数据,使得这些数据能够作为更好的工具,在某个垂直领域服务我们人,所以我觉得人工智能的发展方向,或者说现在更多的工业界的热点是在机器智能这个方向。
问题2:现在我们正在通过一些办法理解神经网络是如何抽象图像信息的,比如Deep Inside Convolutional Networks通过找出maximize class score的图像来理解,还有一篇文章Deep neural networks are easily fooled,都表明我们可以通过改变图像来欺骗神经网络。如果我们把大量的DNN应用到实际场景中,如何应对这种潜在的危险呢?
徐立:神经网络在某种意义上是可以欺骗的,比如说在一些识别的网络,它可以通过输入一些噪声,就让这个网络错误识别。我觉得确实是存在潜在的风险,比如假设做人脸识别也好,做物体识别的场景也好,如果说在网络设计当中,这块被一些不法分子真的知道了网络设计的一些原理,它有可能通过hack这样的输入的模式,使得最后的输出能够做到欺骗过当前的网络。
这块我觉得有几层:
-
第一、你需要知道这个网络的结构,它才能做出欺骗性的事情。
-
第二、当数据量达到足够的程度,覆盖面足够广的时候,在真实的应用当中,还是会比较难去操作欺骗。
-
第三、在一些工业自动化的应用,我认为人工智能最大能发挥价值,或者视觉能够发挥价值的地方是在于替代本身劳动密集化的这些应用。并不都存在被欺骗的风险。
假如说本身需要很多人,现在用人工智能的算法去完成工业级别的一些自动化(比如特斯拉工厂),它其实并不是特别地存在这样的风险,所以我觉得这还是根据行业的不同,以及最后数据量的大小,可能会定义成不同的危险级别。
举个例子我们在做人脸验证的时候,相当于传上两张照片来做验证的时候,前面是要有一个活体的识别,就是让你做几个动作来判断是不是活体,一开始的时候,我们平台上有非常多的用各种各样的方法去hack活体,不光是hack这个神经网络,它其实将来是把它当成一个黑盒去hack整个流程,但是这里面有一个过程,当我们把一定数量的hack的数据进行标注,把它作为个训练样本去做出一个新的分类、做出同样的操作,一下子就可以把这个风险降到比较低的水平。所以我觉得这也是在行业当中必由之路了,必须通过这样的数据积累(更多的攻击数据的积累)来形成更安全的壁垒。
问题3:现在deep learning相关的CV算法需要很高的硬件门槛,训练模型也要花很长时间,工业界如何在实际的产品中实用它呢?
徐立:我认为什么时候可以用技术做创业,在中国用技术做创业其实比较难的,我刚才说如果说它只是一个工业的热点,就是工业发现这个技术还很好用,那会产生一个问题,就是说同质化的东西就会特别多,因为它的技术演进会很慢。如果它只是一个学术的热点,工业不买账的话,你硬推到行业应用当中也是非常地难,因为它始终没有过工业实用这条线。
所以,我认为deep learning加CV这个点,实际上是一个工业热点和学术热点的结合,它才能说是真正使得技术创业公司在这个时间点上往前走。至于这个问题就必然会引发为什么一定是要这两个业界的结合?我觉得一是最好的、最顶尖的深度学习的算法肯定还是来自于学术圈不停地演进,但是反过来来说,工业界有足够的计算资源、足够的数据,这些是目前学术圈没有的。
我觉得来参考一下传统的搜索行业,到了后来我觉得做学术那部分没有和工业做一个很紧密的结合,所以工业的那些处理真正大数据的信息检索(information retrieval),其实远远要领先于学术上的这个点。
现在其实是一个很好的点,因为你要做深度学习的研究,以后我觉得一定是和工业有完美地结合,这样才能得到更大训练的平台,以及更多的训练数据和应用场景。为什么会有人工智能四大天王——Facebook的Yann LeCun,百度的吴恩达(Andrew Ng),谷歌的Geoff Hinton和蒙特利尔大学的Yoshua Bengio,除了Bengio其他三位都到了工业界,这其中会有一个比较大的关系。
最后讲训练的模型以及硬件的门槛高的话,我觉得在未来,这些训练平台它可能也会变成一种服务,像现在AWS(Amazon Web Services)、阿里云提供的CPU部署服务,它到某一天它可以把更多的GPU连接起来,形成一个训练的平台,就像超算一样,大家可以通过买云服务,来完成自己想要的特质化模型的训练,这可能是一种潜在的服务可能性。
问题4:在目前的哪些应用中,vision会是不可或缺或者不可替代的,成为一个行业成败的关键点,为什么?在ADAS(高级驾驶辅助系统),无人车,以及医疗图像领域,哪个领域会最先被广泛应用和接受,为什么?
徐立:一方面我觉得人工智能,或者视觉的突破是在于这些数据(经验)积累上,所以说下一个阶段我认为ADAS、无人驾驶、自动医疗诊断等,都会有一个非常大的演进。做无人驾驶,如果说有1000辆这样的无人驾驶车,在路上跑一年的话,那很容易收集到1000年的驾驶经验。你能训出来的汽车就具有千年的驾龄,所以我很看好在五年,甚至是更短的时间之内,在ADAS,或者在无人驾驶这个方面,会有一定地突破。
问题5:你认为当前CV技术的瓶颈在哪儿?是算法?数据?或者是计算能力?硬件?
徐立:关于现有的瓶颈,第一,我觉得还是在于怎么样去设计一些更好的把原来现有的行业知识和现有的从数据出发的bottom-up方法做一个融合;第二,网络结构的设计势必会影响到最后算法的性能。目前从中国行业角度来看,我觉得更缺的是从图象或者从视频到输出的结构化的Mapping(或者说训练数据)的结构化收集,比如说提到的大数据医疗诊断这业务,这件事情本身是非常可行的。但是现在的问题就是说,在中国这些年当中,其实他们并没有把这些医疗的数据结构化,进行清理,所以即使这方面想要做研究,还是需要很多年把这样的数据做清理。
问题6:想入门CV需要提前补哪些数学知识?
徐立:我觉得计算机视觉是一门优化的科学,我一直想说,计算机视觉各个应用相当于是十八般兵器(刀枪棍棒),内功就是凸优化,其实是把线性优化的问题以及凸优化问题能够解到极致,然后再把统计学习的概念应用上的话,我觉得其实做大部分的视觉问题都应该可以迎刃而解。
问题7:除了OpenCV还有什么比较好的开源项目可以学习?
徐立:OpenCV挺好的,如果从算法角度来算,很多应用其实是直接参照Opencv应该是已经实现了,OpenCV里面实现了我的几个算法,我觉得应该是比我自己写要写的好。至于其他的开源,现在学深度学习的话,开源平台也是很多,例如caffe等。现在要解决的不光是开源项目的问题,可能针对深度学习来说还要解决计算平台的问题。
问题8:如何入门以及找到研究的兴趣点?
徐立:想要从了解计算机视觉的范围的话,其实可以看瑞克的一本书(http://szeliski.org/Book/),这本书和传统的教材编写的不一样,他会把这个行业里面,2000年到2010年之间的一些发展,把它编排成书了。这个书其实包含了很多的有意思的应用,如果大家对这个方向感兴趣,它其实可以作为入门参考,视觉里面有非常多的好玩的东西,我刚才说了一些,我还有很多没说,比如说像Matting这个问题本身不是一个视觉里面的传统问题,说它相当于把一个人(物体)从背景中分割出来,但是这个分割会考虑到毛发和半透明的问题。台湾的Yung-Yu Chuang教授第一次把统计学推理、贝叶斯的框架引入这个应用之内,然后把MAP inference发挥的淋漓尽致。这些有意思的论文内容都收录在这本书里。
另外如果大家对于这个行业感兴趣,可以从最新的学术论文,或者说一些学术论文的分析汇编中看有一些什么样的应用,作为一个切入点往下走。
问题9:您科研期间发表的光流法对应的文章在什么刊物上?
徐立:刚才说的光流的是发表在TRAMI的一篇文章“Motion Detail Preserving Optical Flow Estimation”,TRAMI是我们这个方向的期刊。
这篇文章我可以稍微讲一下,当年应该是Open CV最早要收录的一篇光流文章,也在CVPR上宣布了,最后没有收录的原因,是因为我用了SIFT作为Feature Matching,这部分是第三方的内容,没法收录,所以也有一些可惜。
说到光流我最后再分享一下我自己本科期间的一个小故事,我本科师从戚飞虎教授,他也是视觉和神经网络方面的学术领袖,他当时问我说你可以做视觉的方向,一是做光流,二是做文字识别,我当时对光流非常抵触,因为这个词说的非常玄乎,我就觉得说在外行人看视觉这个题目,你都根本不知道这是什么的情况下,其实很难引起兴趣,但是真正如果知道这里面是做什么样的内容,你就会觉得它其实跟你想象是不一样。所以我也不知道为什么第一个起名字的人把这些东西翻译成那么拗口的,不就是运动估计么。
问题10:对于以后想从事CV方面研究或者工程的非CS科班本科生,应该抓住怎样的趋势来学习?CV的未来在哪里?
徐立:首先我觉得学习CV,从我自己的经验来说,这东西绝对不能太功利,很多东西能不能够真转化为实用,或者在这个地方有什么特殊的价值,其实我觉得肯定不是一时半会能看出来的,我再讲上一个十年,我认为两个有实际的视觉应用的价值的算法,其实都是它是在实际积累当中一步一步走出去的。
第一个就是2000年到2004年左右,用Adaboost做的人脸检测,我们可以知道很多后来的相机、手机以及各种高清的相机里面,你看到的人脸检测,其实都是早期基于Adaboost的算法来做的,但是这也是通过最早的一步一步的变化,从离散的boosting、从一些多角度的变换,从这样一部分的尝试,最后完成了一个我们认为可以说是跨时代意义的这么一个检测算法来做这样的事情,而且实际上从数学理论来说,Adaboost并不比其他的Max-Margin分类起来得更完善,所以我觉得做视觉方面的研究,其实本身也就是一种尝试的过程。
第二个是David Lowe的SIFT(Scale-invariant feature transform,尺度不变特征变换)的例子,他也是非常成功的。从1999年他发布第一个求取这个特征点(找特征点)的方法,到最后定稿的这个IJCV(International journal of computer vision)的SIFT,中间经过了非常多次的迭代,其实每一步在现在看来都是非常地ad-hoc,怎么样在ad-hoc的步骤当中,最后找到实用的视觉算法,其实我觉得这是我们要面临的问题。所以做计算机视觉研究很大一部分还是在于说你真的对这个问题喜欢,同时你要具有这样的一个hacker精神。其实一半是engineer,一半是hacker。
我想要跟大家说要有信心,其实很容易成为这个领域的佼佼。你真正地钻入到一个很特殊的问题,一直在做的时候,你突然会发现,这个世界上总共也就四五个人来做,如果说是你要勤奋地一直往前地去做这样的一件事情,你只要打败这四五个人,相对来说是很容易的。
所以只要我们抓住一个很合适的问题,有足够的hacker精神,当然要有一定地数学功底的话,我觉得做CV其实是一个很有乐趣的事情,因为还是会有很多非常快乐的时刻,而且我相信最重要的一点要有自己的信念,如果说你只是做单独的方向(比如说做分割或者跟踪),这个问题做的人非常多,都是世纪末的难题,如果你把一个跟踪的问题narrow到一个很小的范围,举例来说我要做一个透明的物体跟踪,可能全世界就三个人在做,然后你说我要做半透明的物体,或者说透明物体有反光的研究,可能全世界就只有你一个人做,但是你只要把这个问题做出来,你就是世界第一。
所以我一直觉得做视觉的人,要有这种信念,就是它会把很多一些实际的问题定义得更清晰。在清晰的问题中找到一个自己的定位。所以我觉得对于工程学科或非CS科班的学生来研究CV的话,一点也不需要担心跨行的问题,因为我认为CV本身就不是一个完善的学科体系,而是一门应用科学。而应用科学需要更多的是工匠的精神和黑客精神。
当然这是我的看法,非常感谢大家的时间,谢谢大家!