4
联合编辑 宗仁 黄鑫雷锋网雷锋网雷锋网
今年夏天,雷锋网将在深圳举办一场盛况空前的“全球人工智能与机器人峰会”(简称CCF-GAIR)。大会现场,谷歌,DeepMind,Uber,微软等巨头的人工智能实验室负责人将莅临深圳,向我们零距离展示国外人工智能震撼人心、撬动地球的核心所在。如果你不想错过这个大会的盛世狂欢,请点击文末购买我们的早鸟票。
本次CVPR 2016上,深度学习几乎成了如今计算机视觉研究的标配,人脸识别、图像识别、视频识别、行人检测、大规模场景识别的相关论文里都用到了深度学习的方法,加上Google,Facebook这样的大企业助力,很多人疑惑,为什么深度学习相比其它的AI实现方法,已然呈现出一副碾压之态?
本期硬创公开课嘉宾我们邀请了商汤科技执行研发总监曹旭东,其刚从CVPR 2016现场赶回来,正好在这里为大家解释一下为什么深度学习几乎成了计算机视觉研究的标配这个问题。以及为大家讲解CV和深度学习的现状和未来趋势。
曹旭东,商汤科技执行研发总监,深度学习专家。毕业于清华大学。前微软亚洲研究院副研究员,负责研发的人脸算法曾用于微软Xbox、How-old等知名产品,现象级产品How Old.net有数亿用户。在CVPR/ICCV/ECCV等计算机视觉顶级会议发表论文十余篇,其中三篇CVPR论文和两篇ICCV论文获得口头报告荣誉(接收率小5%)。
商汤科技曹旭东:为什么深度学习几乎成了计算机视觉研究的标配?| 硬创公开课
首先简单介绍一下传统物体检测的方法和基于深度学习的物体检测方法。
传统方法使用滑动窗口的框架,把一张图分解成几百万个不同位置不同尺度的子窗口,针对每一个窗口使用分类器判断是否包含目标物体。传统方法针对不同的类别的物体,一般会设计不同的特征和分类算法,比如人脸检测的经典算法是Harr特征+Adaboosting分类器;行人检测的经典算法是HOG(histogram of gradients) + Support Vector Machine;一般性物体的检测的话是HOG的特征加上DPM(deformable part model)的算法。
基于深度学习的物体检测的经典算法是RCNN系列: RCNN,fast RCNN (Ross Girshick),faster RCNN (少卿、凯明、孙剑、Ross)。这三个工作的核心思想是分别是:使用更好的CNN模型判断候选区域的类别;复用预计算的sharing feature map加快模型训练和物体检测的速度;进一步使用sharing feature map大幅提高计算候选区域的速度。其实基于深度学习的物体检测也可以看成对海量滑动窗口分类,只是用全卷积的方式。
RCNN系列算法还是将物体检测分为两个步骤。现在还有一些工作是端到端(end-to-end)的物体检测,比如说YOLO(You Only Look Once: Unified, Real-Time Object Detection)和SSD(SSD: Single Shot MultiBox Detector)这样的算法。这两个算法号称和faster RCNN精度相似但速度更快。物体检测正负样本极端非均衡,two-stage cascade可以更好的应对非均衡。端到端学习是否可以超越faster RCNN还需要更多研究实验。
先回答深度学习为什么会成为现在计算机视觉标配的方法。
首先,最重要的原因是深度学习可以做到传统方法无法企及的精度,这是关键中的关键,如果说这个优点是1的话,其它的优点都是1后面的0。深度学习革命爆发在2011~2012年,11年的时候在语音识别领域有重大突破,12年的时候在图像识别领域有重大突破。深度学习革命,使得计算机视觉在很多应用领域达到了实用水平,催生了工业界的大量应用。这也是为什么在11年前,机器视觉&人工智能的博士生都是找不到工作的,但是12年之后,尤其是现在,都变成了被众多公司高薪争夺的宝贝。
另外深度学习成为标配,还有其它的优点。
第一,深度学习算法的通用性很强,刚才提到的检测,在传统算法里面,针对不同的物体需要定制化不同的算法。相比来看,基于深度学习的算法更加通用,比如faster RCNN在人脸、行人、一般物体检测任务上都可以取得非常好的效果。
第二,深度学习获得的特征(feature)有很强的迁移能力。所谓特征迁移能力,指的是在A任务上学习到一些特征,在B任务上使用也可以获得非常好的效果。例如在ImageNet(物体为主)上学习到的特征在场景分类任务上也能取得非常好的效果。
第三, 工程开发、优化、维护成本低。深度学习计算主要是卷积和矩阵乘,针对这种计算优化,所有深度学习算法都可以提升性能。另外,通过组合现有的层(layer),我们可以实现大量复杂网络结构和一些算法,开发维护的成本低。想想同时开发、维护Boosting,Random Forest等算法是非常痛苦的一件事情。
再回答深度学习过于单一的问题。
深度学习过于单一的说法,我觉得是不准确的。就好比说一个包容万象的宇宙过于单一了。
简单来说,机器学习就是学习输入到输出的一个映射,传统方法使用浅层的简单映射,现在深度学习是多层的复合映射。深度学习有很多的自由度,学习目标和学习方法有很多种选择,网络结构层与层之间有无数的可能连接方式,每一层映射的具体形式到底是卷积,还是全连接,还是其它的形式,并没有限制,其实除了全连接和卷积之外,还可以用其它的映射形式,比如说去年ICCV上的一个工作:微软研究院用Random Forest做为新的映射形式。
深度学习的技术框架是一棵树形结构。
训练平台是树根,如caffe、tensorflow等。现在深度学习还处于实验科学阶段,实验效率很大程度上决定着研发效率,好的训练平台可以把实验周期从一个月缩短到一天,对于深度学习研发非常重要。
模型是树干。自06年提出深度学习概念,学术界花了六年时间才认识到模型结构的研究才是深度学习的重点。典型的成果有AlexNet、VGGNet、GoogleNet、ResNet等。学术界大家主要研究怎么把模型做的精度更好。在工业界我们还要考虑怎么把模型做得更快,更小。
在树干上有几个主干的枝丫,对应着计算机视觉里的核心任务,包括了检测、识别、分割、特征点定位、序列学习等五个大的任务,任何计算机视觉的具体的应用都可以由这五个任务组合而成。以人脸识别为例,人脸识别要完成整个流程,要涉及到人脸的检测、特征点定位,特征的提取&验证。这就包含了检测、特征点定位和识别三个部分。
我们在刚才提到的那五个重要的主干方向其实都投入了非常大的研究力量,一方面是保证我们在学术界的前沿有所突破,另一方面,针对我们一些重要应用也开发出了一整套与学术界并行的方法,能够做到十倍的加速和百倍模型的压缩,同时保持很好的精度。这个问题中提到的四篇论文主要是我们在这五个计算机视觉的核心任务上取得的一些研究方向的成果。其实我们除了在研究方向成果之外在工业实用方面有更大、更多的成果,比如我们的人脸检测在做到学术界最好结果的同时能做到300FPS的速度。人脸特征点的定位超过学术界最好结果的同时,做到3000FPS的速度。在学术界公开的论文中,我还没有看到这样的性能。
在深度学习领域有一个简单但又非常通用的原理。在学习时,指导信息越丰富、越精细,学习的效果一般来说也会越好。
举个简单的例子,在数据量充足的情况下,如果我对我图像类别的标注仅仅是动物、植物、场景的话,学习出来的模型和特征可能一般。但是如果把这些类别标记细化,比如最开始有十类数据,我们把它细化到一千类,例如把狗分成斑点狗、斗牛犬等,把猫分成波斯猫、大花猫等,通常来说可以学习到更好的模型和更加好的特征。
另一个例子是物体检测,如果在bounding box的基础上增加额外的监督信息通长会得到更好的结果。比如标注出人脸的眼睛、鼻子、嘴的位置,人脸的角度,种族性别男女等属性,做成一个多任务学习的算法的话,通常来说能得到更好的效果。
两个代表性工作可以参考:Joint cascade face detection and alignment,Facial landmark detection by deep multi-task learning。
有时候多个标注/任务是并列关系,可以通过Multi-Task Learning的框架来学习。另外一些情况,多个任务是递进关系,前一个任务的结果可以帮助后一个任务,例如将每一个人都独立的检测出来之后再分割每个人身体的Mask。合理利用这种递进关系,可以得到比并列关系更好的结果,这其实就是Instance segmentation的核心思想。因为同传统语义分割不同的是,传统语义分割只需要对物体类别进行分类,不需要区分不同的个体。物体分割(Instance segmentation)是既需要区分类别,又需要区分同一物体的个体,所以深度学习的网络需要学习到比之前语义分割任务更多的信息。这方面微软亚洲研究院的戴继峰做了非常开创性的工作。我们商汤科技石建萍高级研究员的工作也非常有创建性。通过多尺度局部区域融合的方法,端到端的实现了instance segmentation 物体类别与区分统一类别不同个体的信息。
做深度学习的人都是有一个终极的追求。现在的深度学习模式其实比较傻。给定一个数据,以及对应的标签(label)。比如说给一张图片,标签是一只猫,给另一幅图片,标签是一只狗,然后把这些数据送到神经网络里去学习,最终达到一个很好的识别效果。这样的方法叫做监督学习,虽然非常有效,但是和人类学习的方法还是不一样的。深度学习的研究者希望,机器可以更加聪明,可以像人一样学习。
在监督学习领域取得了重大成果之后,大家就把更多的精力投入到更接近人类学习方式的半监督学习(semi-supervised)和无监督学习(unsupervised)上。一方面,我们希望更加的深入的理解人类视觉的机理、甚至人的智能的机理。另一方面,监督学习需要大量的数据,如果能用半监督或无监督学习的方式绕过大数据标注难题,达到相同精度,这对工业界非常有吸引力。
问题中提到的这些黑科技,都是朝着人类学习方式探索性工作,非常有意义。
其实朝着这个方向努力的工作还有很多。这些工作都使用没有监督信息的图像或者视频。这些数据虽然没有标签,但数据内部其实都是蕴含着一些结构。比如视频里物体的运动、行为存在特定规律;在一张图片里,一个物体也是有特定的结构的。利用这些视频或图像中特定的结构,我们可以把一个无监督的问题转化为一个有监督问题,然后利用有监督学习的方法来学习。
有两个典型的工作。第一个工作把图像划分成2x2或者3x3的图像区域,给定任意两个区域预测他们之间的相对位置关系。这个工作利用到的物体、场景的固有结构特点,例如天空在道路上方,双腿在身体下方。另一个工作利用视频数据学习物体边缘,主要用到了视频中物体的边缘相对于背景有较大的运动这一个特点。
长期来看的话,探索人类学习过程的半监督、非监督、多感知输入的学习方式是深度学习的另一个发展趋势。
凯明、孙剑的两篇best paper都是十分钟就能看懂,一天就能复现出结果。而对于之后的研究产生长远影响的工作。另外,孙剑做研究的风格对我影响很大。问题导向,解决重要问题,做真正work的研究。这些方法论不仅在学术界非常有价值,而且在工业界研究更加重要。
回到论文本身,这篇论文解决的是深度网络一般超过20~30层的时候,训练和测试的loss不再下降,甚至随着层数的增加,loss会逐渐增加,针对这个问题提出了一个非常行之有效的解决方案。这个方法之所以有效,有很多解释,比如说有一种解释是通过跨层(skip-layer)可以把loss反传到中间的很多层,解决了梯度传播的问题。另一种解释认为ResNet通过skip-layer,可以做到深度方面的多模型融合。
我的解释稍微有点复杂。我认为,没有降采样的情况下,当深度达到一定的程度的时候,卷积层的学习能力是逐渐减弱的。当网络过深,增加的卷积层只能学习到噪音,并且造成有效信息损失,导致训练和测试loss都增加的情况。Skip layer可以很好的自适应的调整每一层的学习目标,解决这个问题。
另外ResNet有很大的冗余,把152层网络中的后面几层去掉也不会改变精度,可能这些层都被skip了。保持精度的情况下,去掉这些冗余,做到更小更经济的网络,非常有研究价值。
现在产业界跟学术界的研究基本是并行进行的,总体来说,产业界没有落后于学术界,学术界也没有落后于产业界,只是产业界和学术界的侧重点不一样。
现在深度学习的研究迭代速度是非常非常快的,而且快的惊人。在其他领域的话,学术研究主要是通过发表期刊文章来交流,期刊周期短的话可能一年,长的话可能要两三年的时间。而在计算机领域,大家更多的是发表会议论文,会议论文的时间周期大概是半年的时间。在深度学习领域,大家第一时间把自己做出来的成果放在预印本(Arxiv),半年之后再把论文投稿到会议上去。
在商汤科技,很多研究员养成的习惯就是每天先到预印本(Arxiv)上去看最新论文,如果这个论文的思想有价值或者这个论文做出了一些非常突出的成果的话大家都会第一时间尝试复现,做一些探索性的实验。
我认为,在深度学习这个特定的领域,新技术落地的周期几乎为零。
我觉得CVPR的很多版块都非常有意思。要说哪个版块最有用的话,从工业界实用的角度出发,当然是检测识别的板块最有用。
最大的体会是华人圈做计算机视觉真的很厉害。去年参加ICCV的时候所有ImageNet的比赛第一名都被华人包揽了。这次CVPR的时候也看到了非常多的华人的优秀论文。凯明、少卿、翔宇、孙剑还拿了最佳论文奖。华人在计算机视觉领域的研究水平越来越高。这是非常振奋人心的事。稍微鸡汤一下,我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。
本期硬创公开课上,曹旭东重点为我们介绍了深度学习目前相对其它AI实现方法占优的4个特点:精度好; 算法通用;特征推广性好;工程框架统一。这或许可以解释为深度学习现在在AI界大受欢迎的原因。
另外他指出计算机视觉里的核心任务,包括检测、识别、分割、特征点定位、序列学习等五个大的任务,为计算机视觉的具体应用勾画了一个清晰的脉络。
不过令人震惊的是,谈到深度学习这个特定领域的研究迭代速度,谈到论文投入实用的合理周期,他认为在深度学习这个特定的领域落地的周期应该是零。虽然现在谷歌,Facebook等大公司正在引导论文从文字到实践的产业化热潮,但这样的周期显然是让业内人士感到惊心动魄的一个速度。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。