作者 | 吴少杰, Tina,陈思
AI前线出品| ID:ai-front
2017 年 7 月 26 日,计算机视觉顶会 CVPR 2017 同期举行的 “超越 ILSVRC” Workshop 上,宣布计算机视觉乃至整个人工智能发展史上的里程碑——ImageNet 大规模视觉识别挑战赛于 2017 年正式结束,也就是说 2017 年是 ImageNet 的最后一届。在 2017 年 ImageNet Large Scale Visual Recognition Challenge 2017 (ILSVRC2017) 的收官比赛中, 360 公司与新加坡国立大学合作团队拿下了物体定位任务的冠军。InfoQ 因此联系到颜水成团队,进行了这次采访。
ImageNet 竞赛主要分为物体定位(识别)、物体检测、视频物体检测三个大类。在 ImageNet 举行的八年中,物体识别的精度从最初的71.8%上升到97.7%,识别错误率已经远远低于人类的 5.1%。“ImageNet 重新定义了思维模式,虽然很多人关注模型,但 ImageNet 使我们更关注数据,”ImageNet 创始人之一李飞飞说:“数据改变了我们思考的模式。” 截至目前,ImageNet 数据集现在超过 1300 万张图片。
受访人介绍
颜水成,360 公司技术副总裁,首席科学家,人工智能研究院院长。在加入 360 之前,在新加坡国立大学做计算机视觉和机器学习的研究,在 2015 年年底加入 360。新加坡国立大学终身教职,IEEE Fellow, IAPR Fellow 及 ACM 杰出科学家。他的主要研究领域是计算机视觉、机器学习与多媒体分析,发表近 500 篇高质量学术论文,论文引用过 3 万次,H-index 74。2014、2015、 2016 三次入选全球高引用学者 ( TR Highly-cited researchers )。
董健,360 高级数据科学家,前 Amazon 研究科学家。 目前主要关注深度学习、强化学习、计算机视觉等方面的科学和技术创新,拥有丰富的大数据、计算机视觉经验。曾经多次领队参加 Pascal VOC、ImageNet 等世界著名人工智能竞赛并获得冠军。博士期间在顶级国际学术会议和杂志上发表过多篇学术论文。从 2015 年年底加入 360 至今,董健作为主要技术人员参与并领导了多个计算机视觉和大数据项目。
将ImageNet的成功转化到企业实践
ImageNet 从学界发起,但是赛事一经公布,便有多家科技企业参与,包括:谷歌、百度、微软、360 公司、商汤、海康威视等等。对于一个特别是针对计算机视觉的比赛而言,其结果对于学术界的影响力是比较明显的。学术界追求的是算法的极限。就是说研究的目的是能不能通过新的算法,以及一些新的 trick,使性能达到能期望得到的最高的上限,我们叫做追求精度极限。这个比赛,每一年都希望在原来的极限基础上再次提升。对于学术界来说,它的特点非常像一个百米赛跑,每次长度是一样的。比如像 ImageNet 竞赛,它的数据从2010年到现在,训练集和测试集在分类上基本没有变过,在定位方面也没有变过,那么每年的比赛,都是在做同样的事情,每年都在追求一个新的精度极限,每年极限都有一个更新。
对于工业界来说,当性能在往上提升的时候,就会思考这个精度是不是可以转化到工业界的产品或者服务里面。因为对于有一些问题,如果精度没有达到一个 Threshold(阈值),它就可能不会在工业界里去使用。但如果达到了这个域值,就可以开始去思考,怎么通过算法的精简,让它在工业界具体的产品和服务里面直接用起来。
在 360 内部,我们把人工智能设成四个纬度,一是图像的理解,二是语音的理解,三是语义的理解,四是大数据的理解,或者大数据分析。一个很有趣的事情是,每一次计算机视觉新的算法出现之后,在计算机视觉界的成功会引发这些模型在其他领域进行使用。比如说深度学习里的卷积神经网络,原来是在图像领域用的非常不错,后来有人就把它用到语音和语义里面。计算机视觉错误率的降低,决定它的根基的网络结构,会慢慢的从计算机视觉领域往其他的领域扩展,这样会对整个人工智能领域产生一个整体推动的作用。最早的时候,深度学习的使用点并不是在计算机视觉领域,而是在语音识别领域。语音识别领域因为问题相对要少,而计算机视觉领域要处理的问题的类型、数据类型差异化非常大,是个非常庞大的领域,因此计算机视觉在整个人工智能领域的声音比其他领域更强大一些。
逐年叠加的突破和 DPN 模型的提出
自 2010 年以来,ImageNet 比赛主要包含三类任务,物体定位 (object localization)/ 识别 (classification)、物体检测(object detection)、视频中物体检测 (object detection from video),还有就是已经取消的物体分割任务。如果只是去看所使用的模型,那么慢慢的大家都非常的相像,都有一个基础模型。这个基础模型一般是从物体分类领域出来的,在这个基础之上,还可以把它拓展成物体的检测和物体的分割。那么慢慢的在检测和分割上,除了基础模型外后面要叠加的部分,大家都越来越相似,越来越固化,逐渐变成经典。
大家现在的贡献主要是在这个基础模型上的进展。 2015 年微软拿到比赛冠军的时候,他们也是在基础模型上有很大的一个突破。今年的状况也是非常相象的,主要是在基础模型的一个变化,也就是 DPN 模型的提出。至于怎么做检测,大家用的还是比较标准的框架,可能每年会增加一些特别小的 trick。但是这些 trick 并不是根本性的,根本性的还在基础模型的变化上。
在这次 ImageNet 竞赛中,颜水成团队提出了双通道网络(Dual Path Network)模型。在 ImageNet-1k 分类任务中,DPN 网络不仅提高了准确率,还将 200 层 ResNet 的计算量降低了 57%,将最好的 ResNeXt (64x4d) 的计算量降低了 25%。
论文地址:https://arxiv.org/pdf/1707.01629.pdf
这两年有两个非常重要的网络结构,一个是 2016 年的最佳论文,ResNet;一个是 2017 年获得 CVPR 的 Best paper 的 DenseNet。大家在早期研究 DenseNet 的时候,DenseNet 还并没有拿 Best paper。我们的核心成员在研究这两个网络之间的相关性,发现 ResNet 可以解释成 DenseNet 的一个特例,2016 年的 Best paper 是今年的 2017 年的 Best paper 的一个特例。
它的分析是基于我们以前的 Network-in-Network(NiN)里的 1×1 的卷积。差别是里面有一个 1×1 的卷积,如果在不同的层,用的是同样的参数, DenseNet 就能转化成 ResNet。在这个分析的基础上,我们认为 ResNet 和 DenseNet,虽然是个特例,但是初衷各有优劣。ResNet 不停的去 refine 改善和修正它的特征,但是 DenseNet 相当于不断的去探索新的特征。两种策略都非常重要。举个例子,就是说好像一个公司要往前去发展,一方面你的老员工要不停的自我修炼,要自我提升,这个有点像 ResNet;另一方面,又要不停的去吸收新的血液进来,这些新的成员有新的特性,那么这两部分合在一起,最终的话,能让公司可以稳健的往前走。
基于这种思想,我们就提出一种网络结构,一方面的话,要对原有的一部分特征进行自我提升,叫做 refinement;另外方面,让一部分网络探索新的特征,然后这两部分特征融合在一起,一层一层的往前走。这地方有一个有趣的问题,有人在问我们,ResNet 既然是 DenseNet 一种特例,那么现在是把这两种网络的特性融合在一起了,那么新的网络是不是一个新的 DenseNet?这个问题很有意思。我和我的学生陈云鹏,想了一个晚上,最后总结,得到的新的网络不能解释成 DenseNet。虽然是把两个网络融合在一起得到一个新的网络,这个网络融合在一起,为什么不是新的 DenseNet?我们举个例子,你有一个等边直角三角形,如 DenseNet 就是一个任意方向的等边直角三角形,ResNet 是某一个特定方向的一个等边直角三角形,两个等边直角三角形拼接好会还是个等边直角三角形,还是 DenseNet。但是我们虽然 ResNet 可以解释成是 DenseNet 一个特例,但是它们两个融合在一起的时候是有一个错位的。类比,两个等边直角三角形如果用长边去做对接,那么出来就是一个正方形,就不再是等边的直角三角形了。 DPN 用到了 ResNet 和 DenseNet 的思想,结构拼接的方式比较特殊,所以它出来的网络结构化就已经无法解释成 DenseNet 了。它变成了一种新的网络结构。优势就是充分利用到了修正和改进的特征以及新特征的探索两方面。
ImageNet 的价值和模型关键节点
不只是 ImageNet,还包括做人脸检测和人脸定位,都有各种各样的 benchmark。有一些把测试的样本的标注已经告诉你了,那么就可以不停的不受次数约束地去测试各种算法;还有一种,像 ImageNet 还有一些人脸识别比赛的话,它提供训练数据,校验数据,但是测试数据只提供原始数据,不提供标签。你需要把结果发送到一个服务器上,这个服务器会做结果评价,同时会限制一段时间内能提交的次数,防止不停的去刷参数。如果能不受限制地刷参数,就变得纯粹是一种体力劳动,不是真正意义上的智力活动了。
很多团队,不论是学术界,还是工业界,都希望在这些比赛和 benchmark 上去拿到很好的结果和名次。基于不同的诉求,一种是对他们,比如说融资,有很大的帮助,另一种是为了就是秀肌肉,展现自己的强大实力。我觉得这些都是没有错的。但是刷榜本身是没有价值的,真正的价值在于,刷完榜之后,有没有为这个 community,为所在的领域留下有 Insight 的东西。 在 ImageNet 领域,在不同的时间点,留下了很多很不错的基础模型。这些基础模型对于整个领域都是非常有价值的。
最早的一个时间节点是 2012 年,AlexNet 第一次把传统的模型、传统的算法转换到深度学习。2013 年我们参加了 ImageNet 比赛,我们在分类里面取得了第二名。我们当年提出了一个新的模型结构,叫做 Network in Network,实际上我们那年是没有来得及用,但是我们那年在参加 Workshop 的时候,就把 Network in Network 介绍了。2014 年有两个非常重要的模型,一个是 GoogleNet,一个是 VGG Net。GoogleNet 作者把他们的模型叫做 Network in Network in Network,受到 Network in Network 一些启发,特别是大量利用了 Network in Network 中提出的 1x1 卷积。2015 年是微软的 ResNet。2017 年 DPN 的总体效果也挺不错,不少学者在自己领域实验的结果来看具备不错的普适性。
深度学习的低门槛已经能面向普通开发者
深度学习发展到现在,特别在计算机视觉里,大部分东西都已经非常成熟了。甚至可以说现在一个本科一年级学生,他就可以训练出一个一个车辆检测器,或者人脸检测器。也就是说深度学习的门槛不是非常高了。如果说一个企业有一个具体的业务场景,希望得到还不差的性能的话,那么已经没有必要说要拿一个 PHD 去做这件事情了。可以利用开源的平台和一台 GPU 机器,甚至可以运用云计算,把数据放进去,就可以训练出比较不错的模型出来。
那么深度学习的研究,我觉得有两个纬度,一种是追求精度的极限,一种是追求用户体验的极限。追求精度的极限的话,要做得事情是去思考,当前最好的模型在解决具体问题上还有哪些 weakness(弱点)。在这个基础上,再去提出新的模型的结构,在基础模型上去做提升。但是这个非常的困难,为什么?比如说,要想再去超越 ImageNet 比赛最好的性能,所需要的计算机的资源是非常的巨大的,这是第一点。第二点,我觉得对于无论是 ImageNet,还是说人脸识别比赛,通过纯粹算法能提升的精度已经非常少了,基本上都是个位数,或者零点几的提升。那么从这个角度来说,我觉得我们需要有更难的,更有挑战性的数据型集。这也是今年 ImageNet 比赛到了它的收官之战的一个主要原因。
在这个 ImageNet 之前,还有一个比赛,叫做 PASCAL VOC,是欧盟组织的一个比赛,进行了 8 年左右。我们参加了 PASCAL VOC 后三届的比赛。PASCAL VOC 比赛在 2012 年也进入收官之战,我们那年参加了比赛,当时拿了两项比赛的第一。PASCAL VOC 比赛当时进入收官之战的一个主要原因,是因为它的图像标签的数目只有 20 个,跟真实的应用场景有一定的差距。ImageNet 竞赛,现在也要进入收官之战一个主要原因,是因为它的分类的数据集每张图像上只有一个主要物体,跟真实的图片的状况有很大的差距。一般拍的照片不只是一个主要的物体,应该是有很多的 label,是多标签的图像理解。那么 ImageNet 之所以没有弄成非常大的,多标签的图像分类的一个主要原因,是因为标注量会有大幅的提升。
GAN 和增强学习是深度学习的两个热点
GAN 和增强学习,是当前深度学习的两个热点。增强学习在 Game 领域非常成功,因为它需要有一个 Reward 机制,这个机制在 Game 里面是直接的,从最终的结果里直接能判断出来,但是视觉里面 Reward 的获取不是特别的自然。但是 GAN 的话,对于计算机视觉领域的发展是有基础性的推动作用,特别是对于这种 pixels to pixels 问题,从输入的图像大小,到输出的结果图片的大小是一样的时候。像分割、风格化、超分辨率这些问题,GAN 是非常好的。另外一方面,最近GAN用的非常成功的一个地方是用GAN去生成一些虚拟图像,这是非常有价值的。我觉得 GAN 还能火几年,还有很多的问题可以做。
计算机视觉技术在 360 的落地
360 最核心的业务是安全。安全一直是整个公司的灵魂和基因,包括 PC 的安全,移动设备上的安全,以及企业的安全。安全产品带来巨大的流量,这个流量就可以直接推动内容和服务的产品,比如 360 导航,360 搜索,360 手机助手,信息流、花椒直播,AR 相机,短视频等等。另外一块,老周从 2012 年开始专注智能硬件,物联网方向。360 专注在三个方面,一个方面是穿戴设备,主要是面对儿童的。如 360 儿童手表,已经第六代了,销量应该是达到了 500 多万台。第二个,家居安全,主要是包括 360 智能摄像头等。第三个是面向出行的安全,主要两款产品,一款产品是 360 的行车记录仪,还有 360 的后视镜。
360 的计算机视觉应用场景,主要是在内容产品和物联网产品。内容上除了支持 360 的图像搜索;还有 360 的短视频,以及花椒直播和相机。用计算机视觉去对图像、视频进行分析、理解,分析出来的内容会作为推荐和搜索的依据。直播和相机则主要是用计算机视觉技术,做美颜、人脸的分析,让拍摄的过程更加好玩,更加有趣。在智能硬件这块的计算机视觉技术,一方面是人脸的技术,另一方面是人体的技术。人脸的技术主要是在监控摄像头和儿童机器人,使它能够识别家人,识别用户。在出行安全领域,后视镜里面有辅助驾驶的功能,对车辆和车道线进行检测,实现前车碰撞报警,车道偏移报警,前车起动报警。
将人工智能跟信息安全相结合
360 很早就把人工智能和信息安全相结合, 行业内第一个具有人工智能技术的杀毒引擎就是 360 的 QVM 引擎,QVM 引擎采用人工智能算法——支持向量机,具备“自学习、自进化”能力,无需频繁升级特征库就能免疫 90% 以上的加壳和变种病毒,从根本上攻克了前两代杀毒引擎“不升级病毒库就杀不了新病毒”的技术难题。现在 360 的安全部门也有一个团队,专门利用深度学习解决很多安全相关的问题。比如说在 2015 年,他们在 Blackhat 大会上曾经有好几篇文章发表了,用深度学习 Data driven 方式去做安全相关的问题。人工智能跟信息安全相结合,肯定是一个趋势。今年 360 会继续去举办互联网安全大会,里面会有一个专门的 keynote speech 讲人工智能和信息安全结合的问题。
计算机视觉未来发展和面临的挑战
对于计算机视觉发展的挑战和前景,团队里的董健回复说,第一个方面,现在很多成功的计算机视觉算法主要是在监督学习领域,需要进行大量的数据标注,但是计算机视觉如果想得到更广泛的应用,还是要考虑更好的利用非监督数据。第二点,现在计算机视觉的算法,在计算资源不受限的环境下,比如有 GPU 集群的情况下,性能是比较有保证的。但我们在很多实际应用中,比如在嵌入式设备中,或者云端部署但用户量非常巨大的情况下,对性能和速度都有非常高的要求。如何将算法进行压缩和加速,也是一个比较大的挑战。当然,这个可能会从软件角度和硬件的角度同时进行推进
而颜水成对小样本问题给了我们进行了解释。计算机视觉里面,会有些小样本问题,小样本的问题怎么去解决呢?小样本会有两种情况,一种是样本少,还有一种情况是没有标注数据,但无标注的样本很多。对于第二种,无监督的数据怎么去使用就会非常有价值,就像董健刚才说的,这块会是研究和应用的一个重点。怎么用有两种,一种是在训练模型之前,可以用这种无监督数据做 pre-training,还有一种跟人是非常像的,人对世界当有了一个初步的认识之后,在跟物理世界接触的过程中,在识别时脑海里已有这种识别的模型,在这个模型部署之后,还需要有一种自我学习和自我更新的能力。这种数据没有提供标注,可以认为是一种无监督的方式。
另外,计算机视觉的落地,跟学术界不一样。学术界可以在资源完全不受限的情况下,去做这种事情,去达到精度的极限。但是在工业界,计算机视觉算法的落地,无论是放在云端,还是本地,如嵌入式设备或者手机的设备,降低计算的复杂度,都是有价值的。比如说,假设如果能把人脸识别的计算复杂度降低一半,只要部署一半的资源就可以完成任务,对于公司来说,收益就会有大幅度的提升。除了去追求算法的精度,降低模型计算的复杂度肯定是要重点思考的方向。
深度学习实践建议
实做深度学习图像处理任务时,在实际的应用场景中,Caffe/Caffe2、Tensorflow、PyTorch/Torch 这些工具具如何选择,有什么好的建议?
董健:这个问题要看具体的应用场景。如果说是学术界,或者是偏研究的应用,优先推荐选择 Tensorflow,或者 PyTorch,因为语言是大家比较常用的 Python,开发会比较简单。而且整个网络架构的设计非常灵活,如果想设计一个新的网络结构,代码的开发量会比较小,开发速度会非常快。如果要在实际工业界使用,要看具体的场景,如果是在云端的一个服务,或者说服务的压力不是非常大的话,那像 Tensorflow/mxnet 也是比较合适的,因为它整体部署起来比较容易,效率各方面也能满足要求。如果在嵌入式平台上开发,因为 Tensorflow 和 PyTorch 相对复杂,速度会更慢一点,而且由于代码量大,导致库的大小也比较大。因此在移动端,像 Caffe/Caffe2 这样比较简单的库更加合适。
对现在各个工具平台的 model zoo,是用 pre-model(预训练模型),还是自我训练模型,有什么建议?
董健:这个问题现在基本上已经达成共识了,就是说如果在这个问题上,你的训练数据已经非常多的话,那你可以直接训练。但是如果你训练数据没有那么多,大家的一个通用做法是,先在一些标准库上,比如 ImageNet,进行预训练,再用预训练模型在具体的问题上进行 fine-tuning。这是一个比较流行也有效的措施。另外,实际使用当中的话,如果你要解决一个实际问题,通常是要根据具体应用设计专门的模型。这个时候,你可能也没有办法直接用网上预训练的模型,但是一般也会进行预训练的操作。
实际生产环境,训练样本偏少,要提高识别准确率,应该在哪些放面多做工作,人工收集样本数据还是通过算法模型标注样本数据?有什么好的建议。
董健:这个也是现在学术界努力解决的一个问题,我们实际在工业使用当中,一个纯 unsupervised 的问题还是比较难解决的,我们更多的是通过算法加速数据标注。具体来说,有点类似于 Active Learning 的思想,先用算法对数据进行一个标注,之后再用人工进行筛查反馈,对数据进行一个修正,目前可能说想完全通过非监督学习来提高精度,难度还是比较大的。
-全文完-
关注人工智能的落地实践,与企业一起探寻 AI 的边界,AICon 全球人工智能技术大会火热售票中,6 折倒计时一周抢票,详情点击:
https://aicon.geekbang.org/apply?utm_source=wechat&utm_medium=ai-front
《深入浅出TensorFlow》迷你书现已发布,关注公众号“AI前线”,ID:ai-front,回复关键字:TF,获取下载链接!