MINIEYE首席科学家吴建鑫解读自动驾驶的视觉感知
「车载硬件处于典型的资源受限环境之下,如何将深度学习应用于这样的受限环境是有效落地智能硬件的方式之一。」MINIEYE 首席科学家、南京大学计算机科学与技术系教授吴建鑫告诉机器之心。吴建鑫是计算机视觉领域的专家,入选中组部青年海外高层次人才引进计划(青年千人计划)。在重要国际期刊如 TPAMI,IJCV,AIJ,JMLR 等以及重要国际会议如 ICCV、CVPR、ICML 等发表论文六十余篇,并多次担任 ICCV、CVPR、AAAI 等重要国际会议领域主席。
2013 年,MINIEYE 在南京创立,目前所研发的车载视觉感知技术和产品运用视觉算法,通过单目摄像头实现路面物体的识别、检测以及追踪。在车辆检测率、车道偏离检测率上已达 99%。3 月 3 日,机器之心专访了 MINIEYE 首席科学家吴建鑫,他讲解了计算机视觉算法在辅助驾驶中的实现路径,并分享了对目前深度学习研究趋势的看法。
机器之心: 您 AAAI2016 所接收论文是关于图像和视频特征表达的,这是您最近的主要研究方向吗?
吴建鑫:AAAI 那篇论文的研究内容确实是关于图像表征跟特征学习的。可以看到目前领域内大多数的研究人员要么是在研究深度学习,要么是在运用深度学习的研究成果。其实深度学习也被称为表征学习,对于很多研究人员,包括我自己,确实有很大一部分的研究重点是在表征学习(representation learning)上面。但是表征学习是一个广阔的概念,包括非常多的研究内容。在有关表征学习的研究内容里,我的研究重点包含两个内容,一个是资源受限的图像分类及其应用,另一个是细粒度图像分析。
深度学习模型的运行对硬件资源依赖程度比较高,在类似汽车、手机或者其他移动平台上运行深度学习模型,硬件资源大为受限,如何在资源受限的情况下去实现深度学习是很有实用价值的。
从学术界的角度来看,细粒度图像的研究并不是最热门的方向。我对这个方向感兴趣是有两方面原因的,第一方面的原因是,细粒度图像分析的原理我们现在还不是很清楚,这是一个基础性的研究问题。我们可以训练一个深度学习的模型,去实现细粒度图像的分类,分类的效果非常好,但是很难有一个解释来论证为什么能得到这么好的结果。在过去,用深度学习去实现通用图像分类,对深度模型各层特征的可视化,可以知道它为什么有这么好的分类结果,是因为它学到很好的表示,比如一个五层卷积层的网络结构,在第五层会有学习到高级语义概念。往回到第四层、第三层就可以看到是学到图像当中不同抽象层次的信息,是一个很好的可以用来解释的结果。但是对于细粒度图像分类,没有一个类似的结果。
另一方面我对细粒度图像分析非常感兴趣的原因是,细粒度图像分析有很多跟日常生活、经济、安全等等各个方面都相关的应用。但是现在,这方面的应用还是很有限。所以,想把我们在学校里的研究成果转化为社会的直观价值,这是一个很好的研究方向。CVPR2016 的论文里,有一篇很有意思的论文 [1],是运用监控摄像头实现车的细粒度分类。大概是 70% 左右的分辨率能够判断出驶过的车是哪个车厂出产、哪一年产的、哪个款式、哪种颜色,而且是实时检测。但是这样准确度的研究还不能实用,需要针对具体有实际应用的领域去提高它细粒度分类的准确度。
[1] J. Socher, A. Herout and J. Haval. BoxCars: 3D Boxes as CNN Input for Improved Fine-Grained Vehicle Recognition, CVPR 2016, pp. 3006-3015.
机器之心: 这篇论文的作者之一是 MINIEYE 的 CEO 刘国清,你们是在什么情况下决定一起创业?
吴建鑫:我其实是 MINIEYE 的联合创始人之一,在回母校南京大学之前,在新加坡南洋理工大学工作。国清是我在新加坡任助理教授时毕业的第一个博士生,他是很有创业冲动的,我也非常希望自己研究的算法能够有应用。但是创业是一件很艰难的事情,至少是需要投入很多精力的事情,而我同时对研究本身这件事情非常感兴趣,这也是为什么我要呆在学校里面,不愿意把研究完全扔开。
国清当时有创业的冲动,我们调研了很多方向后,选择了辅助驾驶。因为我觉得 MINIEYE 现在所做的事情,首先从技术角度来考量,是完全可行的,需要我们投入资金以及技术上的研发去做这样的事情,是可以做出来的。第二个是市场是已经准备好了,能够把我们做的研究实际用起来。
机器之心: MINIEYE 产品的感知功能是如何实现的?
吴建鑫:MINIEYE 产品的感知功能是经典计算机视觉算法和深度学习算法的混合架构。我们通过单目摄像头来获取图像。最早设计出软件,现在公司的产品是硬件,一个小盒子,实际上是把软件移植过来。我们对每一帧图像去做计算机视觉的任务,车辆检测、行人检测、车道检测。检测之后计算检测到的车辆与行驶车辆之间的距离,当两者距离过小时进行报警。车道检测的过程中,发觉旁边车道的车进入当前行驶车辆的车道,通过速度、距离的分析,有产生危险的可能时也会提出警报。目前产品已经推出和正在研发中的功能包括包括前向碰撞预警、车道偏离预警、盲点监测预警、行人碰撞预警以及前车启动提醒。
这一代产品的驾驶辅助功能是多模块共同实现的,车辆检测有一个模块,深度估计有一个模块,车道检测有一个模块。目前这代产品大部分的模块所用的算法是经典的计算机视觉的算法,也即在深度学习用于计算机视觉问题研究之前所使用的算法。大部分的模块使用经典的检测、识别和深度估计的方法,只有一小部分对精确度要求非常高的地方用的是深度学习的方法。算法方面在准确率上是非常高的,在产品发布会上公布了跟 Mobileye 同样功能的对标结果 [注释]。另外就是实时的问题,车载硬件在一个小盒子完成这些功能,是一个典型的资源受限的环境。它不能跟计算性能好的硬件设备相比,哪怕是跟笔记本比也是相差很远的。这些模块里有很多优化的工程性的工作,把 CPU、GPU 的占用率以及各种内存的占用率降低下来。
[注释] MINIEYE 产品与 Mobileye 相比,前向碰撞预警的报警率达到了 Mobileye 的 95.2%;车道偏离预警的报警率达到 Mobileye 的 100.9%; 虚拟保险杠的报警率达到 Mobileye 的 97.1%;前向车距监测的绝对碰撞时间与 Mobileye 的吻合度达到 96%。Mobileye 为高级辅助驾驶系统(ADAS)产品研发的全球领先企业,旗下产品占据全球市场 75% 的份额。
机器之心:相比于摄像头,车之间的距离用雷达或者激光雷达来计算是不是更精确一些?
吴建鑫:我们现在的系统采用单目摄像头,它依据视觉检测的结果来进行距离估算。对所获取的图像内容,相机有内部的标定,标定完之后检测到前面的车就可以估算它的距离。但是,如果有不同的雷达,在完成检测之后,把两个模态的数据结合起来,将能从雷达方面获得更准确的距离信息。现在的情况是,如果检测能有比较高的准确率,通过计算机视觉检测所获得的距离还是比较准确的。我们现在的产品是没有自动驾驶那一部分功能的,还是辅助驾驶系统 ADAS,如果加上雷达的话,成本就会提高很多。但是如果逐渐向更高级别的无人驾驶过渡,是必须要有雷达的。
机器之心:驾驶场景有自然环境因素的影响,在特征提取、识别的时候,会有哪些比较难处理的地方?
吴建鑫:无论是室内环境的理解还是室外环境的理解,运用深度学习来处理,主要的问题并不是哪种环境下的处理比较难,关键是数据,高质量的数据。场景理解无论从研究的角度还是自动驾驶这个特定的应用角度来说,难处理的并不是普通常见场景,而是极端情况(corner case)下的处理。例如国内的驾驶环境和国外的驾驶环境有些不太一样,我在玄武大道上驾车,会有人从中间花坛上跳下来然后穿过马路,像这种极端情况才是导致问题的所在。
室内场景以及室外场景,极端情况都是比较难以处理的,现在有了不同的思路,如果大家都在研究极端场景的处理,那么可以数据共享。Corner case 可能是几十万公里才出现一次,但如果所有研究自动驾驶的公司以及政府都参与并分享各自的数据,那么就有可能解决这个问题。这当然是一个很好的解决方法,但我认为 corner case 想要完全避免是不太可能的。因为即使你有 corner case 的数据,你还得有一个额外的模型(extra model)来处理它,因为通用的处理模型是针对普通场景的。
2016 年一名特斯拉 Model S 车主在开启 Autopilot 自动驾驶时发生事故导致死亡,原因是雷达的模块跟视觉的模块都把前面的障碍物认错了,把白颜色的卡车认错了。我不知道特斯拉的无人驾驶系统里的具体参数是多少,但是如果把系统的敏感性提高一点,那么可能就有刹车减速的一个过程,这样就可以很大程度的避免严重事故的发生。另外一个解决 corner case 的方式,是通过强 AI 来主动解决。这种解决方式需要的时间更长。因为目前的深度学习对场景的理解还是完全基于数据的,以前出现并存在的场景,通过好的学习模型能够很好的处理,但是完全没有出现过的情况就难以处理。在这种情况下,需要系统有推理能力,怎么让系统具备这种能力甚至具备人类的常识,这些都是目前还没有解决的问题。基于学习的系统(learning based system)总是有错误率存在的,错误率大部分是来自 corner case,有些 corner case 是可以通过逻辑性的推断知道这是一个非普通情况,需要做特殊的处理。自动驾驶的实现除了用基于学习的方法来做外,还应当有类似知识一样的逻辑推理能力。
机器之心:能介绍 MINIEYE 下一代产品的规划吗?
吴建鑫:目前的产品是实现辅助驾驶功能,辅助驾驶功能有很多种,我们已经实现了最常用的 5 个功能。正在实现的功能是紧急情况下的自动刹车(AEB),这些都是自动驾驶前几层的事情 [注释]。下一步的研究是如何更多的运用深度学习来实现更好的效果。第一代产品是经典的视觉技术加上部分的深度学习。深度学习有一个好处就是,它是多任务同时进行的,不需要由各个模块搭起来。但是其中很重要的是如何在车载这样的资源受限环境下去应用。现在对完全自动驾驶的研究没有投入很多,因为我们还只是一个小的初创公司,没有那么多的资源。我们会沿着一个逐渐递进的方式去进行产品扩展。
[注释] 美国高速公路安全管理局(NHTSA)将自动驾驶分为 5 个层级,L0 为无自动驾驶辅助功能层级,即没有任何自动驾驶辅助功能或仅具备预警功能,如前向碰撞预警 (FCW)、车道偏离预警 (LDW) 等;L1 层具有部分自动驾驶辅助功能,如自适应巡航控制(ACC)、自动紧急制动(AEB)等,但这些功能彼此独立;L2 为组合自动驾驶辅助,有多个功能同时实现自动化,实现特定场景的自动驾驶,如自动泊车、高速公路上的自动驾驶等;L3 为高度自动驾驶,在特定交通情形下所有涉及关键安全控制的操作交由自动驾驶系统决定;L4 为完全自动驾驶,无需人类驾驶员介入。
机器之心: MINIEYE 的产品正在进行密集的道路测试,道路测试数据如何提升辅助驾驶系统的环境感知能力?
吴建鑫:比数据量更重要的是数据的多样性。目前我们有 45 辆车在全国各地采集数据和进行路测。所采集数据中的 70% 会加入训练数据库中,剩下的 30% 加入测试数据库。通过这样大规模的测试,我们的算法可以涵盖尽可能多的城市、工况和全国各地的特殊场景。
一旦发现对某些特殊工况出现性能不够好的情况,我们会针对这个工况额外作针对性数据采集。例如我们在云南路测时发现当地有一些老式载重卡车发热量非常大,要不停地往车身浇水来散热,造成车辆笼罩在白雾里面。当时实测检测效果不好,我们就在当地作了针对性的采集和测试。
机器之心:很多科技巨头公司没有通过辅助驾驶逐层递进至无人驾驶,而是直接进入无人驾驶研究,您对无人驾驶怎么看?
吴建鑫:从技术实现上考察,完全的自动驾驶是可以实现的,但现在的问题是整个社会没有准备好。很多技术上的困难,比如说红绿灯识别,其实是可以有另一种解决方式的。假设 20 年之后整个中国的红绿灯都是智能的,能够进行信号沟通,把现在路口是红灯还是绿灯的情况直接和车进行交流,那么就可以减轻高精度地图的负担,在车载辅助系统里就不需要有特别高精度的红绿灯识别系统。
美国国防高级研究计划局(DARPA)在 2004 年开始全自动驾驶挑战赛,最初两届是沙漠里的越野挑战(Grand Challenge),2007 年之后进行的是城市环境的挑战赛(Urban Challenge)。很快无人驾驶挑战赛就没有举办了,不是说无人驾驶不重要没有研究意义,而是从技术原型角度来看,现在的结果已经可以证明这件事情是可行的。还没有准备好的是整个社会的立法、道路基础设施架构等方面的内容。技术上是可行的,社会的成本及这辆车的成本是阻碍完全无人驾驶的两个因素。此外,不同厂商所生产的汽车的安全策略也需要有一个通用标准,以及无人驾驶中将面临的伦理问题,所以我认为整个社会对完全自动驾驶这件事情是没有准备好的。我们公司往无人驾驶方面发展,会从特殊领域的无人驾驶开始,比如卡车的自动驾驶。特殊领域无人驾驶,是在有环境限制的情况下,行驶环境比较理想,并不需要处理太多的 corner case。
机器之心:深度学习最先在计算机视觉的相关研究中爆发出来,作为计算机视觉领域的专家,您认为其中的原因有哪些?
吴建鑫:对于研究计算机视觉的人来说,大家都希望研究的算法能够实用,所以深度学习爆发出来的最大原因就是深度学习的效果非常好,第一次在 ImageNet 竞赛(ILSVRC2012)中的结果远远超出研究了几十年的传统计算机视觉算法,这也是为什么大家都愿意接受深度学习,都愿意去研究深度学习的原因。
深度学习为什么能够有学术界、工业界甚至社会效应,我认为有三个重要的因素,第一个是大规模数据集 ImageNet 的出现。DARPA 在 2010 年首次资助深度学习项目的研究,深度学习的重要人物 Hinton,Bengio 都参与其中,研究了很多算法,但是他们的研究是基于 MNIST 数据集的。MNIST 数据集在不需要 GPU 的情况下可以在几分钟之内训练完,只有 6 万张图像。有这样的一个工作,只用 100 张有标签的训练图像(其他 59900 张图像没有标记),在 MNIST 分类上能够做到 99.7% 的准确率。这个数据集的分类太容易了,对于研究计算机视觉的人来说,可能不愿意去接受它。但是在 ImageNet 上有非常好的分类效果,当时 ImageNet 是最大的数据集,深度学习能够去学习一个在一定程度上接近真实数据的模型,并且还能得到最好的分类效果,这让所有人都开始接受深度学习。
第二个原因是硬件资源的匹配——GPU 加速计算。Yann LeCun 在接受 CVPR 授予的 significant researcher 时提到「他多伦多的朋友特别善于实现」,其实指的是 GPU 加速深度学习的训练过程,在有 GPU 的情况下,他们当时需要的训练时间是 1 个星期,没有 GPU 的情况下可能是 10 个星期。10 个星期的情况下,完全没有办法去做进一步的调试,你只能指望系统一次性把所有参数都设置对,但这是不可能的,所以用 GPU 处理大规模数据为深度学习的实现提供保证。
第三个原因是技术上的提升,在技术维度上是很重要的进展,但从实际角度来看或许并不是最重要的。可以举出很多进步出现的节点,看上去非常简单的想法却能起到非常好的效果,修正线性单元 ReLU,把 sigmoid 函数换成 ReLU 函数,系统的训练难度马上下降了 90%,之后深度学习模型里引入 Dropout,BN(Batch Normalization),再之后是何凯明、孙剑等人的 ResNet,这些都是技术上的重大进步。
这三个原因中,我个人的排序是数据上的进步是最重要的,计算资源的大幅提升以及技术的进步,这两者的重要程度是并列的。以 ImageNet 的分类为例,从 AlexNet 之后到 ResNet,它的进步很大,但并不是突破性的。
机器之心:大数据是深度学习爆发的原因之一,现在也有很多研究人员在研究小数据的深度学习,这个方面的研究情况是怎样的?
吴建鑫:我觉得应该分两个角度来讨论小数据的深度学习,一个是研究的角度,另一个是业界的角度。在研究上,无监督学习,Yann LeCun 特别的推崇,觉得这是深度学习目前必须要解决的问题,但是这个问题,目前来看,要解决它是很困难的,而且我觉得从非纯理论的角度来说,半监督的学习可能更重要一些,也更容易成功。所以在深度学习的研究上,如果有标记的数据不是很充足,我在研究如何通过半监督学习来实现比较好的效果。从理论和实用并重的角度来说,半监督的学习在我看来是最可行的方向。
从业界的角度来看,特别是对于安全性特别重要的应用,比如说自动驾驶,我觉得应该是需要投入足够多的资源去形成足够多的有标记的数据。半监督以及无监督学习的理论现在还没有特别大的成功,在这个还没有成功之前,我们还是需要投入很多代价去构建有监督的数据。数据资源其实并不是那么少,少的是有标记的数据资源,比如说,我开一辆车,放置一个摄像头,我可以得到无数的数据,一秒钟 30 帧,一个小时是 3600 秒,一辆车一天开 5 个小时,那就能有很多帧了,这么多帧里,去人工标记每一帧里面所有的行人、车辆、车道,标记一帧可能需要 30 分钟,而且还要保证准确,所以真正缺乏的不是数据而是有标记的数据。
对图像表征学习、资源受限的图像分析以及细粒度图像分析感兴趣的读者可以参阅以下论文:
1.Representing Sets of Instances for Visual Recognition,Jianxin Wu, Bin-Bin Gao, Guoqing Liu. In: Proc. the 30th AAAI Conference on Artificial Intelligence (AAAI 2016), Phoenix, Arizona, USA, Feb 2016, pp. 2237-2243.
2.Image Categorization with Resource Constraints: Introduction, Challenges and Advances, Jian-Hao Luo, Wang Zhou, Jianxin Wu. Frontiers of Computer Science, 11(1), 2017: pp. 13-26.
3.Selective Convolutional Descriptor Aggregation for Fine-Grained Image Retrieval, Xiu-Shen Wei, Jian-Hao Luo, Jianxin Wu, Zhi-Hua Zhou.
编辑: 彭志强